Skip processing of input listeners with consumed events

This prevents from consumed input events to propage to rest of the
plugins. For example when overlay is being moved, this prevents ground
items from registering the click (what would otherwise cause for ground
item to be highlighted).

Signed-off-by: Tomas Slusny <slusnucky@gmail.com>
This commit is contained in:
Tomas Slusny
2020-04-05 06:57:09 +02:00
committed by Adam
parent 35ebe5c65f
commit 612a5f3fb5
2 changed files with 99 additions and 0 deletions

View File

@@ -49,25 +49,52 @@ public class KeyManager
public void processKeyPressed(KeyEvent keyEvent)
{
if (keyEvent.isConsumed())
{
return;
}
for (KeyListener keyListener : keyListeners)
{
keyListener.keyPressed(keyEvent);
if (keyEvent.isConsumed())
{
break;
}
}
}
public void processKeyReleased(KeyEvent keyEvent)
{
if (keyEvent.isConsumed())
{
return;
}
for (KeyListener keyListener : keyListeners)
{
keyListener.keyReleased(keyEvent);
if (keyEvent.isConsumed())
{
break;
}
}
}
public void processKeyTyped(KeyEvent keyEvent)
{
if (keyEvent.isConsumed())
{
return;
}
for (KeyListener keyListener : keyListeners)
{
keyListener.keyTyped(keyEvent);
if (keyEvent.isConsumed())
{
break;
}
}
}
}

View File

@@ -82,30 +82,57 @@ public class MouseManager
public MouseEvent processMousePressed(MouseEvent mouseEvent)
{
if (mouseEvent.isConsumed())
{
return mouseEvent;
}
checkExtraMouseButtons(mouseEvent);
for (MouseListener mouseListener : mouseListeners)
{
mouseEvent = mouseListener.mousePressed(mouseEvent);
if (mouseEvent.isConsumed())
{
break;
}
}
return mouseEvent;
}
public MouseEvent processMouseReleased(MouseEvent mouseEvent)
{
if (mouseEvent.isConsumed())
{
return mouseEvent;
}
checkExtraMouseButtons(mouseEvent);
for (MouseListener mouseListener : mouseListeners)
{
mouseEvent = mouseListener.mouseReleased(mouseEvent);
if (mouseEvent.isConsumed())
{
break;
}
}
return mouseEvent;
}
public MouseEvent processMouseClicked(MouseEvent mouseEvent)
{
if (mouseEvent.isConsumed())
{
return mouseEvent;
}
checkExtraMouseButtons(mouseEvent);
for (MouseListener mouseListener : mouseListeners)
{
mouseEvent = mouseListener.mouseClicked(mouseEvent);
if (mouseEvent.isConsumed())
{
break;
}
}
return mouseEvent;
}
@@ -123,45 +150,90 @@ public class MouseManager
public MouseEvent processMouseEntered(MouseEvent mouseEvent)
{
if (mouseEvent.isConsumed())
{
return mouseEvent;
}
for (MouseListener mouseListener : mouseListeners)
{
mouseEvent = mouseListener.mouseEntered(mouseEvent);
if (mouseEvent.isConsumed())
{
break;
}
}
return mouseEvent;
}
public MouseEvent processMouseExited(MouseEvent mouseEvent)
{
if (mouseEvent.isConsumed())
{
return mouseEvent;
}
for (MouseListener mouseListener : mouseListeners)
{
mouseEvent = mouseListener.mouseExited(mouseEvent);
if (mouseEvent.isConsumed())
{
break;
}
}
return mouseEvent;
}
public MouseEvent processMouseDragged(MouseEvent mouseEvent)
{
if (mouseEvent.isConsumed())
{
return mouseEvent;
}
for (MouseListener mouseListener : mouseListeners)
{
mouseEvent = mouseListener.mouseDragged(mouseEvent);
if (mouseEvent.isConsumed())
{
break;
}
}
return mouseEvent;
}
public MouseEvent processMouseMoved(MouseEvent mouseEvent)
{
if (mouseEvent.isConsumed())
{
return mouseEvent;
}
for (MouseListener mouseListener : mouseListeners)
{
mouseEvent = mouseListener.mouseMoved(mouseEvent);
if (mouseEvent.isConsumed())
{
break;
}
}
return mouseEvent;
}
public MouseWheelEvent processMouseWheelMoved(MouseWheelEvent mouseWheelEvent)
{
if (mouseWheelEvent.isConsumed())
{
return mouseWheelEvent;
}
for (MouseWheelListener mouseWheelListener : mouseWheelListeners)
{
mouseWheelEvent = mouseWheelListener.mouseWheelMoved(mouseWheelEvent);
if (mouseWheelEvent.isConsumed())
{
break;
}
}
return mouseWheelEvent;
}