[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-29 b464e6c490: Make last change of w32 GUI dialogs conditional and
From: |
Eli Zaretskii |
Subject: |
emacs-29 b464e6c490: Make last change of w32 GUI dialogs conditional and reversible |
Date: |
Wed, 28 Dec 2022 08:11:33 -0500 (EST) |
branch: emacs-29
commit b464e6c490be72e29619c5e101902ab3c3a2e474
Author: Eli Zaretskii <eliz@gnu.org>
Commit: Eli Zaretskii <eliz@gnu.org>
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.
---
etc/NEWS | 9 +++++++++
src/w32menu.c | 5 ++++-
src/w32term.c | 11 +++++++++--
3 files changed, 22 insertions(+), 3 deletions(-)
diff --git a/etc/NEWS b/etc/NEWS
index c64db9973d..3060bba5e9 100644
--- a/etc/NEWS
+++ b/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
---
diff --git a/src/w32menu.c b/src/w32menu.c
index c6d1efaf25..5f06f4c417 100644
--- a/src/w32menu.c
+++ b/src/w32menu.c
@@ -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
diff --git a/src/w32term.c b/src/w32term.c
index dff21489e5..e40e4588fd 100644
--- a/src/w32term.c
+++ b/src/w32term.c
@@ -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. */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- emacs-29 b464e6c490: Make last change of w32 GUI dialogs conditional and reversible,
Eli Zaretskii <=