Subject: bug#11732: Follow-up to bug#11732

From: Eli Zaretskii <[email-masked]>
Date: Sun, 01 Jul 2018 17:34:24 +0300

> Date: Sat, 30 Jun 2018 14:32:37 +0300
> From: Eli Zaretskii <[email-masked]>
> Cc: [email-masked], [email-masked]
> 
> >  > +  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.