mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-30 08:09:04 +00:00
Fix bug#8181.
* src/w32fns.c (FILE_NAME_COMBO_BOX, FILE_NAME_LIST): Define. (file_dialog_callback): Fix locating the window handle of the File Name text field. After disabling it, set focus on the list control. (Fx_file_dialog): If only_dir_p is non-nil, set the text of the File Name text field to "Current Directory" if it does not already have another value.
This commit is contained in:
parent
7600cf4599
commit
7faeca66c7
@ -1,3 +1,12 @@
|
||||
2011-03-07 Ben Key <bkey76@gmail.com>
|
||||
|
||||
* w32fns.c (FILE_NAME_COMBO_BOX, FILE_NAME_LIST): Define.
|
||||
(file_dialog_callback): Fix locating the window handle of the File Name
|
||||
text field. After disabling it, set focus on the list control.
|
||||
(Fx_file_dialog): If only_dir_p is non-nil, set the text of the File
|
||||
Name text field to "Current Directory" if it does not already have
|
||||
another value. (Bug#8181)
|
||||
|
||||
2011-03-07 Adrian Robert <Adrian.B.Robert@gmail.com>
|
||||
|
||||
* nsterm.m (ns_draw_window_cursor): Fix handling of "cursor_width"
|
||||
|
35
src/w32fns.c
35
src/w32fns.c
@ -60,6 +60,8 @@ along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>. */
|
||||
#include <dlgs.h>
|
||||
#include <imm.h>
|
||||
#define FILE_NAME_TEXT_FIELD edt1
|
||||
#define FILE_NAME_COMBO_BOX cmb13
|
||||
#define FILE_NAME_LIST lst1
|
||||
|
||||
#include "font.h"
|
||||
#include "w32font.h"
|
||||
@ -5868,13 +5870,37 @@ file_dialog_callback (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
HWND dialog = GetParent (hwnd);
|
||||
HWND edit_control = GetDlgItem (dialog, FILE_NAME_TEXT_FIELD);
|
||||
HWND list = GetDlgItem (dialog, FILE_NAME_LIST);
|
||||
|
||||
/* Directories is in index 2. */
|
||||
/* At least on Windows 7, the above attempt to get the window handle
|
||||
to the File Name Text Field fails. The following code does the
|
||||
job though. Note that this code is based on my examination of the
|
||||
window hierarchy using Microsoft Spy++. bk */
|
||||
if (edit_control == NULL)
|
||||
{
|
||||
HWND tmp = GetDlgItem (dialog, FILE_NAME_COMBO_BOX);
|
||||
if (tmp)
|
||||
{
|
||||
tmp = GetWindow (tmp, GW_CHILD);
|
||||
if (tmp)
|
||||
edit_control = GetWindow (tmp, GW_CHILD);
|
||||
}
|
||||
}
|
||||
|
||||
/* Directories is in index 2. */
|
||||
if (notify->lpOFN->nFilterIndex == 2)
|
||||
{
|
||||
CommDlg_OpenSave_SetControlText (dialog, FILE_NAME_TEXT_FIELD,
|
||||
"Current Directory");
|
||||
EnableWindow (edit_control, FALSE);
|
||||
/* Note that at least on Windows 7, the above call to EnableWindow
|
||||
disables the window that would ordinarily have focus. If we
|
||||
do not set focus to some other window here, focus will land in
|
||||
no man's land and the user will be unable to tab through the
|
||||
dialog box (pressing tab will only result in a beep).
|
||||
Avoid that problem by setting focus to the list here. */
|
||||
if (CDN_INITDONE == notify->hdr.code)
|
||||
SetFocus (list);
|
||||
}
|
||||
else
|
||||
{
|
||||
@ -5951,6 +5977,13 @@ Otherwise, if ONLY-DIR-P is non-nil, the user can only select directories. */)
|
||||
else
|
||||
filename[0] = '\0';
|
||||
|
||||
/* The code in file_dialog_callback that attempts to set the text
|
||||
of the file name edit window when handling the CDN_INITDONE
|
||||
WM_NOTIFY message does not work. Setting filename to "Current
|
||||
Directory" in the only_dir_p case here does work however. */
|
||||
if (filename[0] == 0 && ! NILP (only_dir_p))
|
||||
strcpy (filename, "Current Directory");
|
||||
|
||||
{
|
||||
NEWOPENFILENAME new_file_details;
|
||||
BOOL file_opened = FALSE;
|
||||
|
Loading…
Reference in New Issue
Block a user