mixins: Don't post mouse events that have already been posted
This commit is contained in:
@@ -26,6 +26,7 @@ package net.runelite.mixins;
|
|||||||
|
|
||||||
import java.awt.event.MouseEvent;
|
import java.awt.event.MouseEvent;
|
||||||
import net.runelite.api.mixins.Copy;
|
import net.runelite.api.mixins.Copy;
|
||||||
|
import net.runelite.api.mixins.Inject;
|
||||||
import net.runelite.api.mixins.Mixin;
|
import net.runelite.api.mixins.Mixin;
|
||||||
import net.runelite.api.mixins.Replace;
|
import net.runelite.api.mixins.Replace;
|
||||||
import net.runelite.api.mixins.Shadow;
|
import net.runelite.api.mixins.Shadow;
|
||||||
@@ -38,6 +39,9 @@ public abstract class RSMouseInputMixin implements RSMouseInput
|
|||||||
@Shadow("clientInstance")
|
@Shadow("clientInstance")
|
||||||
private static RSClient client;
|
private static RSClient client;
|
||||||
|
|
||||||
|
@Inject
|
||||||
|
private int isInEvent;
|
||||||
|
|
||||||
@Copy("mousePressed")
|
@Copy("mousePressed")
|
||||||
abstract void rs$mousePressed(MouseEvent mouseEvent);
|
abstract void rs$mousePressed(MouseEvent mouseEvent);
|
||||||
|
|
||||||
@@ -63,10 +67,21 @@ public abstract class RSMouseInputMixin implements RSMouseInput
|
|||||||
@Replace("mousePressed")
|
@Replace("mousePressed")
|
||||||
public synchronized void mousePressed(MouseEvent mouseEvent)
|
public synchronized void mousePressed(MouseEvent mouseEvent)
|
||||||
{
|
{
|
||||||
mouseEvent = client.getCallbacks().mousePressed(mouseEvent);
|
if (isInEvent == 0)
|
||||||
|
{
|
||||||
|
mouseEvent = client.getCallbacks().mousePressed(mouseEvent);
|
||||||
|
}
|
||||||
if (!mouseEvent.isConsumed())
|
if (!mouseEvent.isConsumed())
|
||||||
{
|
{
|
||||||
rs$mousePressed(mouseEvent);
|
isInEvent++;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
rs$mousePressed(mouseEvent);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
isInEvent--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -74,10 +89,21 @@ public abstract class RSMouseInputMixin implements RSMouseInput
|
|||||||
@Replace("mouseReleased")
|
@Replace("mouseReleased")
|
||||||
public synchronized void mouseReleased(MouseEvent mouseEvent)
|
public synchronized void mouseReleased(MouseEvent mouseEvent)
|
||||||
{
|
{
|
||||||
mouseEvent = client.getCallbacks().mouseReleased(mouseEvent);
|
if (isInEvent == 0)
|
||||||
|
{
|
||||||
|
mouseEvent = client.getCallbacks().mouseReleased(mouseEvent);
|
||||||
|
}
|
||||||
if (!mouseEvent.isConsumed())
|
if (!mouseEvent.isConsumed())
|
||||||
{
|
{
|
||||||
rs$mouseReleased(mouseEvent);
|
isInEvent++;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
rs$mouseReleased(mouseEvent);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
isInEvent--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -96,10 +122,21 @@ public abstract class RSMouseInputMixin implements RSMouseInput
|
|||||||
@Replace("mouseEntered")
|
@Replace("mouseEntered")
|
||||||
public synchronized void mouseEntered(MouseEvent mouseEvent)
|
public synchronized void mouseEntered(MouseEvent mouseEvent)
|
||||||
{
|
{
|
||||||
mouseEvent = client.getCallbacks().mouseEntered(mouseEvent);
|
if (isInEvent == 0)
|
||||||
|
{
|
||||||
|
mouseEvent = client.getCallbacks().mouseEntered(mouseEvent);
|
||||||
|
}
|
||||||
if (!mouseEvent.isConsumed())
|
if (!mouseEvent.isConsumed())
|
||||||
{
|
{
|
||||||
rs$mouseEntered(mouseEvent);
|
isInEvent++;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
rs$mouseEntered(mouseEvent);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
isInEvent--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -108,10 +145,21 @@ public abstract class RSMouseInputMixin implements RSMouseInput
|
|||||||
@Replace("mouseExited")
|
@Replace("mouseExited")
|
||||||
public synchronized void mouseExited(MouseEvent mouseEvent)
|
public synchronized void mouseExited(MouseEvent mouseEvent)
|
||||||
{
|
{
|
||||||
mouseEvent = client.getCallbacks().mouseExited(mouseEvent);
|
if (isInEvent == 0)
|
||||||
|
{
|
||||||
|
mouseEvent = client.getCallbacks().mouseExited(mouseEvent);
|
||||||
|
}
|
||||||
if (!mouseEvent.isConsumed())
|
if (!mouseEvent.isConsumed())
|
||||||
{
|
{
|
||||||
rs$mouseExited(mouseEvent);
|
isInEvent++;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
rs$mouseExited(mouseEvent);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
isInEvent--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -119,10 +167,21 @@ public abstract class RSMouseInputMixin implements RSMouseInput
|
|||||||
@Replace("mouseDragged")
|
@Replace("mouseDragged")
|
||||||
public synchronized void mouseDragged(MouseEvent mouseEvent)
|
public synchronized void mouseDragged(MouseEvent mouseEvent)
|
||||||
{
|
{
|
||||||
mouseEvent = client.getCallbacks().mouseDragged(mouseEvent);
|
if (isInEvent == 0)
|
||||||
|
{
|
||||||
|
mouseEvent = client.getCallbacks().mouseDragged(mouseEvent);
|
||||||
|
}
|
||||||
if (!mouseEvent.isConsumed())
|
if (!mouseEvent.isConsumed())
|
||||||
{
|
{
|
||||||
rs$mouseDragged(mouseEvent);
|
isInEvent++;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
rs$mouseDragged(mouseEvent);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
isInEvent--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -130,10 +189,21 @@ public abstract class RSMouseInputMixin implements RSMouseInput
|
|||||||
@Replace("mouseMoved")
|
@Replace("mouseMoved")
|
||||||
public synchronized void mouseMoved(MouseEvent mouseEvent)
|
public synchronized void mouseMoved(MouseEvent mouseEvent)
|
||||||
{
|
{
|
||||||
mouseEvent = client.getCallbacks().mouseMoved(mouseEvent);
|
if (isInEvent == 0)
|
||||||
|
{
|
||||||
|
mouseEvent = client.getCallbacks().mouseMoved(mouseEvent);
|
||||||
|
}
|
||||||
if (!mouseEvent.isConsumed())
|
if (!mouseEvent.isConsumed())
|
||||||
{
|
{
|
||||||
rs$mouseMoved(mouseEvent);
|
isInEvent++;
|
||||||
|
try
|
||||||
|
{
|
||||||
|
rs$mouseMoved(mouseEvent);
|
||||||
|
}
|
||||||
|
finally
|
||||||
|
{
|
||||||
|
isInEvent--;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user