If you want to report a bug go here: https://bugreport.java.com/bugreport/
Without the proper permissions you can't create a bug report directly via the link you have mentioned. Once submitted it takes about 1-2 days until the bug gets entered into the bug database and after that you can search for it via your link.
Michael

Am 15.04.19 um 11:54 schrieb Jason Shattu:
Forgive my ignorance, but I can't work out how to submit an OpenJFX bug report.

The link you've sent  ultimately brings you to this page: https://bugs.openjdk.java.net/secure/Dashboard.jspa

but I don't see any thing for JavaFX here.

Thanks,
Jason

------ Original Message ------
From: "Nir Lisker" <nlis...@gmail.com>
To: "Thiago Milczarek Sayao" <thiago.sa...@clamed.com.br>
Cc: "openjfx-dev@openjdk.java.net" <openjfx-dev@openjdk.java.net>
Sent: 15/04/2019 10:45:36
Subject: Re: JDK-8220272: Found the problem + possible fix

Hi Thiago,

Anyone can create a PR on GitHub, see
https://github.com/javafxports/openjdk-jfx/blob/develop/.github/CONTRIBUTING.md
.

- Nir

On Mon, Apr 15, 2019 at 3:47 AM Thiago Milczarek Sayao <
thiago.sa...@clamed.com.br> wrote:

 * THE PROBLEM *

 In GlassApplication.cpp, the GDK_FOCUS_CHANGE event gets called from the
 last window to the first on my setup (I suspect "out-of-order" on some
 setups and even occasionally in the expected order). So the code to keep
 the latest enabled window fails (refering to WindowStage.java
 activeWindows) - that's why the "First Window" (on the code to reproduce  the bug report) shows on top - because openjfx thinks it was the latest
 window. In WindowStage.java:

     final void handleFocusDisabled() {
         if (activeWindows.isEmpty()) {
             return;
         }
         WindowStage window = activeWindows.get(activeWindows.size() - 1);
 //<-- HERE!!
         window.setIconified(false);
         window.requestToFront();
         window.requestFocus();
     }

 When there is a WINDOW_MODAL this code gets called because the modal
 window disable it's parents (so they do not get events - it's correct). So  openjfx brings up what it thinks it's the latest window - but since the out  of order GDK_FOCUS_CHANGE - it's the wrong window (activeWindows list has
 not the correct order).

 The Gtk docs states GDK_FOCUS_CHANGE is true "if the window has gained the
 keyboard focus" which may not be directly correlated to openjfx's
 WindowEvent.FOCUS_GAINED.

 * THE FIX *

 To fix this, WindowEvent.FOCUS_GAINED must be called in order of which
 window is shown (because the window is inserted on activeWindows at this
 event).

 So I have modified glass_window.cpp to immediately call
 WindowEvent.FOCUS_GAINED when showing the window:

 void WindowContextBase::set_visible(bool visible) {
     if (visible) {
         gtk_widget_show_all(gtk_widget);

         //JDK-8220272 - fire event first because GDK_FOCUS_CHANGE is not
 always in order
         if(jwindow && isEnabled()) {
             mainEnv->CallVoidMethod(jwindow, jWindowNotifyFocus,
 com_sun_glass_events_WindowEvent_FOCUS_GAINED);
         }
     } else {
         gtk_widget_hide(gtk_widget);
         if (jview && is_mouse_entered) {
             is_mouse_entered = false;
             mainEnv->CallVoidMethod(jview, jViewNotifyMouse,
                     com_sun_glass_events_MouseEvent_EXIT,
com_sun_glass_events_MouseEvent_BUTTON_NONE,
                     0, 0,
                     0, 0,
                     0,
                     JNI_FALSE,
                     JNI_FALSE);
             CHECK_JNI_EXCEPTION(mainEnv)
         }
     }
 }

 Did some tests and it seems to fix the problem.

 I do not have permission to make a PR, so posting the fix here. Will
 happily do the PR if required.

 Thanks.



Reply via email to