Mercurial > emacs
diff src/w32fns.c @ 89945:59dcbfe97385
Revision: miles@gnu.org--gnu-2004/emacs--unicode--0--patch-17
Merge from emacs--cvs-trunk--0
Patches applied:
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-417
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-419
Update from CVS
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-420
Tweak permissions
* miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-421
- miles@gnu.org--gnu-2004/emacs--cvs-trunk--0--patch-430
Update from CVS
author | Miles Bader <miles@gnu.org> |
---|---|
date | Tue, 29 Jun 2004 16:46:06 +0000 |
parents | 4c90ffeb71c5 1b78563a75d6 |
children | 97905c4f1a42 |
line wrap: on
line diff
--- a/src/w32fns.c Tue Jun 29 15:25:11 2004 +0000 +++ b/src/w32fns.c Tue Jun 29 16:46:06 2004 +0000 @@ -7749,7 +7749,8 @@ { OFNOTIFY * notify = (OFNOTIFY *)lParam; /* Detect when the Filter dropdown is changed. */ - if (notify->hdr.code == CDN_TYPECHANGE) + if (notify->hdr.code == CDN_TYPECHANGE + || notify->hdr.code == CDN_INITDONE) { HWND dialog = GetParent (hwnd); HWND edit_control = GetDlgItem (dialog, FILE_NAME_TEXT_FIELD); @@ -7763,8 +7764,10 @@ } else { - CommDlg_OpenSave_SetControlText (dialog, FILE_NAME_TEXT_FIELD, - ""); + /* Don't override default filename on init done. */ + if (notify->hdr.code == CDN_TYPECHANGE) + CommDlg_OpenSave_SetControlText (dialog, + FILE_NAME_TEXT_FIELD, ""); EnableWindow (edit_control, TRUE); } } @@ -7786,6 +7789,7 @@ struct gcpro gcpro1, gcpro2, gcpro3, gcpro4, gcpro5; char filename[MAX_PATH + 1]; char init_dir[MAX_PATH + 1]; + int default_filter_index = 1; /* 1: All Files, 2: Directories only */ GCPRO5 (prompt, dir, default_filename, mustmatch, file); CHECK_STRING (prompt); @@ -7809,9 +7813,7 @@ if (!file_name_only) file_name_only = full_path_name; else - { - file_name_only++; - } + file_name_only++; strncpy (filename, file_name_only, MAX_PATH); filename[MAX_PATH] = '\0'; @@ -7836,6 +7838,15 @@ file_details.nMaxFile = sizeof (filename); file_details.lpstrInitialDir = init_dir; file_details.lpstrTitle = SDATA (prompt); + + /* If prompt starts with Dired, default to directories only. */ + /* A bit hacky, but there doesn't seem to be a better way to + DTRT for dired. */ + if (strncmp (file_details.lpstrTitle, "Dired", 5) == 0) + default_filter_index = 2; + + file_details.nFilterIndex = default_filter_index; + file_details.Flags = (OFN_HIDEREADONLY | OFN_NOCHANGEDIR | OFN_EXPLORER | OFN_ENABLEHOOK); if (!NILP (mustmatch)) @@ -7848,7 +7859,7 @@ dostounix_filename (filename); if (file_details.nFilterIndex == 2) { - /* "Folder Only" selected - strip dummy file name. */ + /* "Directories" selected - strip dummy file name. */ char * last = strrchr (filename, '/'); *last = '\0'; }