Make last change of w32 GUI dialogs conditional and reversible
* src/w32term.c (syms_of_w32term) <w32-yes-no-dialog-show-cancel>: New boolean variable. (w32_initialize): Fix query for visible system caret: 'bool' is a single-byte data type, whereas SystemParametersInfo wants a BOOL, which is a 32-bit int. * src/w32menu.c (simple_dialog_show): Show "Cancel" button only if 'w32-yes-no-dialog-show-cancel' is non-nil. * etc/NEWS: Announce the change.
This commit is contained in:
parent
eedc9d79ae
commit
b464e6c490
3 changed files with 22 additions and 3 deletions
9
etc/NEWS
9
etc/NEWS
|
@ -4701,6 +4701,15 @@ where those APIs are available.
|
|||
When 'w32-use-native-image-API' is non-nil, Emacs on MS-Windows now
|
||||
has built-in support for displaying BMP images.
|
||||
|
||||
---
|
||||
*** GUI Yes/No dialogs now include a "Cancel" button.
|
||||
The "Cancel" button is in addition to "Yes" and "No", and is intended
|
||||
to allow users to quit the dialog, as an equivalent of C-g when Emacs
|
||||
asks a yes/no question via the echo area. This is controlled by the
|
||||
new variable 'w32-yes-no-dialog-show-cancel', by default t. Set it to
|
||||
nil to get back the old behavior of showing a modal dialog with only
|
||||
two buttons: "Yes" and "No".
|
||||
|
||||
** Cygwin
|
||||
|
||||
---
|
||||
|
|
|
@ -1091,7 +1091,10 @@ simple_dialog_show (struct frame *f, Lisp_Object contents, Lisp_Object header)
|
|||
/* We use MB_YESNOCANCEL to allow the user the equivalent of C-g
|
||||
when the Yes/No question is asked vya y-or-n-p or
|
||||
yes-or-no-p. */
|
||||
type = MB_YESNOCANCEL;
|
||||
if (w32_yes_no_dialog_show_cancel)
|
||||
type = MB_YESNOCANCEL;
|
||||
else
|
||||
type = MB_YESNO;
|
||||
|
||||
/* Since we only handle Yes/No dialogs, and we already checked
|
||||
is_simple_dialog, we don't need to worry about checking contents
|
||||
|
|
|
@ -7696,6 +7696,7 @@ static void
|
|||
w32_initialize (void)
|
||||
{
|
||||
HANDLE shell;
|
||||
BOOL caret;
|
||||
HRESULT (WINAPI * set_user_model) (const wchar_t * id);
|
||||
|
||||
baud_rate = 19200;
|
||||
|
@ -7732,8 +7733,9 @@ w32_initialize (void)
|
|||
|
||||
/* Initialize w32_use_visible_system_caret based on whether a screen
|
||||
reader is in use. */
|
||||
if (!SystemParametersInfo (SPI_GETSCREENREADER, 0,
|
||||
&w32_use_visible_system_caret, 0))
|
||||
if (SystemParametersInfo (SPI_GETSCREENREADER, 0, &caret, 0))
|
||||
w32_use_visible_system_caret = caret == TRUE;
|
||||
else
|
||||
w32_use_visible_system_caret = 0;
|
||||
|
||||
any_help_event_p = 0;
|
||||
|
@ -7923,6 +7925,11 @@ unconditionally set to nil on older systems. */);
|
|||
w32_use_native_image_api = 0;
|
||||
#endif
|
||||
|
||||
DEFVAR_BOOL ("w32-yes-no-dialog-show-cancel",
|
||||
w32_yes_no_dialog_show_cancel,
|
||||
doc: /* If non-nil, show Cancel button in MS-Windows GUI Yes/No dialogs. */);
|
||||
w32_yes_no_dialog_show_cancel = 1;
|
||||
|
||||
/* FIXME: The following variable will be (hopefully) removed
|
||||
before Emacs 25.1 gets released. */
|
||||
|
||||
|
|
Loading…
Add table
Reference in a new issue