< prev index next >
src/java.desktop/macosx/native/libawt_lwawt/awt/LWCToolkit.m
Print this page
@@ -45,11 +45,11 @@
// SCROLL PHASE STATE
#define SCROLL_PHASE_UNSUPPORTED 1
#define SCROLL_PHASE_BEGAN 2
#define SCROLL_PHASE_CONTINUED 3
-#define SCROLL_PHASE_CANCELLED 4
+#define SCROLL_PHASE_MOMENTUM_BEGAN 4
#define SCROLL_PHASE_ENDED 5
int gNumberOfButtons;
jint* gButtonDownMasks;
@@ -83,20 +83,37 @@
if ([event type] != NSScrollWheel) {
return 0;
}
- NSEventPhase phase = [event phase];
- NSEventPhase momentumPhase = [event momentumPhase];
-
- if (!phase && !momentumPhase) return SCROLL_PHASE_UNSUPPORTED;
- switch (phase) {
+ if ([event phase]) {
+ // process a phase of manual scrolling
+ switch ([event phase]) {
case NSEventPhaseBegan: return SCROLL_PHASE_BEGAN;
- case NSEventPhaseCancelled: return SCROLL_PHASE_CANCELLED;
+ case NSEventPhaseCancelled: return SCROLL_PHASE_ENDED;
case NSEventPhaseEnded: return SCROLL_PHASE_ENDED;
default: return SCROLL_PHASE_CONTINUED;
}
+ }
+
+ if ([event momentumPhase]) {
+ // process a phase of automatic scrolling
+ switch ([event momentumPhase]) {
+ case NSEventPhaseBegan: return SCROLL_PHASE_MOMENTUM_BEGAN;
+ case NSEventPhaseCancelled: return SCROLL_PHASE_ENDED;
+ case NSEventPhaseEnded: return SCROLL_PHASE_ENDED;
+ default: return SCROLL_PHASE_CONTINUED;
+ }
+ }
+ // phase and momentum phase both are not set
+ return SCROLL_PHASE_UNSUPPORTED;
+}
+
++ (BOOL) hasPreciseScrollingDeltas: (NSEvent*) event {
+ return [event type] == NSScrollWheel
+ && [event respondsToSelector:@selector(hasPreciseScrollingDeltas)]
+ && [event hasPreciseScrollingDeltas];
}
@end
@interface AWTRunLoopObject : NSObject {
< prev index next >