You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@netbeans.apache.org by Ernie Rael <er...@raelity.com> on 2022/10/02 00:34:47 UTC

Re: [platform] DialogDescriptor/NotifyDescriptor and multiple screens

There's an open PR, Check for EnvVar/SysProp for preferred screen 
https://github.com/apache/netbeans/pull/4714, which references this thread.

In particular, I've identified two types of "dialog goes to wrong screen",

 1. Random, don't know how to reproduce
 2. Consistent, due to not specifying parent when dialog is opened

If any one knows how to reproduce 1. with higher probability, I hope 
you'll share...

-ernie


On 4/22/22 8:36 AM, Patrik Karlström wrote:
> Thanks Neil,
> inspired by that I created a small example and stepped it back all the 
> way to RELEASE90.
> My problem occured all the way, so no recent regression involved in my 
> issue.
>
> Digging a bit further though I realised my problem stemmed from lack 
> of window focus
> (and maybe some other yet to be confirmed situations) when displaying 
> dialogs.
> In combination with DropTargetDropEvent that is.
>
> So, a multi monitor setup is not the cause of the problem.
>
> Depending on how a file is dragged and dropped from other 
> applications, this problem occurs, or not.
> On Windows it's possible to drag a file from Explorer without Explorer 
> gaining focus, getting activated.
> Knowing that, I solved it with the following code in my Drop listener:
> SwingUtilities.invokeLater(() -> {
> SwingUtilities.getWindowAncestor(MapTopComponent.this).requestFocus();
>     SwingUtilities.invokeLater(() -> {
>         //Display the dialog
>     });
> });
>
> But, back on linux, the problem was still there.
> It was because of the focus stealing prevention setting of KDE 
> Plasma's kwin.
> For good or bad, I resorted to the sledge hammer awt.Robot and created
> public static void requestWindowFocusAndRun(Component c, Runnable r)
>
> https://github.com/trixon/almond/blob/7c22ec5888557ff1afc991e701c84a8f212fe526/util/src/main/java/se/trixon/almond/util/swing/SwingHelper.java#L248
>
>
> Unless it's possible to add a notify(descriptor, parent) to 
> DialogDisplayer I don't think of this as a NetBeans problem but 
> perhaps NB can provide a good solution, or better yet, it might be 
> solved in swing/awt.
>
> /Patrik
>
>
> Den ons 20 apr. 2022 kl 10:43 skrev Neil C Smith <ne...@apache.org>:
>
>     On Tue, 19 Apr 2022 at 08:04, Patrik Karlström <pa...@trixon.se>
>     wrote:
>     >
>     > I'm trying to find a way to improve my platform applications'
>     handling of dialogs.
>     > Developed on a laptop, I was not aware that dialogs did not
>     follow the main window, instead they are displayed on the main screen.
>     >
>     > I use descriptors and display them with
>     > DialogDisplayer.getDefault().notify(d)
>     >
>     > And I can't find a way to specify the dialog parent with that
>     approach.
>     > I did find createDialog(DialogDescriptor descriptor, Frame
>     parent) but I'm not really sure what I should do with the returned
>     dialog since I want an easy way to get the clicked button, if any.
>     >
>     > What is the best way to create and manage dialog wrt parents in
>     a platform app?
>
>     IIRC the default implementation is in core.windows. I'd step through
>     in the debugger and see what it's doing, because I don't think that's
>     the expected behaviour.  Vague recollection of this being mentioned
>     with regards to the IDE too fairly recently.
>
>     https://github.com/apache/netbeans/blob/master/platform/core.windows/src/org/netbeans/core/windows/services/DialogDisplayerImpl.java
>
>     Best wishes,
>
>     Neil
>
>     ---------------------------------------------------------------------
>     To unsubscribe, e-mail: users-unsubscribe@netbeans.apache.org
>     For additional commands, e-mail: users-help@netbeans.apache.org
>
>     For further information about the NetBeans mailing lists, visit:
>     https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
>


---------------------------------------------------------------------
To unsubscribe, e-mail: users-unsubscribe@netbeans.apache.org
For additional commands, e-mail: users-help@netbeans.apache.org

For further information about the NetBeans mailing lists, visit:
https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists