IDEA-161965 ignore dragged event that does not change mouse location
Sierra is more sensitive and generates drag events, which actually do not drag in Java coordinates.
diff --git a/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java b/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java
index a9e27a7..06d836b 100644
--- a/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java
+++ b/src/macosx/classes/sun/lwawt/macosx/CPlatformResponder.java
@@ -49,6 +49,10 @@
private int lastKeyPressCode = KeyEvent.VK_UNDEFINED;
private final DeltaAccumulator deltaAccumulatorX = new DeltaAccumulator();
private final DeltaAccumulator deltaAccumulatorY = new DeltaAccumulator();
+ private int lastDraggedAbsoluteX;
+ private int lastDraggedAbsoluteY;
+ private int lastDraggedRelativeX;
+ private int lastDraggedRelativeY;
CPlatformResponder(final PlatformEventNotifier eventNotifier,
final boolean isNpapiCallback) {
@@ -71,6 +75,18 @@
int jeventType = isNpapiCallback ? NSEvent.npToJavaEventType(eventType) :
NSEvent.nsToJavaEventType(eventType);
+ boolean dragged = jeventType == MouseEvent.MOUSE_DRAGGED;
+ if (dragged // ignore dragged event that does not change any location
+ && lastDraggedAbsoluteX == absoluteX && lastDraggedRelativeX == x
+ && lastDraggedAbsoluteY == absoluteY && lastDraggedRelativeY == y) return;
+
+ if (dragged || jeventType == MouseEvent.MOUSE_PRESSED) {
+ lastDraggedAbsoluteX = absoluteX;
+ lastDraggedAbsoluteY = absoluteY;
+ lastDraggedRelativeX = x;
+ lastDraggedRelativeY = y;
+ }
+
int jbuttonNumber = MouseEvent.NOBUTTON;
int jclickCount = 0;