< prev index next >

src/java.desktop/macosx/native/libawt_lwawt/awt/AWTView.m

Print this page

        

@@ -49,10 +49,14 @@
 
 // Uncomment this line to see fprintfs of each InputMethod API being called on this View
 //#define IM_DEBUG TRUE
 //#define EXTRA_DEBUG
 
+#define SCROLL_MASK_WHEEL 1
+#define SCROLL_MASK_TRACKPAD (1 << 1)
+#define SCROLL_MASK_PHASE_BEGAN (1 << 2)
+
 static BOOL shouldUsePressAndHold() {
     static int shouldUsePressAndHold = -1;
     if (shouldUsePressAndHold != -1) return shouldUsePressAndHold;
     shouldUsePressAndHold = !isSnowLeopardOrLower();
     return shouldUsePressAndHold;

@@ -380,21 +384,30 @@
         clickCount = 0;
     } else {
         clickCount = [event clickCount];
     }
     
+    jint scrollMask = 0;
+    if (type == NSScrollWheel) {
+        scrollMask = ([event phase]) ? SCROLL_MASK_TRACKPAD : SCROLL_MASK_WHEEL;
+        if ([event phase] == NSEventPhaseBegan) {
+            scrollMask |= SCROLL_MASK_PHASE_BEGAN;
+        }
+    }
+    
     static JNF_CLASS_CACHE(jc_NSEvent, "sun/lwawt/macosx/NSEvent");
-    static JNF_CTOR_CACHE(jctor_NSEvent, jc_NSEvent, "(IIIIIIIIDD)V");
+    static JNF_CTOR_CACHE(jctor_NSEvent, jc_NSEvent, "(IIIIIIIIDDI)V");
     jobject jEvent = JNFNewObject(env, jctor_NSEvent,
                                   [event type],
                                   [event modifierFlags],
                                   clickCount,
                                   [event buttonNumber],
                                   (jint)localPoint.x, (jint)localPoint.y,
                                   (jint)absP.x, (jint)absP.y,
                                   [event deltaY],
-                                  [event deltaX]);
+                                  [event deltaX],
+                                  scrollMask);
     CHECK_NULL(jEvent);
     
     static JNF_CLASS_CACHE(jc_PlatformView, "sun/lwawt/macosx/CPlatformView");
     static JNF_MEMBER_CACHE(jm_deliverMouseEvent, jc_PlatformView, "deliverMouseEvent", "(Lsun/lwawt/macosx/NSEvent;)V");
     jobject jlocal = (*env)->NewLocalRef(env, m_cPlatformView);
< prev index next >