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 <neilcsm...@apache.org>:

> On Tue, 19 Apr 2022 at 08:04, Patrik Karlström <pat...@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-unsubscr...@netbeans.apache.org
> For additional commands, e-mail: users-h...@netbeans.apache.org
>
> For further information about the NetBeans mailing lists, visit:
> https://cwiki.apache.org/confluence/display/NETBEANS/Mailing+lists
>
>

Reply via email to