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=9b0980600990695e785e2d1040c58ae6e13f4a16;hb=bdb7180f6425b460b8566a3223b319caf9dbc56f;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..9b0980600 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,28 @@ public class EventQueue implements IEventQueue, IEventHandler { return EventTypes.AnyMask; } + /** + * + */ + private MouseWheelMovedEvent lastMouseWheelMovedEvent; + + 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) { + if (e.time > 0 && (lastMouseWheelMovedEvent != null && lastMouseWheelMovedEvent.time < 0)) { + return true; + } + lastMouseWheelMovedEvent = (MouseWheelMovedEvent) e; + } + 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()) {