From: martin rudalics <rudalics@gmx.at>
To: Eli Zaretskii <eliz@gnu.org>
Cc: 11732@debbugs.gnu.org, mhatta@gmail.com
Subject: bug#11732: Follow-up to bug#11732
Date: Sat, 30 Jun 2018 10:06:57 +0200 [thread overview]
Message-ID: <5B373A21.9050407@gmx.at> (raw)
In-Reply-To: <83fu16nepn.fsf@gnu.org>
> 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
next prev parent reply other threads:[~2018-06-30 8:06 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
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
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=5B373A21.9050407@gmx.at \
--to=rudalics@gmx.at \
--cc=11732@debbugs.gnu.org \
--cc=eliz@gnu.org \
--cc=mhatta@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
Code repositories for project(s) associated with this external index
https://git.savannah.gnu.org/cgit/emacs.git
https://git.savannah.gnu.org/cgit/emacs/org-mode.git
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.