* bug#11732: 24.1; Microsoft IME Japanese input problem @ 2012-06-18 5:20 xavier.dahan 2015-02-17 10:26 ` Fujii Hironori 2018-06-26 9:10 ` bug#11732: Follow-up to bug#11732 Masayuki Hatta 0 siblings, 2 replies; 43+ messages in thread From: xavier.dahan @ 2012-06-18 5:20 UTC (permalink / raw) To: 11732 Problem to use the native Microsoft IME Japanese input tool to write in Japanese within Emacs. Japanese keyboard. Windows 7, fully in Japanese (locale, language). Switching to Japanese IME input in Emacs makes the user "blind". Can not see what we are typing (like when typing a password) until is pressed: - either 2 times "space". Then the small IME window displaying the kanji choices corresponding to what has been typeset (blind) appears on the bottom-right of the screen. - either "enter". Then the hiragana that have been typeset (blind) are printed in Emacs. That's all. Best regards, Xavier. -------------------------------------------------------------------------- In GNU Emacs 24.1.1 (i386-mingw-nt6.1.7601) of 2012-06-10 on MARVIN Windowing system distributor `Microsoft Corp.', version 6.1.7601 Configured using: `configure --with-gcc (4.6) --cflags -ID:/devel/emacs/libs/libXpm-3.5.8/include -ID:/devel/emacs/libs/libXpm-3.5.8/src -ID:/devel/emacs/libs/libpng-dev_1.4.3-1/include -ID:/devel/emacs/libs/zlib-dev_1.2.5-2/include -ID:/devel/emacs/libs/giflib-4.1.4-1/include -ID:/devel/emacs/libs/jpeg-6b-4/include -ID:/devel/emacs/libs/tiff-3.8.2-1/include -ID:/devel/emacs/libs/gnutls-3.0.9/include' Important settings: value of $LC_ALL: nil value of $LC_COLLATE: nil value of $LC_CTYPE: nil value of $LC_MESSAGES: nil value of $LC_MONETARY: nil value of $LC_NUMERIC: nil value of $LC_TIME: nil value of $LANG: JPN value of $XMODIFIERS: nil locale-coding-system: cp932 default enable-multibyte-characters: t Major mode: Lisp Interaction Minor modes in effect: tooltip-mode: t mouse-wheel-mode: t tool-bar-mode: t menu-bar-mode: t file-name-shadow-mode: t global-font-lock-mode: t font-lock-mode: t blink-cursor-mode: t auto-composition-mode: t auto-encryption-mode: t auto-compression-mode: t line-number-mode: t transient-mark-mode: t Recent input: <language-change> C-c C-c M-x b u <tab> g - r e <tab> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> <backspace> r e p o r t - e m a <tab> <return> Recent messages: For information about GNU Emacs and the GNU system, type C-h C-a. Making completion list... Load-path shadows: None found. Features: (shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev gmm-utils mailheader sendmail regexp-opt rfc2047 rfc2045 ietf-drums mm-util mail-prsvr mail-utils help-mode easymenu view time-date japan-util tooltip ediff-hook vc-hooks lisp-float-type mwheel dos-w32 disp-table ls-lisp w32-win w32-vars tool-bar dnd fontset image fringe lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar mouse jit-lock font-lock syntax facemenu font-core frame cham georgian utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean japanese hebrew greek romanian slovak czech european ethiopic indian cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev minibuffer loaddefs button faces cus-face files text-properties overlay sha1 md5 base64 format env code-pages mule custom widget hashtable-print-readable backquote make-network-process multi-tty emacs) ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: 24.1; Microsoft IME Japanese input problem 2012-06-18 5:20 bug#11732: 24.1; Microsoft IME Japanese input problem xavier.dahan @ 2015-02-17 10:26 ` Fujii Hironori 2015-02-18 15:17 ` Eli Zaretskii 2018-06-26 9:10 ` bug#11732: Follow-up to bug#11732 Masayuki Hatta 1 sibling, 1 reply; 43+ messages in thread From: Fujii Hironori @ 2015-02-17 10:26 UTC (permalink / raw) To: 11732 [-- Attachment #1: Type: text/plain, Size: 3617 bytes --] WM_IME_STARTCOMPOSITION should be passed to DefWindowProc. On Mon, 18 Jun 2012 14:20:37 +0900, xavier.dahan@gmail.com wrote: > > Problem to use the native Microsoft IME Japanese input tool to write in > Japanese within Emacs. > > Japanese keyboard. > > Windows 7, fully in Japanese (locale, language). > > Switching to Japanese IME input in Emacs makes the user "blind". > Can not see what we are typing (like when typing a password) until is pressed: > > - either 2 times "space". Then the small IME window displaying the kanji > choices corresponding to what has been typeset (blind) appears on the > bottom-right of the screen. > > - either "enter". Then the hiragana that have been typeset (blind) are printed > in Emacs. > > That's all. Best regards, Xavier. > -------------------------------------------------------------------------- > > In GNU Emacs 24.1.1 (i386-mingw-nt6.1.7601) > of 2012-06-10 on MARVIN > Windowing system distributor `Microsoft Corp.', version 6.1.7601 > Configured using: > `configure --with-gcc (4.6) --cflags > -ID:/devel/emacs/libs/libXpm-3.5.8/include > -ID:/devel/emacs/libs/libXpm-3.5.8/src > -ID:/devel/emacs/libs/libpng-dev_1.4.3-1/include > -ID:/devel/emacs/libs/zlib-dev_1.2.5-2/include > -ID:/devel/emacs/libs/giflib-4.1.4-1/include > -ID:/devel/emacs/libs/jpeg-6b-4/include > -ID:/devel/emacs/libs/tiff-3.8.2-1/include > -ID:/devel/emacs/libs/gnutls-3.0.9/include' > > Important settings: > value of $LC_ALL: nil > value of $LC_COLLATE: nil > value of $LC_CTYPE: nil > value of $LC_MESSAGES: nil > value of $LC_MONETARY: nil > value of $LC_NUMERIC: nil > value of $LC_TIME: nil > value of $LANG: JPN > value of $XMODIFIERS: nil > locale-coding-system: cp932 > default enable-multibyte-characters: t > > Major mode: Lisp Interaction > > Minor modes in effect: > tooltip-mode: t > mouse-wheel-mode: t > tool-bar-mode: t > menu-bar-mode: t > file-name-shadow-mode: t > global-font-lock-mode: t > font-lock-mode: t > blink-cursor-mode: t > auto-composition-mode: t > auto-encryption-mode: t > auto-compression-mode: t > line-number-mode: t > transient-mark-mode: t > > Recent input: > <language-change> C-c C-c M-x b u <tab> g - r e <tab> > <backspace> <backspace> <backspace> <backspace> <backspace> > <backspace> <backspace> <backspace> <backspace> <backspace> > <backspace> <backspace> <backspace> <backspace> r e > p o r t - e m a <tab> <return> > > Recent messages: > For information about GNU Emacs and the GNU system, type C-h C-a. > Making completion list... > > Load-path shadows: > None found. > > Features: > (shadow sort gnus-util mail-extr emacsbug message format-spec rfc822 mml > mml-sec mm-decode mm-bodies mm-encode mail-parse rfc2231 mailabbrev > gmm-utils mailheader sendmail regexp-opt rfc2047 rfc2045 ietf-drums > mm-util mail-prsvr mail-utils help-mode easymenu view time-date > japan-util tooltip ediff-hook vc-hooks lisp-float-type mwheel dos-w32 > disp-table ls-lisp w32-win w32-vars tool-bar dnd fontset image fringe > lisp-mode register page menu-bar rfn-eshadow timer select scroll-bar > mouse jit-lock font-lock syntax facemenu font-core frame cham georgian > utf-8-lang misc-lang vietnamese tibetan thai tai-viet lao korean > japanese hebrew greek romanian slovak czech european ethiopic indian > cyrillic chinese case-table epa-hook jka-cmpr-hook help simple abbrev > minibuffer loaddefs button faces cus-face files text-properties overlay > sha1 md5 base64 format env code-pages mule custom widget > hashtable-print-readable backquote make-network-process multi-tty emacs) > > > > [-- Attachment #2: a.patch --] [-- Type: application/octet-stream, Size: 1120 bytes --] diff --git a/src/w32fns.c b/src/w32fns.c index 08000d8..3b0213d 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -3295,12 +3295,12 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) field being reset to nil. */ f = x_window_to_frame (dpyinfo, hwnd); if (!(f && FRAME_LIVE_P (f))) - break; + goto dflt; w = XWINDOW (FRAME_SELECTED_WINDOW (f)); /* Punt if someone changed the frame's selected window behind our back. */ if (w != w32_system_caret_window) - break; + goto dflt; form.dwStyle = CFS_RECT; form.ptCurrentPos.x = w32_system_caret_x; @@ -3318,17 +3318,17 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) /* Punt if the window was deleted behind our back. */ if (!BUFFERP (w->contents)) - break; + goto dflt; context = get_ime_context_fn (hwnd); if (!context) - break; + goto dflt; set_ime_composition_window_fn (context, &form); release_ime_context_fn (hwnd, context); } - break; + goto dflt; case WM_IME_ENDCOMPOSITION: ignore_ime_char = 0; ^ permalink raw reply related [flat|nested] 43+ messages in thread
* bug#11732: 24.1; Microsoft IME Japanese input problem 2015-02-17 10:26 ` Fujii Hironori @ 2015-02-18 15:17 ` Eli Zaretskii 2015-02-19 2:03 ` Fujii Hironori 0 siblings, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2015-02-18 15:17 UTC (permalink / raw) To: Fujii Hironori; +Cc: 11732 > Date: Tue, 17 Feb 2015 19:26:41 +0900 > From: Fujii Hironori <fujii.hironori@gmail.com> > > WM_IME_STARTCOMPOSITION should be passed to DefWindowProc. Thanks, but can you explain the details? I can understand why we should defer to DefWindowProc if we refrain from processing this message, for some reason. But this last part of your patch: > @@ -3318,17 +3318,17 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) > > /* Punt if the window was deleted behind our back. */ > if (!BUFFERP (w->contents)) > - break; > + goto dflt; > > context = get_ime_context_fn (hwnd); > > if (!context) > - break; > + goto dflt; > > set_ime_composition_window_fn (context, &form); > release_ime_context_fn (hwnd, context); > } > - break; > + goto dflt; > > case WM_IME_ENDCOMPOSITION: > ignore_ime_char = 0; Passes the message to DefWindowProc even if we succeeded to handle WM_IME_STARTCOMPOSITION by calling ImmSetCompositionWindow. Why is that needed? ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: 24.1; Microsoft IME Japanese input problem 2015-02-18 15:17 ` Eli Zaretskii @ 2015-02-19 2:03 ` Fujii Hironori 2015-02-19 6:44 ` Eli Zaretskii 0 siblings, 1 reply; 43+ messages in thread From: Fujii Hironori @ 2015-02-19 2:03 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 11732 Thank your for reviewing the patch, Eli. On Thu, Feb 19, 2015 at 12:17 AM, Eli Zaretskii <eliz@gnu.org> wrote: >> Date: Tue, 17 Feb 2015 19:26:41 +0900 >> From: Fujii Hironori <fujii.hironori@gmail.com> >> >> WM_IME_STARTCOMPOSITION should be passed to DefWindowProc. > > Thanks, but can you explain the details? > > I can understand why we should defer to DefWindowProc if we refrain > from processing this message, for some reason. But this last part of > your patch: > >> @@ -3318,17 +3318,17 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) >> >> /* Punt if the window was deleted behind our back. */ >> if (!BUFFERP (w->contents)) >> - break; >> + goto dflt; >> >> context = get_ime_context_fn (hwnd); >> >> if (!context) >> - break; >> + goto dflt; >> >> set_ime_composition_window_fn (context, &form); >> release_ime_context_fn (hwnd, context); >> } >> - break; >> + goto dflt; >> >> case WM_IME_ENDCOMPOSITION: >> ignore_ime_char = 0; > > Passes the message to DefWindowProc even if we succeeded to handle > WM_IME_STARTCOMPOSITION by calling ImmSetCompositionWindow. Why is > that needed? If Emacs processes WM_IME_STARTCOMPOSITION itself, default composition window won't be shown. Please see the document for the detail. https://msdn.microsoft.com/en-us/library/windows/desktop/dd374143%28v=vs.85%29.aspx | Remarks | | This message is a notification to an IME window to open its | composition window. An application should process this message if it | displays composition characters itself. | | If an application has created an IME window, it should pass this | message to that window. The DefWindowProc function processes the | message by passing it to the default IME window. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: 24.1; Microsoft IME Japanese input problem 2015-02-19 2:03 ` Fujii Hironori @ 2015-02-19 6:44 ` Eli Zaretskii [not found] ` <CALus1PmqiC8TnQTfcpVFD5ObjqbK_4hkOczRKmG1=+mkWXUHWQ@mail.gmail.com> 0 siblings, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2015-02-19 6:44 UTC (permalink / raw) To: Fujii Hironori; +Cc: 11732 > Date: Thu, 19 Feb 2015 11:03:58 +0900 > From: Fujii Hironori <fujii.hironori@gmail.com> > Cc: 11732@debbugs.gnu.org > > >> set_ime_composition_window_fn (context, &form); > >> release_ime_context_fn (hwnd, context); > >> } > >> - break; > >> + goto dflt; > >> > >> case WM_IME_ENDCOMPOSITION: > >> ignore_ime_char = 0; > > > > Passes the message to DefWindowProc even if we succeeded to handle > > WM_IME_STARTCOMPOSITION by calling ImmSetCompositionWindow. Why is > > that needed? > > If Emacs processes WM_IME_STARTCOMPOSITION itself, > default composition window won't be shown. > > Please see the document for the detail. > > https://msdn.microsoft.com/en-us/library/windows/desktop/dd374143%28v=vs.85%29.aspx > > | Remarks > | > | This message is a notification to an IME window to open its > | composition window. An application should process this message if it > | displays composition characters itself. > | > | If an application has created an IME window, it should pass this > | message to that window. The DefWindowProc function processes the > | message by passing it to the default IME window. Yes, I've read that, but it's still not clear to me what that mean in practice. Are you saying that ImmSetCompositionWindow only sets the position of the composition window, but it will not be shown unless we pass WM_IME_STARTCOMPOSITION to DefWindowProc? In that case, how will Windows know that the composition window we positioned is "the default IME window"? Or are you saying we should be calling ImmSetCompositionWindow at all? That call was introduced as result of solving bugs #2570 and #2569, so I think the call or its equivalent should stay. Sorry I'm asking all these questions, but I don't know enough about IME programming, and need to understand this in order to see that the patch doesn't break anything else. Thanks. ^ permalink raw reply [flat|nested] 43+ messages in thread
[parent not found: <CALus1PmqiC8TnQTfcpVFD5ObjqbK_4hkOczRKmG1=+mkWXUHWQ@mail.gmail.com>]
* bug#11732: 24.1; Microsoft IME Japanese input problem [not found] ` <CALus1PmqiC8TnQTfcpVFD5ObjqbK_4hkOczRKmG1=+mkWXUHWQ@mail.gmail.com> @ 2015-02-19 11:44 ` Eli Zaretskii 2015-03-06 20:29 ` Eli Zaretskii 0 siblings, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2015-02-19 11:44 UTC (permalink / raw) To: Fujii Hironori; +Cc: 11732-done > Date: Thu, 19 Feb 2015 19:40:18 +0900 > From: Fujii Hironori <fujii.hironori@gmail.com> > > >> | Remarks > >> | > >> | This message is a notification to an IME window to open its > >> | composition window. An application should process this message if it > >> | displays composition characters itself. > >> | > >> | If an application has created an IME window, it should pass this > >> | message to that window. The DefWindowProc function processes the > >> | message by passing it to the default IME window. > > > > Yes, I've read that, but it's still not clear to me what that mean in > > practice. Are you saying that ImmSetCompositionWindow only sets the > > position of the composition window, but it will not be shown unless we > > pass WM_IME_STARTCOMPOSITION to DefWindowProc? > > Yes, I am. > > > In that case, how will > > Windows know that the composition window we positioned is "the default > > IME window"? > > I don't understand what this means. > The default IME window is not a composition window, but opens its > composition window. > > In SDK document, there are some hints what the default IME window is. > > https://msdn.microsoft.com/en-us/library/windows/desktop/dd318561(v=vs.85).aspx > > | The operating system creates a default IME window for every > | thread. The window is created based on the IME class. > > https://msdn.microsoft.com/en-us/library/windows/desktop/dd318170(v=vs.85).aspx > > | IME Window Class > | > | The IME window class is a predefined system global class that defines > | the appearance and behavior of the standard IME windows. The class is > | similar to common control classes in that the application creates a > | window of this class by using the CreateWindowEx function. Like static > | controls, an IME window does not respond to user input by > | itself. Instead, it notifies the IME of user input actions and > | processes control messages sent to it by the IME or applications to > | carry out a response to the user action. > > > Or are you saying we should be calling ImmSetCompositionWindow at all? > > That call was introduced as result of solving bugs #2570 and #2569, so > > I think the call or its equivalent should stay. > > I don't understand what this means. > ImmSetCompositionWindow should be called, of course. > > > Sorry I'm asking all these questions, but I don't know enough about > > IME programming, and need to understand this in order to see that the > > patch doesn't break anything else. > > Current Emacs's IME implementation has this bug. > It's almost imposible to input desired text because of the invisible > composition window. > This patch is nice improvement. Thanks, I installed your change in the development sources, as commit 37e3549, and I'm marking this bug "done". ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: 24.1; Microsoft IME Japanese input problem 2015-02-19 11:44 ` Eli Zaretskii @ 2015-03-06 20:29 ` Eli Zaretskii 2015-03-06 22:37 ` Fujii Hironori 2015-03-09 2:13 ` Fujii Hironori 0 siblings, 2 replies; 43+ messages in thread From: Eli Zaretskii @ 2015-03-06 20:29 UTC (permalink / raw) To: fujii.hironori; +Cc: 11732 > Date: Thu, 19 Feb 2015 13:44:29 +0200 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 11732-done@debbugs.gnu.org > > Thanks, I installed your change in the development sources, as commit > 37e3549, and I'm marking this bug "done". Unfortunately, it looks like that change has a devastating effect on dialog boxes. Try clicking File->Open File, and then click anywhere inside the file selection dialog that opens: the dialog will disappear from the display! Can you suggest how to fix this new problem? If we cannot find a solution, I'm afraid we will have to revert that commit. Thanks. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: 24.1; Microsoft IME Japanese input problem 2015-03-06 20:29 ` Eli Zaretskii @ 2015-03-06 22:37 ` Fujii Hironori 2015-03-07 10:53 ` Eli Zaretskii 2015-03-09 2:13 ` Fujii Hironori 1 sibling, 1 reply; 43+ messages in thread From: Fujii Hironori @ 2015-03-06 22:37 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 11732 [-- Attachment #1: Type: text/plain, Size: 746 bytes --] I'm sorry. i'll investigate the problem. But, no time now. Please revert it. 2015/03/07 5:29 "Eli Zaretskii" <eliz@gnu.org>: > > Date: Thu, 19 Feb 2015 13:44:29 +0200 > > From: Eli Zaretskii <eliz@gnu.org> > > Cc: 11732-done@debbugs.gnu.org > > > > Thanks, I installed your change in the development sources, as commit > > 37e3549, and I'm marking this bug "done". > > Unfortunately, it looks like that change has a devastating effect on > dialog boxes. Try clicking File->Open File, and then click anywhere > inside the file selection dialog that opens: the dialog will disappear > from the display! > > Can you suggest how to fix this new problem? If we cannot find a > solution, I'm afraid we will have to revert that commit. > > Thanks. > [-- Attachment #2: Type: text/html, Size: 1169 bytes --] ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: 24.1; Microsoft IME Japanese input problem 2015-03-06 22:37 ` Fujii Hironori @ 2015-03-07 10:53 ` Eli Zaretskii 0 siblings, 0 replies; 43+ messages in thread From: Eli Zaretskii @ 2015-03-07 10:53 UTC (permalink / raw) To: Fujii Hironori; +Cc: 11732 > Date: Sat, 7 Mar 2015 07:37:57 +0900 > From: Fujii Hironori <fujii.hironori@gmail.com> > Cc: 11732@debbugs.gnu.org > > I'm sorry. i'll investigate the problem. But, no time now. Please revert it. Thanks, I reverted only the part of the change that passed the message to DefWindowProc if handling of WM_IME_STARTCOMPOSITION was successful. That seems to fix the problem with selection dialogs. I will reopen the bug to show that it is not yet fixed. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: 24.1; Microsoft IME Japanese input problem 2015-03-06 20:29 ` Eli Zaretskii 2015-03-06 22:37 ` Fujii Hironori @ 2015-03-09 2:13 ` Fujii Hironori 2015-03-09 16:30 ` Eli Zaretskii 1 sibling, 1 reply; 43+ messages in thread From: Fujii Hironori @ 2015-03-09 2:13 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 11732 On Sat, Mar 7, 2015 at 5:29 AM, Eli Zaretskii <eliz@gnu.org> wrote: > Unfortunately, it looks like that change has a devastating effect on > dialog boxes. Try clicking File->Open File, and then click anywhere > inside the file selection dialog that opens: the dialog will disappear > from the display! I don't see such problem. I'm testing on Windows 7. Could you tell me your Windows version. This is my environment: In GNU Emacs 25.0.50.2 (x86_64-unknown-cygwin) of 2015-03-09 on win7-pc Repository revision: 6b134bcba9de5605086ee9382c0be13174480cac Windowing system distributor `Microsoft Corp.', version 6.1.7601 Configured using: `configure --prefix=/cygdrive/c/home/fujii/opt/emacs --with-w32' I applied a following patch to test: diff --git a/src/w32fns.c b/src/w32fns.c index 6abb433..685d30c 100644 --- a/src/w32fns.c +++ b/src/w32fns.c @@ -3330,7 +3330,7 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam) dialog boxes, such as the file selection dialog or font selection dialog. So something else is needed to fix the former without breaking the latter. See bug#11732. */ - break; + goto dflt; case WM_IME_ENDCOMPOSITION: ignore_ime_char = 0; ^ permalink raw reply related [flat|nested] 43+ messages in thread
* bug#11732: 24.1; Microsoft IME Japanese input problem 2015-03-09 2:13 ` Fujii Hironori @ 2015-03-09 16:30 ` Eli Zaretskii 0 siblings, 0 replies; 43+ messages in thread From: Eli Zaretskii @ 2015-03-09 16:30 UTC (permalink / raw) To: Fujii Hironori; +Cc: 11732 > Date: Mon, 9 Mar 2015 11:13:43 +0900 > From: Fujii Hironori <fujii.hironori@gmail.com> > Cc: 11732@debbugs.gnu.org > > On Sat, Mar 7, 2015 at 5:29 AM, Eli Zaretskii <eliz@gnu.org> wrote: > > Unfortunately, it looks like that change has a devastating effect on > > dialog boxes. Try clicking File->Open File, and then click anywhere > > inside the file selection dialog that opens: the dialog will disappear > > from the display! > > I don't see such problem. I'm testing on Windows 7. > Could you tell me your Windows version. I originally saw this on 32-bit XP, but now tried on 64-bit Windows 7, and I see the same problem there. So I don't think the Windows version is a factor here. > This is my environment: > > In GNU Emacs 25.0.50.2 (x86_64-unknown-cygwin) > of 2015-03-09 on win7-pc > Repository revision: 6b134bcba9de5605086ee9382c0be13174480cac > Windowing system distributor `Microsoft Corp.', version 6.1.7601 > Configured using: > `configure --prefix=/cygdrive/c/home/fujii/opt/emacs --with-w32' You are using a 64-bit Cygwin-w32 build. I'm using a 32-bit MinGW build: In GNU Emacs 25.0.50.232 (i686-pc-mingw32) of 2015-03-07 on HOME-C4E4A596F7 Repository revision: 35e2b6ab4d28547ec079de18cf1cf65623e6909a Windowing system distributor `Microsoft Corp.', version 5.1.2600 Configured using: `configure --prefix=/d/usr --enable-checking=yes,glyphs 'CFLAGS=-O0 -g3'' Configured features: XPM JPEG TIFF GIF PNG RSVG SOUND NOTIFY ACL GNUTLS LIBXML2 ZLIB So either the way Cygwin implements reading of Windows messages from /dev/windows, or the 64- vs 32-bit difference, is somehow responsible for the differences in behavior. Yet another difference is that I compiled without optimizations, but I doubt if that could cause such an effect. > I applied a following patch to test: > > diff --git a/src/w32fns.c b/src/w32fns.c > index 6abb433..685d30c 100644 > --- a/src/w32fns.c > +++ b/src/w32fns.c > @@ -3330,7 +3330,7 @@ w32_wnd_proc (HWND hwnd, UINT msg, WPARAM > wParam, LPARAM lParam) > dialog boxes, such as the file selection dialog or font > selection dialog. So something else is needed to fix the > former without breaking the latter. See bug#11732. */ > - break; > + goto dflt; Me too. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2012-06-18 5:20 bug#11732: 24.1; Microsoft IME Japanese input problem xavier.dahan 2015-02-17 10:26 ` Fujii Hironori @ 2018-06-26 9:10 ` Masayuki Hatta 2018-06-27 15:54 ` Eli Zaretskii 1 sibling, 1 reply; 43+ messages in thread From: Masayuki Hatta @ 2018-06-26 9:10 UTC (permalink / raw) To: 11732 [-- Attachment #1: Type: text/plain, Size: 1144 bytes --] Hi! Recently I built Emacs 26.1 on Windows 10 (w/ MSYS2 64bit) with the patch as mentioned earlier. It works as expected and seems to bring no lousy side effects anymore. This problem has been making Emacs on Windows almost unusable for Japanese users (so most of them use their patched binary). Thus I appreciate if you apply the patch again. Best regards, MH ----- What I did: Following the instruction in INSTALL.W64 almost verbatim, using the latest (as of Jun. 26, 2018) MSYS2 64bit on Windows 10 Pro 1803. Applied the attached patch (this is against 26.1, but I am pretty sure you can apply it to HEAD) and build. Tested with "File -> Open File" dialog and "(w32-font-select)" dialog. Both seem to work. Also tested with Microsoft IME, ATOK 2017, Google Japanese Input and SKKFEP (those are popular Japanese input system for Windows). Please let me know if you want me to do additional info, tests, etc. -- Masayuki Hatta Associate Professor, Faculty of Economics and Management, Surugadai University, Japan http://about.me/mhatta mhatta@gnu.org / mhatta@debian.org / mhatta@opensource.jp / hatta.masayuki@surugadai.ac.jp [-- Attachment #2: diff --] [-- Type: application/octet-stream, Size: 492 bytes --] diff -urN emacs-26.1.orig/src/w32fns.c emacs-26.1/src/w32fns.c --- emacs-26.1.orig/src/w32fns.c 2018-06-22 21:19:49.476879400 +0900 +++ emacs-26.1/src/w32fns.c 2018-06-26 18:00:54.780661600 +0900 @@ -4551,7 +4551,7 @@ dialog boxes, such as the file selection dialog or font selection dialog. So something else is needed to fix the former without breaking the latter. See bug#11732. */ - break; + goto dflt; case WM_IME_ENDCOMPOSITION: ignore_ime_char = 0; ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-26 9:10 ` bug#11732: Follow-up to bug#11732 Masayuki Hatta @ 2018-06-27 15:54 ` Eli Zaretskii 2018-06-28 8:04 ` martin rudalics ` (2 more replies) 0 siblings, 3 replies; 43+ messages in thread From: Eli Zaretskii @ 2018-06-27 15:54 UTC (permalink / raw) To: Masayuki Hatta, martin rudalics; +Cc: 11732 > From: Masayuki Hatta <mhatta@gmail.com> > Date: Tue, 26 Jun 2018 18:10:26 +0900 > > Recently I built Emacs 26.1 on Windows 10 (w/ MSYS2 64bit) with the > patch as mentioned earlier. It works as expected and seems to bring > no lousy side effects anymore. > > This problem has been making Emacs on Windows almost unusable for > Japanese users (so most of them use their patched binary). Thus I > appreciate if you apply the patch again. > > Tested with "File -> Open File" dialog and "(w32-font-select)" dialog. > Both seem to work. By "work", do you mean that clicking on anywhere inside these dialogs leaves the dialogs visible? On 2 different systems where I tried this, after applying the patch, clicking anywhere in the dialog box after it opens causes the dialog box to disappear: it is moved in z order behind the frame from which the dialog was started. It's possible that this is somehow related to the fact that I have my Windows systems configured to enable "active window tracking" (a.k.a. "focus follows mouse"), but even so, I'd like to be able to avoid that adverse side effect on systems that are so configured. Martin, could you perhaps look into this? I tried various "solutions", and the best I could come up with is the patch below. If it looks right to you (I'm really out of my depth here), then how do we solve a similar problem in x-select-font? It doesn't have a callback function, and if I try adding one, the appearance of the dialog changes(??) and the OK and CANCEL buttons no longer work. Also, w32_dialog_in_progress seems to try to solve some similar problem, but is not really working? I guess I simply don't understand why the dialog is lowered when I click on it. Here's the patch for file_dialog_callback I came up with: --- src/w32fns.c~ 2018-06-11 06:32:21.000000000 +0300 +++ src/w32fns.c 2018-06-27 18:22:27.104228200 +0300 @@ -7520,6 +7520,12 @@ file_dialog_callback (HWND hwnd, UINT ms HWND list = GetDlgItem (dialog, FILE_NAME_LIST); int hdr_code; + SetWindowPos (dialog, HWND_TOPMOST, 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE + | SWP_NOOWNERZORDER); + SetWindowPos (FRAME_W32_WINDOW (SELECTED_FRAME ()), + dialog, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); + /* 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 ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-27 15:54 ` Eli Zaretskii @ 2018-06-28 8:04 ` martin rudalics 2018-06-28 10:13 ` Masayuki Hatta 2018-06-28 10:11 ` Masayuki Hatta 2018-06-29 8:43 ` martin rudalics 2 siblings, 1 reply; 43+ messages in thread From: martin rudalics @ 2018-06-28 8:04 UTC (permalink / raw) To: Eli Zaretskii, Masayuki Hatta; +Cc: 11732 > Martin, could you perhaps look into this? I'm afraid I won't be of much help in this matter. IIUC there is a patch I have to apply first and that patch breaks interaction with dialog boxes on Windows in some way. Which one is the patch I have to apply? martin ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-28 8:04 ` martin rudalics @ 2018-06-28 10:13 ` Masayuki Hatta 2018-06-28 12:25 ` martin rudalics 0 siblings, 1 reply; 43+ messages in thread From: Masayuki Hatta @ 2018-06-28 10:13 UTC (permalink / raw) To: rudalics; +Cc: 11732 [-- Attachment #1: Type: text/plain, Size: 688 bytes --] Hi, All you need is patches I attached, "diff" or "diff2" (not both). Best regards, MH 2018年6月28日(木) 17:04 martin rudalics <rudalics@gmx.at>: > > > Martin, could you perhaps look into this? > > I'm afraid I won't be of much help in this matter. IIUC there is a > patch I have to apply first and that patch breaks interaction with > dialog boxes on Windows in some way. Which one is the patch I have to > apply? > > martin -- Masayuki Hatta Associate Professor, Faculty of Economics and Management, Surugadai University, Japan http://about.me/mhatta mhatta@gnu.org / mhatta@debian.org / mhatta@opensource.jp / hatta.masayuki@surugadai.ac.jp [-- Attachment #2: diff --] [-- Type: application/octet-stream, Size: 492 bytes --] diff -urN emacs-26.1.orig/src/w32fns.c emacs-26.1/src/w32fns.c --- emacs-26.1.orig/src/w32fns.c 2018-06-22 21:19:49.476879400 +0900 +++ emacs-26.1/src/w32fns.c 2018-06-26 18:00:54.780661600 +0900 @@ -4551,7 +4551,7 @@ dialog boxes, such as the file selection dialog or font selection dialog. So something else is needed to fix the former without breaking the latter. See bug#11732. */ - break; + goto dflt; case WM_IME_ENDCOMPOSITION: ignore_ime_char = 0; [-- Attachment #3: diff2 --] [-- Type: application/octet-stream, Size: 470 bytes --] diff -urN emacs-26.1.orig/src/w32fns.c emacs-26.1/src/w32fns.c --- emacs-26.1.orig/src/w32fns.c 2018-06-22 21:19:49.476879400 +0900 +++ emacs-26.1/src/w32fns.c 2018-06-28 17:55:48.237802900 +0900 @@ -4544,6 +4544,7 @@ set_ime_composition_window_fn (context, &form); release_ime_context_fn (hwnd, context); + goto dflt; } /* We should "goto dflt" here to pass WM_IME_STARTCOMPOSITION to DefWindowProc, so that the composition window will actually ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-28 10:13 ` Masayuki Hatta @ 2018-06-28 12:25 ` martin rudalics 2018-06-28 13:09 ` Eli Zaretskii 0 siblings, 1 reply; 43+ messages in thread From: martin rudalics @ 2018-06-28 12:25 UTC (permalink / raw) To: Masayuki Hatta; +Cc: 11732 > All you need is patches I attached, "diff" or "diff2" (not both). Thank you. I will try them (but certainly not on Windows 10 which I don't have). martin ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-28 12:25 ` martin rudalics @ 2018-06-28 13:09 ` Eli Zaretskii 0 siblings, 0 replies; 43+ messages in thread From: Eli Zaretskii @ 2018-06-28 13:09 UTC (permalink / raw) To: martin rudalics; +Cc: 11732, mhatta > Date: Thu, 28 Jun 2018 14:25:29 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: eliz@gnu.org, 11732@debbugs.gnu.org > > > All you need is patches I attached, "diff" or "diff2" (not both). > > Thank you. I will try them (but certainly not on Windows 10 which I > don't have). FWIW, I tried on XP and on Windows 7. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-27 15:54 ` Eli Zaretskii 2018-06-28 8:04 ` martin rudalics @ 2018-06-28 10:11 ` Masayuki Hatta 2018-06-28 13:28 ` Eli Zaretskii 2018-06-29 8:43 ` martin rudalics 2 siblings, 1 reply; 43+ messages in thread From: Masayuki Hatta @ 2018-06-28 10:11 UTC (permalink / raw) To: eliz; +Cc: 11732 [-- Attachment #1: Type: text/plain, Size: 1332 bytes --] Hi, thanks for your reply! 2018年6月28日(木) 0:54 Eli Zaretskii <eliz@gnu.org>: > > Tested with "File -> Open File" dialog and "(w32-font-select)" dialog. > > Both seem to work. > > By "work", do you mean that clicking on anywhere inside these dialogs > leaves the dialogs visible? Yes, I was clicking around inside the dialog. I made an animated GIF from screen capture. Its size is around 8MB, so I won't attach it to this mail. Please see: https://www.mhatta.org/test.gif Also, I made a basically-the-same-but-a-bit-different patch. In this "diff2", I preserved break. I don't think it changes anything, though... > It's possible that this is somehow related to the fact that I have my > Windows systems configured to enable "active window tracking" > (a.k.a. "focus follows mouse"), but even so, I'd like to be able to > avoid that adverse side effect on systems that are so configured. Could you tell me how to set up "active windows tracking" on Windows 10? I could find some information on the Net, but still not sure how to do. Best regards, MH -- Masayuki Hatta Associate Professor, Faculty of Economics and Management, Surugadai University, Japan http://about.me/mhatta mhatta@gnu.org / mhatta@debian.org / mhatta@opensource.jp / hatta.masayuki@surugadai.ac.jp [-- Attachment #2: diff2 --] [-- Type: application/octet-stream, Size: 470 bytes --] diff -urN emacs-26.1.orig/src/w32fns.c emacs-26.1/src/w32fns.c --- emacs-26.1.orig/src/w32fns.c 2018-06-22 21:19:49.476879400 +0900 +++ emacs-26.1/src/w32fns.c 2018-06-28 17:55:48.237802900 +0900 @@ -4544,6 +4544,7 @@ set_ime_composition_window_fn (context, &form); release_ime_context_fn (hwnd, context); + goto dflt; } /* We should "goto dflt" here to pass WM_IME_STARTCOMPOSITION to DefWindowProc, so that the composition window will actually ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-28 10:11 ` Masayuki Hatta @ 2018-06-28 13:28 ` Eli Zaretskii 2018-06-28 19:17 ` Noam Postavsky 0 siblings, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2018-06-28 13:28 UTC (permalink / raw) To: Masayuki Hatta; +Cc: 11732 > From: Masayuki Hatta <mhatta@gmail.com> > Date: Thu, 28 Jun 2018 19:11:10 +0900 > Cc: rudalics@gmx.at, 11732@debbugs.gnu.org > > > By "work", do you mean that clicking on anywhere inside these dialogs > > leaves the dialogs visible? > > Yes, I was clicking around inside the dialog. > > I made an animated GIF from screen capture. Its size is around 8MB, > so I won't attach it to this mail. Please see: > > https://www.mhatta.org/test.gif Thanks. It could be that Windows 10 works differently. Or it could be some effect of the fact that you use a Japanese input method. (Is it feasible for you to check on a system without IME installed?) > Also, I made a basically-the-same-but-a-bit-different patch. In this > "diff2", I preserved break. I don't think it changes anything, > though... You are right, it doesn't. > > It's possible that this is somehow related to the fact that I have my > > Windows systems configured to enable "active window tracking" > > (a.k.a. "focus follows mouse"), but even so, I'd like to be able to > > avoid that adverse side effect on systems that are so configured. > > Could you tell me how to set up "active windows tracking" on Windows > 10? I could find some information on the Net, but still not sure how > to do. Try these links, one of them will do the trick, I hope: https://joelpurra.com/projects/X-Mouse_Controls/ https://winaero.com/blog/turn-on-xmouse-active-window-tracking-focus-follows-mouse-pointer-feature-in-windows-8-1-windows-8-and-windows-7/ https://answers.microsoft.com/en-us/windows/forum/windows_10-start-winpc/active-window-tracking-in-windows-10/86c73d65-9d3e-4616-ab17-6d5c5624f777 ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-28 13:28 ` Eli Zaretskii @ 2018-06-28 19:17 ` Noam Postavsky 2018-06-28 19:24 ` Eli Zaretskii 0 siblings, 1 reply; 43+ messages in thread From: Noam Postavsky @ 2018-06-28 19:17 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 11732, Masayuki Hatta On 28 June 2018 at 09:28, Eli Zaretskii <eliz@gnu.org> wrote: > Thanks. It could be that Windows 10 works differently. Or it could > be some effect of the fact that you use a Japanese input method. (Is > it feasible for you to check on a system without IME installed?) >> > It's possible that this is somehow related to the fact that I have my >> > Windows systems configured to enable "active window tracking" >> > (a.k.a. "focus follows mouse"), but even so, I'd like to be able to >> > avoid that adverse side effect on systems that are so configured. >> >> Could you tell me how to set up "active windows tracking" on Windows >> 10? I could find some information on the Net, but still not sure how >> to do. > > Try these links, one of them will do the trick, I hope: > I couldn't find any problem in dialog boxes on my Windows 10 box after applying the patch, I don't have Japanese IME enabled/installed, as far as I know. > https://winaero.com/blog/turn-on-xmouse-active-window-tracking-focus-follows-mouse-pointer-feature-in-windows-8-1-windows-8-and-windows-7/ I tried also after applying the "activate a window by hovering over it with a mouse", and it made no difference (to Emacs, that is). ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-28 19:17 ` Noam Postavsky @ 2018-06-28 19:24 ` Eli Zaretskii 2018-06-29 7:39 ` Masayuki Hatta 0 siblings, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2018-06-28 19:24 UTC (permalink / raw) To: Noam Postavsky; +Cc: 11732, mhatta > From: Noam Postavsky <npostavs@gmail.com> > Date: Thu, 28 Jun 2018 15:17:34 -0400 > Cc: Masayuki Hatta <mhatta@gmail.com>, 11732@debbugs.gnu.org > > I tried also after applying the "activate a window by hovering over it > with a mouse", and it made no difference (to Emacs, that is). Thanks for trying. Nevertheless, the effect is 100% reproducible on 2 different systems where I regularly work, so I'd like to try to get to the bottom of that. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-28 19:24 ` Eli Zaretskii @ 2018-06-29 7:39 ` Masayuki Hatta 2018-06-29 8:43 ` martin rudalics 2018-06-29 8:56 ` Eli Zaretskii 0 siblings, 2 replies; 43+ messages in thread From: Masayuki Hatta @ 2018-06-29 7:39 UTC (permalink / raw) To: eliz; +Cc: npostavs, 11732 Hi, I also tried XMouse settings[*] on Windows 10 Pro 1803 64bit. It seems the patched binary's dialog boxes work as expected. I guess there are some bugs in XP and Win7 but not in Win10. [*] I installed Winaero Tweaker (https://winaero.com/comment.php?comment.news.1836) and set XMouse Options' "Enable window tracking" and "Enable window raising". Added bonus, now I understand what XMouse means ;-) Best regards, MH 2018年6月29日(金) 4:24 Eli Zaretskii <eliz@gnu.org>: > > > From: Noam Postavsky <npostavs@gmail.com> > > Date: Thu, 28 Jun 2018 15:17:34 -0400 > > Cc: Masayuki Hatta <mhatta@gmail.com>, 11732@debbugs.gnu.org > > > > I tried also after applying the "activate a window by hovering over it > > with a mouse", and it made no difference (to Emacs, that is). > > Thanks for trying. Nevertheless, the effect is 100% reproducible on 2 > different systems where I regularly work, so I'd like to try to get to > the bottom of that. -- Masayuki Hatta Associate Professor, Faculty of Economics and Management, Surugadai University, Japan http://about.me/mhatta mhatta@gnu.org / mhatta@debian.org / mhatta@opensource.jp / hatta.masayuki@surugadai.ac.jp ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-29 7:39 ` Masayuki Hatta @ 2018-06-29 8:43 ` martin rudalics 2018-06-29 8:59 ` Eli Zaretskii 2018-06-30 3:14 ` Masayuki Hatta 2018-06-29 8:56 ` Eli Zaretskii 1 sibling, 2 replies; 43+ messages in thread From: martin rudalics @ 2018-06-29 8:43 UTC (permalink / raw) To: Masayuki Hatta, eliz; +Cc: npostavs, 11732 > I also tried XMouse settings[*] on Windows 10 Pro 1803 64bit. It > seems the patched binary's dialog boxes work as expected. I guess > there are some bugs in XP and Win7 but not in Win10. If worse comes to worst we could make this optional. > [*] I installed Winaero Tweaker > (https://winaero.com/comment.php?comment.news.1836) and set XMouse > Options' "Enable window tracking" and "Enable window raising". Added > bonus, now I understand what XMouse means ;-) Can you try without "Enable window raising" (that's what Eli has)? martin ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-29 8:43 ` martin rudalics @ 2018-06-29 8:59 ` Eli Zaretskii 2018-06-30 3:14 ` Masayuki Hatta 1 sibling, 0 replies; 43+ messages in thread From: Eli Zaretskii @ 2018-06-29 8:59 UTC (permalink / raw) To: martin rudalics; +Cc: npostavs, mhatta, 11732 > Date: Fri, 29 Jun 2018 10:43:27 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: npostavs@gmail.com, 11732@debbugs.gnu.org > > > I also tried XMouse settings[*] on Windows 10 Pro 1803 64bit. It > > seems the patched binary's dialog boxes work as expected. I guess > > there are some bugs in XP and Win7 but not in Win10. > > If worse comes to worst we could make this optional. Nah, it doesn't sound justified. I have a workaround, so the problem is not acute enough to justify a knob in Emacs. > > [*] I installed Winaero Tweaker > > (https://winaero.com/comment.php?comment.news.1836) and set XMouse > > Options' "Enable window tracking" and "Enable window raising". Added > > bonus, now I understand what XMouse means ;-) > > Can you try without "Enable window raising" (that's what Eli has)? Yes, windows get focus here without raising them. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-29 8:43 ` martin rudalics 2018-06-29 8:59 ` Eli Zaretskii @ 2018-06-30 3:14 ` Masayuki Hatta 2018-06-30 7:46 ` Eli Zaretskii 1 sibling, 1 reply; 43+ messages in thread From: Masayuki Hatta @ 2018-06-30 3:14 UTC (permalink / raw) To: rudalics; +Cc: Noam Postavsky, 11732 Hi, 2018年6月29日(金) 17:43 martin rudalics <rudalics@gmx.at>: > > [*] I installed Winaero Tweaker > > (https://winaero.com/comment.php?comment.news.1836) and set XMouse > > Options' "Enable window tracking" and "Enable window raising". Added > > bonus, now I understand what XMouse means ;-) > > Can you try without "Enable window raising" (that's what Eli has)? I tried enabling window tracking without window raising, and Emacs dialogs still work okay (and window tracking works as expected, too). Best regards, MH -- Masayuki Hatta Associate Professor, Faculty of Economics and Management, Surugadai University, Japan http://about.me/mhatta mhatta@gnu.org / mhatta@debian.org / mhatta@opensource.jp / hatta.masayuki@surugadai.ac.jp ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-30 3:14 ` Masayuki Hatta @ 2018-06-30 7:46 ` Eli Zaretskii 2018-06-30 8:30 ` Masayuki Hatta 0 siblings, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2018-06-30 7:46 UTC (permalink / raw) To: Masayuki Hatta; +Cc: npostavs, 11732 > From: Masayuki Hatta <mhatta@gmail.com> > Date: Sat, 30 Jun 2018 12:14:28 +0900 > Cc: eliz@gnu.org, Noam Postavsky <npostavs@gmail.com>, 11732@debbugs.gnu.org > > > > [*] I installed Winaero Tweaker > > > (https://winaero.com/comment.php?comment.news.1836) and set XMouse > > > Options' "Enable window tracking" and "Enable window raising". Added > > > bonus, now I understand what XMouse means ;-) > > > > Can you try without "Enable window raising" (that's what Eli has)? > > I tried enabling window tracking without window raising, and Emacs > dialogs still work okay (and window tracking works as expected, too). Did you have other non-minimized windows on the desktop when you tried that? Or were Emacs's the only windows? Please try with other windows open and overlapping the Emacs's windows. Thanks. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-30 7:46 ` Eli Zaretskii @ 2018-06-30 8:30 ` Masayuki Hatta 0 siblings, 0 replies; 43+ messages in thread From: Masayuki Hatta @ 2018-06-30 8:30 UTC (permalink / raw) To: eliz; +Cc: Noam Postavsky, 11732 Hi, 2018年6月30日(土) 16:46 Eli Zaretskii <eliz@gnu.org>: > > I tried enabling window tracking without window raising, and Emacs > > dialogs still work okay (and window tracking works as expected, too). > > Did you have other non-minimized windows on the desktop when you tried > that? Or were Emacs's the only windows? Please try with other > windows open and overlapping the Emacs's windows. I prepared another screen capture anime GIF: https://www.mhatta.org/test2.gif Note that I can scroll up/down a background Firefox thanks to window tracking sans raising. Best regards, MH -- Masayuki Hatta Associate Professor, Faculty of Economics and Management, Surugadai University, Japan http://about.me/mhatta mhatta@gnu.org / mhatta@debian.org / mhatta@opensource.jp / hatta.masayuki@surugadai.ac.jp ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-29 7:39 ` Masayuki Hatta 2018-06-29 8:43 ` martin rudalics @ 2018-06-29 8:56 ` Eli Zaretskii 1 sibling, 0 replies; 43+ messages in thread From: Eli Zaretskii @ 2018-06-29 8:56 UTC (permalink / raw) To: Masayuki Hatta; +Cc: npostavs, 11732 > From: Masayuki Hatta <mhatta@gmail.com> > Date: Fri, 29 Jun 2018 16:39:36 +0900 > Cc: npostavs@gmail.com, 11732@debbugs.gnu.org > > I also tried XMouse settings[*] on Windows 10 Pro 1803 64bit. It > seems the patched binary's dialog boxes work as expected. I guess > there are some bugs in XP and Win7 but not in Win10. Thanks for testing. FWIW, I doubt these are bugs in Windows. I think this is something we do that is not 100% TRT, and it sometimes misfires. Anyway, let's see what Martin will uncover based on my attempts, and if the conclusion is that this is something specific to my personal configurations, we will install the change. I have (a slightly annoying) workaround for the problem anyway, I just wish it didn't happen at all. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-27 15:54 ` Eli Zaretskii 2018-06-28 8:04 ` martin rudalics 2018-06-28 10:11 ` Masayuki Hatta @ 2018-06-29 8:43 ` martin rudalics 2018-06-29 9:07 ` Eli Zaretskii 2 siblings, 1 reply; 43+ messages in thread From: martin rudalics @ 2018-06-29 8:43 UTC (permalink / raw) To: Eli Zaretskii, Masayuki Hatta; +Cc: 11732 >> Tested with "File -> Open File" dialog and "(w32-font-select)" dialog. >> Both seem to work. > > By "work", do you mean that clicking on anywhere inside these dialogs > leaves the dialogs visible? On 2 different systems where I tried > this, after applying the patch, clicking anywhere in the dialog box > after it opens causes the dialog box to disappear: it is moved in z > order behind the frame from which the dialog was started. > > It's possible that this is somehow related to the fact that I have my > Windows systems configured to enable "active window tracking" > (a.k.a. "focus follows mouse"), but even so, I'd like to be able to > avoid that adverse side effect on systems that are so configured. I now tried on my standard XP machine and do not see any adverse effects with file, directory and font dialog boxes. Maybe it's related to the fact that I have "focus follows mouse" plus "autoraise". Could you try with such a setting? I am very reluctant to change mine becaue I have some additional mouse software working as well. > + SetWindowPos (dialog, HWND_TOPMOST, 0, 0, 0, 0, > + SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE > + | SWP_NOOWNERZORDER); > + SetWindowPos (FRAME_W32_WINDOW (SELECTED_FRAME ()), > + dialog, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); What was the more or less precise rationale for this unless it was pure experimenting (in particular the SWP_NOACTIVATE in the first call)? The patch does not have any (adverse) effects here so if it solves the problem for you, I see no problem applying it. > then how do > we solve a similar problem in x-select-font? It doesn't have a > callback function, and if I try adding one, the appearance of the > dialog changes(??) and the OK and CANCEL buttons no longer work. Can you send me the code you tried? > Also, w32_dialog_in_progress seems to try to solve some similar > problem, but is not really working? I guess I simply don't understand > why the dialog is lowered when I click on it. In w32_dialog_in_progress I tried to solve a relatively simple problem: When a frame is in the TOPMOST group and I start a dialog, that frame would obscure the dialog box. So I temporarily remove the frame from the TOPMOST group and move it back when the dialog ends. martin ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-29 8:43 ` martin rudalics @ 2018-06-29 9:07 ` Eli Zaretskii 2018-06-30 8:06 ` martin rudalics 0 siblings, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2018-06-29 9:07 UTC (permalink / raw) To: martin rudalics; +Cc: 11732, mhatta > Date: Fri, 29 Jun 2018 10:43:12 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: 11732@debbugs.gnu.org > > I now tried on my standard XP machine and do not see any adverse > effects with file, directory and font dialog boxes. Maybe it's > related to the fact that I have "focus follows mouse" plus > "autoraise". Could you try with such a setting? Will do, just not today. > > + SetWindowPos (dialog, HWND_TOPMOST, 0, 0, 0, 0, > > + SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE > > + | SWP_NOOWNERZORDER); > > + SetWindowPos (FRAME_W32_WINDOW (SELECTED_FRAME ()), > > + dialog, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); > > What was the more or less precise rationale for this unless it was > pure experimenting (in particular the SWP_NOACTIVATE in the first > call)? SWP_NOACTIVATE was just a copy-paste from similar calls elsewhere. The rationale for the code was to tell windows to put the frame from which the file-selection dialog popped behind the dialog. If w32_dialog_in_progress is meant to do that, I don't understand how it does that; can you explain? (Btw, as long as we are discussing this: the above-suspended value of the z-group frame parameter appears to be completely undocumented.) > The patch does not have any (adverse) effects here so if it > solves the problem for you, I see no problem applying it. OK. > > then how do > > we solve a similar problem in x-select-font? It doesn't have a > > callback function, and if I try adding one, the appearance of the > > dialog changes(??) and the OK and CANCEL buttons no longer work. > > Can you send me the code you tried? Below. It's possible I've put the code in the wrong WM_* message, but I'm really stabbing in the dark in these matters. > In w32_dialog_in_progress I tried to solve a relatively simple > problem: When a frame is in the TOPMOST group and I start a dialog, > that frame would obscure the dialog box. So I temporarily remove the > frame from the TOPMOST group and move it back when the dialog ends. Can you show me some Lisp to try this situation? Here's the patch I used with the font-selection dialog: --- src/w32font.c~ 2018-01-03 13:09:26.000000000 +0200 +++ src/w32font.c 2018-06-27 18:19:04.140101200 +0300 @@ -2505,6 +2505,24 @@ compute_metrics (HDC dc, struct w32font_ metrics->status = W32METRIC_FAIL; } +static UINT_PTR CALLBACK +font_dialog_callback (HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) +{ + static HWND cf_hwnd; + + if (msg == WM_INITDIALOG) + cf_hwnd = ((CHOOSEFONT *)lParam)->hwndOwner; + + if (msg == WM_NOTIFY) + { + SetWindowPos (hdlg, HWND_NOTOPMOST, 0, 0, 0, 0, + SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE + | SWP_NOOWNERZORDER); + SetWindowPos (cf_hwnd, hdlg, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); + } + return 0; +} + DEFUN ("x-select-font", Fx_select_font, Sx_select_font, 0, 2, 0, doc: /* Read a font name using a W32 font selection dialog. Return fontconfig style font string corresponding to the selection. @@ -2527,7 +2545,8 @@ in the font selection dialog. */) cf.lStructSize = sizeof (cf); cf.hwndOwner = FRAME_W32_WINDOW (f); - cf.Flags = CF_FORCEFONTEXIST | CF_SCREENFONTS | CF_NOVERTFONTS; + cf.Flags = CF_FORCEFONTEXIST | CF_SCREENFONTS | CF_NOVERTFONTS | CF_ENABLEHOOK; + cf.lpfnHook = font_dialog_callback; /* If exclude_proportional is non-nil, limit the selection to monospaced fonts. */ ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-29 9:07 ` Eli Zaretskii @ 2018-06-30 8:06 ` martin rudalics 2018-06-30 11:32 ` Eli Zaretskii 0 siblings, 1 reply; 43+ messages in thread From: martin rudalics @ 2018-06-30 8:06 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 11732, mhatta > Will do, just not today. > >> > + SetWindowPos (dialog, HWND_TOPMOST, 0, 0, 0, 0, >> > + SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE >> > + | SWP_NOOWNERZORDER); >> > + SetWindowPos (FRAME_W32_WINDOW (SELECTED_FRAME ()), >> > + dialog, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE); >> >> What was the more or less precise rationale for this unless it was >> pure experimenting (in particular the SWP_NOACTIVATE in the first >> call)? > > SWP_NOACTIVATE was just a copy-paste from similar calls elsewhere. > The rationale for the code was to tell windows to put the frame from > which the file-selection dialog popped behind the dialog. IMO these two calls are not entirely kosher - after all the dialog box is in the topmost group and the selected frame not. So some other application that interrupts the dialog might mess things up. Anyway, I would try moving the SWP_NOACTIVATE from the dialog to the selected frame call like SetWindowPos (dialog, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOOWNERZORDER); SetWindowPos (FRAME_W32_WINDOW (SELECTED_FRAME ()), dialog, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); Note that I can't test it because nothing is broken here in the first place. > If > w32_dialog_in_progress is meant to do that, I don't understand how it > does that; can you explain? All w32_dialog_in_progress does is moving frames from and to the topmost group. I don't like putting frames in the topmost group - but if one doesn't use child frames and wants a support frame on top of a normal frame, setting just the z-order is not enough: You run into an eternal loop where Emacs tries to put the support frame above the normal one and Windows immediately reverses that because I obviously want the normal frame to retain focus. > (Btw, as long as we are discussing this: the above-suspended value of > the z-group frame parameter appears to be completely undocumented.) Conceptually, users should never see it: It is set only during dialogs. But if you think it should be documented I'll do that. > Below. It's possible I've put the code in the wrong WM_* message, but > I'm really stabbing in the dark in these matters. > >> In w32_dialog_in_progress I tried to solve a relatively simple >> problem: When a frame is in the TOPMOST group and I start a dialog, >> that frame would obscure the dialog box. So I temporarily remove the >> frame from the TOPMOST group and move it back when the dialog ends. > > Can you show me some Lisp to try this situation? > > Here's the patch I used with the font-selection dialog: > + if (msg == WM_NOTIFY) > + { > + SetWindowPos (hdlg, HWND_NOTOPMOST, 0, 0, 0, 0, > + SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE > + | SWP_NOOWNERZORDER); The HWND_NOTOPMOST doesn't look good - dialog boxes should be topmost. Could you try with static UINT_PTR CALLBACK font_dialog_callback (HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) { static HWND cf_hwnd; if (msg == WM_INITDIALOG) cf_hwnd = ((CHOOSEFONT *)lParam)->hwndOwner; if (msg == WM_NOTIFY) { SetWindowPos (hdlg, HWND_TOPMOST, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOOWNERZORDER); SetWindowPos (cf_hwnd, hdlg, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE); } return 0; } It doesn't show any strange effects here, at least. martin ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-30 8:06 ` martin rudalics @ 2018-06-30 11:32 ` Eli Zaretskii 2018-06-30 12:51 ` martin rudalics 2018-07-01 14:34 ` Eli Zaretskii 0 siblings, 2 replies; 43+ messages in thread From: Eli Zaretskii @ 2018-06-30 11:32 UTC (permalink / raw) To: martin rudalics; +Cc: 11732, mhatta > Date: Sat, 30 Jun 2018 10:06:57 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: mhatta@gmail.com, 11732@debbugs.gnu.org > > > SWP_NOACTIVATE was just a copy-paste from similar calls elsewhere. > > The rationale for the code was to tell windows to put the frame from > > which the file-selection dialog popped behind the dialog. > > IMO these two calls are not entirely kosher - after all the dialog box > is in the topmost group and the selected frame not. So some other > application that interrupts the dialog might mess things up. Anyway, > I would try moving the SWP_NOACTIVATE from the dialog to the selected > frame call like > > SetWindowPos (dialog, HWND_TOPMOST, 0, 0, 0, 0, > SWP_NOMOVE | SWP_NOSIZE | SWP_NOOWNERZORDER); > SetWindowPos (FRAME_W32_WINDOW (SELECTED_FRAME ()), > dialog, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE > | SWP_NOACTIVATE); > > Note that I can't test it because nothing is broken here in the first > place. I think I tried with HWND_TOPMOST, but what it does (and I see it now with your suggestion) is it doesn't allow raising any other (non-Emacs) window above the file-selection dialog (in the z-order). The original code didn't behave that way, so I looked for a better option, and HWND_NOTOPMOST seemed to do the job... > > If > > w32_dialog_in_progress is meant to do that, I don't understand how it > > does that; can you explain? > > All w32_dialog_in_progress does is moving frames from and to the > topmost group. I don't like putting frames in the topmost group - but > if one doesn't use child frames and wants a support frame on top of a > normal frame, setting just the z-order is not enough: You run into an > eternal loop where Emacs tries to put the support frame above the > normal one and Windows immediately reverses that because I obviously > want the normal frame to retain focus. By "support frame" here you mean the dialog box? If not, then why is this function called every time we are about to show a dialog box? > > (Btw, as long as we are discussing this: the above-suspended value of > > the z-group frame parameter appears to be completely undocumented.) > > Conceptually, users should never see it: It is set only during > dialogs. But if you think it should be documented I'll do that. If it's an internal setting that should never be seen outside the C sources, then it should be documented in the commentary preceding x_set_z_group, and the comment should tell this value is internal, so that whoever reads the code will understand what each setting wants to achieve. > > + if (msg == WM_NOTIFY) > > + { > > + SetWindowPos (hdlg, HWND_NOTOPMOST, 0, 0, 0, 0, > > + SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE > > + | SWP_NOOWNERZORDER); > > The HWND_NOTOPMOST doesn't look good - dialog boxes should be topmost. > Could you try with > > static UINT_PTR CALLBACK > font_dialog_callback (HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) > { > static HWND cf_hwnd; > > if (msg == WM_INITDIALOG) > cf_hwnd = ((CHOOSEFONT *)lParam)->hwndOwner; > > if (msg == WM_NOTIFY) > { > SetWindowPos (hdlg, HWND_TOPMOST, 0, 0, 0, 0, > SWP_NOMOVE | SWP_NOSIZE | SWP_NOOWNERZORDER); > SetWindowPos (cf_hwnd, hdlg, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE > | SWP_NOACTIVATE); > } > return 0; > } This looks good on XP, I will try on Windows 7 later. Curiously, HWND_TOPMOST here doesn't prevent raising other windows above the dialog box, as it does with file selector. > It doesn't show any strange effects here, at least. I think the problems I saw were on Windows 7. Will check. Thanks. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-30 11:32 ` Eli Zaretskii @ 2018-06-30 12:51 ` martin rudalics 2018-06-30 13:21 ` Eli Zaretskii 2018-07-01 14:34 ` Eli Zaretskii 1 sibling, 1 reply; 43+ messages in thread From: martin rudalics @ 2018-06-30 12:51 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 11732, mhatta >> SetWindowPos (dialog, HWND_TOPMOST, 0, 0, 0, 0, >> SWP_NOMOVE | SWP_NOSIZE | SWP_NOOWNERZORDER); >> SetWindowPos (FRAME_W32_WINDOW (SELECTED_FRAME ()), >> dialog, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE >> | SWP_NOACTIVATE); >> >> Note that I can't test it because nothing is broken here in the first >> place. > > I think I tried with HWND_TOPMOST, You had HWND_TOPMOST here in the patch you attached to the first message I read. I only moved the SWP_NOACTIVATE from the dialog window to that of the selected frame. > but what it does (and I see it now > with your suggestion) is it doesn't allow raising any other > (non-Emacs) window above the file-selection dialog (in the z-order). > The original code didn't behave that way, so I looked for a better > option, and HWND_NOTOPMOST seemed to do the job... I probably don't understand the original problem sketched as But doing so causes trouble with displaying dialog boxes, such as the file selection dialog or font selection dialog. A dialog box uses a modal window on top of the owning window. Anything else will almost certainly cause problems with any windowing system we use. > By "support frame" here you mean the dialog box? No. I mean a frame that in many regards acts like a child frame but uses a top-level window instead of a child window. > If not, then why is > this function called every time we are about to show a dialog box? Because a dialog box should appear on top of any support frame. And it doesn't necessarily do that when both are in the topmost group. That's why I temporarily remove the support frame from that group. > If it's an internal setting that should never be seen outside the C > sources, then it should be documented in the commentary preceding > x_set_z_group, and the comment should tell this value is internal, so > that whoever reads the code will understand what each setting wants to > achieve. OK. I'll do that. > This looks good on XP, Your initial patch for the font dialog showed many bad symptoms (buttons not responding, couldn't drag the dialog box, combo box for script dropping down beneath the dialog box) on XP. > I will try on Windows 7 later. Curiously, > HWND_TOPMOST here doesn't prevent raising other windows above the > dialog box, as it does with file selector. The windows of other applications (including other Emacs instances) or that of the Emacs instance involved in the dialog? Note that Emacs waits for the dialog to finish and doesn't redisplay in this time. Hence if during a dialog I temporarily show another window on top of the dialog and remove that other window, the text in the Emacs frame is usually garbled until the dialog finishes. martin ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-30 12:51 ` martin rudalics @ 2018-06-30 13:21 ` Eli Zaretskii 2018-07-01 9:00 ` martin rudalics 0 siblings, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2018-06-30 13:21 UTC (permalink / raw) To: martin rudalics; +Cc: 11732, mhatta > Date: Sat, 30 Jun 2018 14:51:04 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: mhatta@gmail.com, 11732@debbugs.gnu.org > > >> SetWindowPos (dialog, HWND_TOPMOST, 0, 0, 0, 0, > >> SWP_NOMOVE | SWP_NOSIZE | SWP_NOOWNERZORDER); > >> SetWindowPos (FRAME_W32_WINDOW (SELECTED_FRAME ()), > >> dialog, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE > >> | SWP_NOACTIVATE); > >> > >> Note that I can't test it because nothing is broken here in the first > >> place. > > > > I think I tried with HWND_TOPMOST, > > You had HWND_TOPMOST here in the patch you attached to the first > message I read. Right, sorry. The issue still stands, though. > > but what it does (and I see it now > > with your suggestion) is it doesn't allow raising any other > > (non-Emacs) window above the file-selection dialog (in the z-order). > > The original code didn't behave that way, so I looked for a better > > option, and HWND_NOTOPMOST seemed to do the job... > > I probably don't understand the original problem sketched as > > But doing so causes trouble with displaying > dialog boxes, such as the file selection dialog or font > selection dialog. > > A dialog box uses a modal window on top of the owning window. I didn't mean the owing window, I meant the other windows on the desktop, belonging to applications other than Emacs. Using HWND_TOPMOST makes me unable to raise any window of another application above the dialog box in the z-order. The existing code does allow that. > > If not, then why is > > this function called every time we are about to show a dialog box? > > Because a dialog box should appear on top of any support frame. And > it doesn't necessarily do that when both are in the topmost group. > That's why I temporarily remove the support frame from that group. OK, so the call to w32_dialog_in_progress has nothing to do with the z-order of the dialog wrt its owning frame, right? > > I will try on Windows 7 later. Curiously, > > HWND_TOPMOST here doesn't prevent raising other windows above the > > dialog box, as it does with file selector. > > The windows of other applications (including other Emacs instances) or > that of the Emacs instance involved in the dialog? The former. > Note that Emacs waits for the dialog to finish and doesn't redisplay > in this time. Hence if during a dialog I temporarily show another > window on top of the dialog and remove that other window, the text in > the Emacs frame is usually garbled until the dialog finishes. Yes, I know. That wasn't what I was worried about. Thanks. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-30 13:21 ` Eli Zaretskii @ 2018-07-01 9:00 ` martin rudalics 2018-07-01 14:29 ` Eli Zaretskii 0 siblings, 1 reply; 43+ messages in thread From: martin rudalics @ 2018-07-01 9:00 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 11732, mhatta > I didn't mean the owing window, I meant the other windows on the > desktop, belonging to applications other than Emacs. Using > HWND_TOPMOST makes me unable to raise any window of another > application above the dialog box in the z-order. The existing code > does allow that. Because it leaves the entire z-order handling to Windows. The idea of using a dialog box is that you tell Windows to glue together the frame with the dialog box and let no other window enter the z-order in between these two. How Windows implements that has likely never been analyzed so we won't know. But I suppose that Windows simply intercepts all (implicit) z-reorder requests to let no other window in. Now if Masayuki's proposal breaks this relationship please tell me exactly how. IIUC you mean to say that with focus follows mouse sans autoraise the two Emacs windows (always) appear on top of other applications. But sans autoraise means that the z-order should not change when you move the mouse so you apparently clicked into another application's window or tried to Alt-tab to it. Please clarify this giving us the precise steps you used. In either case having Emacs fiddle with the z-order and activation of dialog box windows is dangerous and should be avoided in the first place. Also, the code below is creepy and certainly not what a well-behaved application is supposed to do: 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 (hdr_code == CDN_INITDONE) SetFocus (list); > OK, so the call to w32_dialog_in_progress has nothing to do with the > z-order of the dialog wrt its owning frame, right? Right. I meanwhile tried to document this better. Please have a look. >> Note that Emacs waits for the dialog to finish and doesn't redisplay >> in this time. Hence if during a dialog I temporarily show another >> window on top of the dialog and remove that other window, the text in >> the Emacs frame is usually garbled until the dialog finishes. > > Yes, I know. That wasn't what I was worried about. I know. My note was just a reminder that moving other windows above the Emacs frame while a dialog is in progress doesn't result in a pleasant user experience anyway. martin ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-07-01 9:00 ` martin rudalics @ 2018-07-01 14:29 ` Eli Zaretskii 2018-07-03 8:29 ` martin rudalics 0 siblings, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2018-07-01 14:29 UTC (permalink / raw) To: martin rudalics; +Cc: 11732, mhatta > Date: Sun, 01 Jul 2018 11:00:55 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: mhatta@gmail.com, 11732@debbugs.gnu.org > > > I didn't mean the owing window, I meant the other windows on the > > desktop, belonging to applications other than Emacs. Using > > HWND_TOPMOST makes me unable to raise any window of another > > application above the dialog box in the z-order. The existing code > > does allow that. > > Because it leaves the entire z-order handling to Windows. The idea of > using a dialog box is that you tell Windows to glue together the frame > with the dialog box and let no other window enter the z-order in > between these two. How Windows implements that has likely never been > analyzed so we won't know. But I suppose that Windows simply > intercepts all (implicit) z-reorder requests to let no other window > in. Got it, thanks. > Now if Masayuki's proposal breaks this relationship please tell me > exactly how. IIUC you mean to say that with focus follows mouse sans > autoraise the two Emacs windows (always) appear on top of other > applications. But sans autoraise means that the z-order should not > change when you move the mouse so you apparently clicked into another > application's window or tried to Alt-tab to it. Please clarify this > giving us the precise steps you used. The dialog appears on top of the frame from which it was invoked as usual, and as expected (since Windows raises the frame when you click on its menu, the frame is indeed usually on top of the other apps, modulo apps like Task Manager that force themselves on top of everything). Then any click _anywhere_ inside the dialog causes the dialog to disappear, because the owning frame is raised to cover it. A second click at the same coordinates causes the dialog to be shown blinking, as when you click on some part outside the dialog. My workaround for that is to drag the dialog outside of its owning frame, and then use it as usual. Did I explain the situation clearly? Btw, I have now established that focus follows mouse causes this: if I disable it, the problem disappears. And autoraise doesn't affect the issue in any way. I tried both X-Mouse Controls and Winaero Tweaker, on 2 different Windows 7 systems, with the same result: enabling focus-follows-mouse causes the issue, disabling it makes the issue go away. (Of course, both Windows 7 systems were configured by yours truly, so maybe there's some other factor acting as a catalyst. But all else being equal, just turning on and off focus-follows-mouse causes the problem to appear or disappear on those 2 systems.) > > OK, so the call to w32_dialog_in_progress has nothing to do with the > > z-order of the dialog wrt its owning frame, right? > > Right. I meanwhile tried to document this better. Please have a > look. LGTM, thanks. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-07-01 14:29 ` Eli Zaretskii @ 2018-07-03 8:29 ` martin rudalics 2018-07-03 18:50 ` Eli Zaretskii 0 siblings, 1 reply; 43+ messages in thread From: martin rudalics @ 2018-07-03 8:29 UTC (permalink / raw) To: Eli Zaretskii; +Cc: 11732, mhatta > The dialog appears on top of the frame from which it was invoked as > usual, and as expected (since Windows raises the frame when you click > on its menu, the frame is indeed usually on top of the other apps, > modulo apps like Task Manager that force themselves on top of > everything). Then any click _anywhere_ inside the dialog causes the > dialog to disappear, because the owning frame is raised to cover it. > A second click at the same coordinates causes the dialog to be shown > blinking, as when you click on some part outside the dialog. Confirmed (finally, it took me some time to get my Windows 7 version up and running again) with the autoraising option set. The blinking might be caused by some z-order fight maybe stopped by some timeout. > My > workaround for that is to drag the dialog outside of its owning frame, > and then use it as usual. That's no workaround on my Thinkpad. The two windows will always overlap each other and I cannot shrink any of them because Windows does not allow it. > Did I explain the situation clearly? You did. > Btw, I have now established that focus follows mouse causes this: if I > disable it, the problem disappears. And autoraise doesn't affect the > issue in any way. I tried both X-Mouse Controls and Winaero Tweaker, > on 2 different Windows 7 systems, with the same result: enabling > focus-follows-mouse causes the issue, disabling it makes the issue go > away. (Of course, both Windows 7 systems were configured by yours > truly, so maybe there's some other factor acting as a catalyst. But > all else being equal, just turning on and off focus-follows-mouse > causes the problem to appear or disappear on those 2 systems.) No further explanations needed, the problem is clearly visible here now. Do you have any explanation why calling DefWindowProc when handling WM_IME_STARTCOMPOSITION causes this aberrant behavior and not any of the other cases where we call DefWindowProc? martin ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-07-03 8:29 ` martin rudalics @ 2018-07-03 18:50 ` Eli Zaretskii 2018-07-07 7:45 ` Tak Kunihiro 0 siblings, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2018-07-03 18:50 UTC (permalink / raw) To: martin rudalics; +Cc: 11732, mhatta > Date: Tue, 03 Jul 2018 10:29:59 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: mhatta@gmail.com, 11732@debbugs.gnu.org > > No further explanations needed, the problem is clearly visible here > now. Do you have any explanation why calling DefWindowProc when > handling WM_IME_STARTCOMPOSITION causes this aberrant behavior and not > any of the other cases where we call DefWindowProc? None whatsoever. Moreover, I sometimes see the same problem in my "normal" Emacs session running 26.1 sources where this change was not done (but in "emacs -Q" I cannot trigger the problem unless I make the change). So I think it's not the proposed change that does it, it's something we don't do entirely correctly that interacts badly with focus-follows-mouse configuration. Which is why I said that unless you have ideas how to fix this, we should simply install the proposed change, and deal with the dialog problems separately, perhaps using the changes I tried and you fixed. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-07-03 18:50 ` Eli Zaretskii @ 2018-07-07 7:45 ` Tak Kunihiro 2018-07-07 10:00 ` Eli Zaretskii 0 siblings, 1 reply; 43+ messages in thread From: Tak Kunihiro @ 2018-07-07 7:45 UTC (permalink / raw) To: Eli Zaretskii; +Cc: tkk, 11732, mhatta > Which is why I said that unless you have ideas how to fix this, we > should simply install the proposed change, and deal with the dialog > problems separately, perhaps using the changes I tried and you fixed. The proposed change is very beneficial for me. Then I can ask people using MS Windows to type in Japanese character using Emacs in a Texinfo document. Could you install it!? ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-07-07 7:45 ` Tak Kunihiro @ 2018-07-07 10:00 ` Eli Zaretskii 2018-07-07 10:21 ` martin rudalics 0 siblings, 1 reply; 43+ messages in thread From: Eli Zaretskii @ 2018-07-07 10:00 UTC (permalink / raw) To: Tak Kunihiro; +Cc: 11732, mhatta > From: Tak Kunihiro <homeros.misasa@gmail.com> > Cc: martin rudalics <rudalics@gmx.at>, 11732@debbugs.gnu.org, mhatta@gmail.com > Cc: tkk@misasa.okayama-u.ac.jp > Date: Sat, 07 Jul 2018 16:45:31 +0900 > > > Which is why I said that unless you have ideas how to fix this, we > > should simply install the proposed change, and deal with the dialog > > problems separately, perhaps using the changes I tried and you fixed. > > The proposed change is very beneficial for me. Then I can ask people > using MS Windows to type in Japanese character using Emacs in a Texinfo > document. Could you install it!? I'm waiting for Martin to tell whether he has some ideas about the negative effects this has on popup dialogs. We will install the change after that, with or without the remedies for those problems. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-07-07 10:00 ` Eli Zaretskii @ 2018-07-07 10:21 ` martin rudalics 2018-07-07 11:32 ` Eli Zaretskii 0 siblings, 1 reply; 43+ messages in thread From: martin rudalics @ 2018-07-07 10:21 UTC (permalink / raw) To: Eli Zaretskii, Tak Kunihiro; +Cc: 11732, mhatta > Moreover, I sometimes see the same problem in my "normal" Emacs > session running 26.1 sources where this change was not done (but in > "emacs -Q" I cannot trigger the problem unless I make the change). On XP or 7? > So I think it's not the proposed change that does it, it's something > we don't do entirely correctly that interacts badly with > focus-follows-mouse configuration. Which is why I said that unless > you have ideas how to fix this, we should simply install the proposed > change, and deal with the dialog problems separately, perhaps using > the changes I tried and you fixed. These changes are not yet fixed. At least here the selected frame remains topmost even after the dialog finished which is even worse than the disease it tried to cure. I have to remove the frame from that group, probably in w32_dialog_in_progress. >> The proposed change is very beneficial for me. Then I can ask people >> using MS Windows to type in Japanese character using Emacs in a Texinfo >> document. Could you install it!? > > I'm waiting for Martin to tell whether he has some ideas about the > negative effects this has on popup dialogs. We will install the > change after that, with or without the remedies for those problems. Please install without any remedies. If I find a way to fix this I'll get back to you. martin ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-07-07 10:21 ` martin rudalics @ 2018-07-07 11:32 ` Eli Zaretskii 0 siblings, 0 replies; 43+ messages in thread From: Eli Zaretskii @ 2018-07-07 11:32 UTC (permalink / raw) To: martin rudalics; +Cc: homeros.misasa, mhatta, 11732-done > Date: Sat, 07 Jul 2018 12:21:35 +0200 > From: martin rudalics <rudalics@gmx.at> > CC: 11732@debbugs.gnu.org, mhatta@gmail.com > > > Moreover, I sometimes see the same problem in my "normal" Emacs > > session running 26.1 sources where this change was not done (but in > > "emacs -Q" I cannot trigger the problem unless I make the change). > > On XP or 7? Both. > > I'm waiting for Martin to tell whether he has some ideas about the > > negative effects this has on popup dialogs. We will install the > > change after that, with or without the remedies for those problems. > > Please install without any remedies. If I find a way to fix this I'll > get back to you. Done. I'm closing the bug, as the problem with focus-follows-mouse are probably not directly related. Thanks. ^ permalink raw reply [flat|nested] 43+ messages in thread
* bug#11732: Follow-up to bug#11732 2018-06-30 11:32 ` Eli Zaretskii 2018-06-30 12:51 ` martin rudalics @ 2018-07-01 14:34 ` Eli Zaretskii 1 sibling, 0 replies; 43+ messages in thread From: Eli Zaretskii @ 2018-07-01 14:34 UTC (permalink / raw) To: rudalics; +Cc: 11732, mhatta > Date: Sat, 30 Jun 2018 14:32:37 +0300 > From: Eli Zaretskii <eliz@gnu.org> > Cc: 11732@debbugs.gnu.org, mhatta@gmail.com > > > > + if (msg == WM_NOTIFY) > > > + { > > > + SetWindowPos (hdlg, HWND_NOTOPMOST, 0, 0, 0, 0, > > > + SWP_NOMOVE | SWP_NOSIZE | SWP_NOACTIVATE > > > + | SWP_NOOWNERZORDER); > > > > The HWND_NOTOPMOST doesn't look good - dialog boxes should be topmost. > > Could you try with > > > > static UINT_PTR CALLBACK > > font_dialog_callback (HWND hdlg, UINT msg, WPARAM wParam, LPARAM lParam) > > { > > static HWND cf_hwnd; > > > > if (msg == WM_INITDIALOG) > > cf_hwnd = ((CHOOSEFONT *)lParam)->hwndOwner; > > > > if (msg == WM_NOTIFY) > > { > > SetWindowPos (hdlg, HWND_TOPMOST, 0, 0, 0, 0, > > SWP_NOMOVE | SWP_NOSIZE | SWP_NOOWNERZORDER); > > SetWindowPos (cf_hwnd, hdlg, 0, 0, 0, 0, SWP_NOMOVE | SWP_NOSIZE > > | SWP_NOACTIVATE); > > } > > return 0; > > } > > This looks good on XP, I will try on Windows 7 later. Curiously, > HWND_TOPMOST here doesn't prevent raising other windows above the > dialog box, as it does with file selector. > > > It doesn't show any strange effects here, at least. > > I think the problems I saw were on Windows 7. Will check. Tested the above on Windows 7. Seems to work well, with 2 caveats: . The dialog and its frame are raised to be topmost, so no other application window can be put above them, something that the current code allows. Not sure if this will annoy people. . The font selection dialog looks somewhat differently on Windows 7 from the dialog shown by the existing code -- the layout is slightly different, and the link "Show more fonts" is not there. Unless you have some new ideas about the problem, given what I described in my other message, I guess we should disregard the problems that somehow only I can reproduce, and go with the original change. It would be nice to avoid the problems I have, but if not, they are not critical and shouldn't block the main issue of this bug report. Thanks. ^ permalink raw reply [flat|nested] 43+ messages in thread
end of thread, other threads:[~2018-07-07 11:32 UTC | newest] Thread overview: 43+ messages (download: mbox.gz follow: Atom feed -- links below jump to the message on this page -- 2012-06-18 5:20 bug#11732: 24.1; Microsoft IME Japanese input problem xavier.dahan 2015-02-17 10:26 ` Fujii Hironori 2015-02-18 15:17 ` Eli Zaretskii 2015-02-19 2:03 ` Fujii Hironori 2015-02-19 6:44 ` Eli Zaretskii [not found] ` <CALus1PmqiC8TnQTfcpVFD5ObjqbK_4hkOczRKmG1=+mkWXUHWQ@mail.gmail.com> 2015-02-19 11:44 ` Eli Zaretskii 2015-03-06 20:29 ` Eli Zaretskii 2015-03-06 22:37 ` Fujii Hironori 2015-03-07 10:53 ` Eli Zaretskii 2015-03-09 2:13 ` Fujii Hironori 2015-03-09 16:30 ` Eli Zaretskii 2018-06-26 9:10 ` bug#11732: Follow-up to bug#11732 Masayuki Hatta 2018-06-27 15:54 ` Eli Zaretskii 2018-06-28 8:04 ` martin rudalics 2018-06-28 10:13 ` Masayuki Hatta 2018-06-28 12:25 ` martin rudalics 2018-06-28 13:09 ` Eli Zaretskii 2018-06-28 10:11 ` Masayuki Hatta 2018-06-28 13:28 ` Eli Zaretskii 2018-06-28 19:17 ` Noam Postavsky 2018-06-28 19:24 ` Eli Zaretskii 2018-06-29 7:39 ` Masayuki Hatta 2018-06-29 8:43 ` martin rudalics 2018-06-29 8:59 ` Eli Zaretskii 2018-06-30 3:14 ` Masayuki Hatta 2018-06-30 7:46 ` Eli Zaretskii 2018-06-30 8:30 ` Masayuki Hatta 2018-06-29 8:56 ` Eli Zaretskii 2018-06-29 8:43 ` martin rudalics 2018-06-29 9:07 ` Eli Zaretskii 2018-06-30 8:06 ` martin rudalics 2018-06-30 11:32 ` Eli Zaretskii 2018-06-30 12:51 ` martin rudalics 2018-06-30 13:21 ` Eli Zaretskii 2018-07-01 9:00 ` martin rudalics 2018-07-01 14:29 ` Eli Zaretskii 2018-07-03 8:29 ` martin rudalics 2018-07-03 18:50 ` Eli Zaretskii 2018-07-07 7:45 ` Tak Kunihiro 2018-07-07 10:00 ` Eli Zaretskii 2018-07-07 10:21 ` martin rudalics 2018-07-07 11:32 ` Eli Zaretskii 2018-07-01 14:34 ` Eli Zaretskii
Code repositories for project(s) associated with this public inbox https://git.savannah.gnu.org/cgit/emacs.git This is a public inbox, see mirroring instructions for how to clone and mirror all data and code used for this inbox; as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).