diff options
Diffstat (limited to 'win')
-rw-r--r-- | win/tkWinDialog.c | 21 | ||||
-rw-r--r-- | win/tkWinPort.h | 13 |
2 files changed, 11 insertions, 23 deletions
diff --git a/win/tkWinDialog.c b/win/tkWinDialog.c index 55152e9..5d9d82f 100644 --- a/win/tkWinDialog.c +++ b/win/tkWinDialog.c @@ -603,21 +603,16 @@ GetFileNameW( ThreadSpecificData *tsdPtr = (ThreadSpecificData *) Tcl_GetThreadData(&dataKey, sizeof(ThreadSpecificData)); static CONST char *saveOptionStrings[] = { - "-defaultextension", "-filetypes", "-initialdir", "-initialfile", - "-parent", "-title", "-typevariable", - "-confirmoverwrite", - NULL + "-confirmoverwrite", "-defaultextension", "-filetypes", "-initialdir", + "-initialfile", "-parent", "-title", "-typevariable", NULL }; static CONST char *openOptionStrings[] = { "-defaultextension", "-filetypes", "-initialdir", "-initialfile", - "-parent", "-title", "-typevariable", - "-multiple", - NULL + "-multiple", "-parent", "-title", "-typevariable", NULL }; enum options { - FILE_DEFAULT, FILE_TYPES, FILE_INITDIR, FILE_INITFILE, - FILE_PARENT, FILE_TITLE, FILE_TYPEVARIABLE, - FILE_MULTIPLE_OR_CONFIRMOW + FILE_MULTIPLE_OR_CONFIRMOW, FILE_DEFAULT, FILE_TYPES, FILE_INITDIR, + FILE_INITFILE, FILE_PARENT, FILE_TITLE, FILE_TYPEVARIABLE }; file[0] = '\0'; @@ -638,6 +633,12 @@ GetFileNameW( "option", 0, &index) != TCL_OK) { goto end; } + /* Compensate for the "openOptionStrings" having different ordering [Bug #3540127] */ + if (open && (index < FILE_PARENT)) { + if (++index > FILE_INITFILE) { + index = FILE_MULTIPLE_OR_CONFIRMOW; + } + } if (i + 1 == objc) { string = Tcl_GetString(optionPtr); diff --git a/win/tkWinPort.h b/win/tkWinPort.h index 83b67c6..14f949c 100644 --- a/win/tkWinPort.h +++ b/win/tkWinPort.h @@ -97,19 +97,6 @@ #define TkFreeWindowId(dispPtr,w) #define TkInitXId(dispPtr) -#define XFlush(display) -#define XGrabServer(display) -#define XUngrabServer(display) - -/* - * The following functions are implemented as macros under Windows. - */ - -#define XFree(data) {if ((data) != NULL) ckfree((char *) (data));} -#define XNoOp(display) {display->request++;} -#define XSynchronize(display, bool) {display->request++;} -#define XSync(display, bool) {display->request++;} -#define XVisualIDFromVisual(visual) (visual->visualid) /* * The following Tk functions are implemented as macros under Windows. |