changeset 8244:a5d0730342a5

8025585: Win: Popups in JFXPanel do not receive MouseWheel events Reviewed-by: anthony, art
author pchelko
date Tue, 08 Oct 2013 15:54:43 +0400
parents 01022f461570
children 85a72bb00d74
files src/windows/native/sun/windows/awt_Toolkit.cpp
diffstat 1 files changed, 12 insertions(+), 3 deletions(-) [+]
line wrap: on
line diff
--- a/src/windows/native/sun/windows/awt_Toolkit.cpp	Tue Oct 08 15:17:22 2013 +0400
+++ b/src/windows/native/sun/windows/awt_Toolkit.cpp	Tue Oct 08 15:54:43 2013 +0400
@@ -1516,10 +1516,19 @@
      * the mouse, not the Component with the input focus.
      */
 
-    if (msg.message == WM_MOUSEWHEEL &&
-        AwtToolkit::MainThread() == ::GetWindowThreadProcessId(hWndForWheel, NULL)) {
+    if (msg.message == WM_MOUSEWHEEL) {
             //i.e. mouse is over client area for this window
-            msg.hwnd = hWndForWheel;
+            DWORD hWndForWheelProcess;
+            DWORD hWndForWheelThread = ::GetWindowThreadProcessId(hWndForWheel, &hWndForWheelProcess);
+            if (::GetCurrentProcessId() == hWndForWheelProcess) {
+                if (AwtToolkit::MainThread() == hWndForWheelThread) {
+                    msg.hwnd = hWndForWheel;
+                } else {
+                    // Interop mode, redispatch the event to another toolkit.
+                    ::SendMessage(hWndForWheel, msg.message, mouseWParam, mouseLParam);
+                    return TRUE;
+                }
+            }
     }
 
     /*