X-Git-Url: https://gerrit.simantics.org/r/gitweb?a=blobdiff_plain;f=bundles%2Forg.simantics.scenegraph%2Fsrc%2Forg%2Fsimantics%2Fscenegraph%2Fg2d%2Fevents%2FEventQueue.java;h=d3ab613557cc874858b40c36d76d4cf6555e57c3;hb=refs%2Fchanges%2F59%2F2659%2F2;hp=b0a9c752b4cbecdad1d38f73574251971eb79502;hpb=0ae2b770234dfc3cbb18bd38f324125cf0faca07;p=simantics%2Fplatform.git diff --git a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/events/EventQueue.java b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/events/EventQueue.java index b0a9c752b..d3ab61355 100644 --- a/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/events/EventQueue.java +++ b/bundles/org.simantics.scenegraph/src/org/simantics/scenegraph/g2d/events/EventQueue.java @@ -14,6 +14,7 @@ package org.simantics.scenegraph.g2d.events; import java.lang.reflect.Method; import java.util.LinkedList; +import org.simantics.scenegraph.g2d.events.MouseEvent.MouseWheelMovedEvent; import org.simantics.utils.datastructures.ListenerList; import org.simantics.utils.threads.IThreadWorkQueue; import org.simantics.utils.threads.SyncListenerList; @@ -41,8 +42,27 @@ public class EventQueue implements IEventQueue, IEventHandler { return EventTypes.AnyMask; } + private static final String DISABLE_DUPLICATE_REMOVAL = "org.simantics.scenegraph.g2d.events.disableDuplicateMouseWheelEvent"; + private static final boolean IGNORE_DUPLICATE = !Boolean.parseBoolean(System.getProperty(DISABLE_DUPLICATE_REMOVAL)); + + private boolean ignoreDuplicateMouseWheelMovedEvent(Event e) { + if (IGNORE_DUPLICATE && e instanceof MouseWheelMovedEvent) { + MouseWheelMovedEvent event = (MouseWheelMovedEvent) e; + // if (e.time > 0 && (lastMouseWheelMovedEvent != null && lastMouseWheelMovedEvent.time < 0)) { + // apparently this is a better way to distinguish between SWT & AWT events + // SWT based event constructs the scrollAmount to = 0 + // See org.simantics.g2d.event.adapter.SWTMouseEventAdapter.mouseScrolled(MouseEvent) L171 + if (event.scrollAmount != MouseWheelMovedEvent.SCROLL_AMOUNT_ZERO) { + return true; + } + } + return false; + } + @Override public synchronized void queueEvent(Event e) { + if (ignoreDuplicateMouseWheelMovedEvent(e)) + return; // coalesce with last EventCoalescer[] css = coalescers.getListeners(); if (css.length > 0 && !queue.isEmpty()) {