Skip to content

Commit

Permalink
Merge pull request runelite#4403 from Abextm/172-double-translate
Browse files Browse the repository at this point in the history
mixins: Don't post mouse events that have already been posted
  • Loading branch information
Adam- authored Jul 19, 2018
2 parents 4ec592b + f1907fc commit 5738323
Showing 1 changed file with 82 additions and 12 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

import java.awt.event.MouseEvent;
import net.runelite.api.mixins.Copy;
import net.runelite.api.mixins.Inject;
import net.runelite.api.mixins.Mixin;
import net.runelite.api.mixins.Replace;
import net.runelite.api.mixins.Shadow;
Expand All @@ -38,6 +39,9 @@ public abstract class RSMouseInputMixin implements RSMouseInput
@Shadow("clientInstance")
private static RSClient client;

@Inject
private int isInEvent;

@Copy("mousePressed")
abstract void rs$mousePressed(MouseEvent mouseEvent);

Expand All @@ -63,21 +67,43 @@ public abstract class RSMouseInputMixin implements RSMouseInput
@Replace("mousePressed")
public synchronized void mousePressed(MouseEvent mouseEvent)
{
mouseEvent = client.getCallbacks().mousePressed(mouseEvent);
if (isInEvent == 0)
{
mouseEvent = client.getCallbacks().mousePressed(mouseEvent);
}
if (!mouseEvent.isConsumed())
{
rs$mousePressed(mouseEvent);
isInEvent++;
try
{
rs$mousePressed(mouseEvent);
}
finally
{
isInEvent--;
}
}
}

@Override
@Replace("mouseReleased")
public synchronized void mouseReleased(MouseEvent mouseEvent)
{
mouseEvent = client.getCallbacks().mouseReleased(mouseEvent);
if (isInEvent == 0)
{
mouseEvent = client.getCallbacks().mouseReleased(mouseEvent);
}
if (!mouseEvent.isConsumed())
{
rs$mouseReleased(mouseEvent);
isInEvent++;
try
{
rs$mouseReleased(mouseEvent);
}
finally
{
isInEvent--;
}
}
}

Expand All @@ -96,10 +122,21 @@ public void mouseClicked(MouseEvent event)
@Replace("mouseEntered")
public synchronized void mouseEntered(MouseEvent mouseEvent)
{
mouseEvent = client.getCallbacks().mouseEntered(mouseEvent);
if (isInEvent == 0)
{
mouseEvent = client.getCallbacks().mouseEntered(mouseEvent);
}
if (!mouseEvent.isConsumed())
{
rs$mouseEntered(mouseEvent);
isInEvent++;
try
{
rs$mouseEntered(mouseEvent);
}
finally
{
isInEvent--;
}
}
}

Expand All @@ -108,32 +145,65 @@ public synchronized void mouseEntered(MouseEvent mouseEvent)
@Replace("mouseExited")
public synchronized void mouseExited(MouseEvent mouseEvent)
{
mouseEvent = client.getCallbacks().mouseExited(mouseEvent);
if (isInEvent == 0)
{
mouseEvent = client.getCallbacks().mouseExited(mouseEvent);
}
if (!mouseEvent.isConsumed())
{
rs$mouseExited(mouseEvent);
isInEvent++;
try
{
rs$mouseExited(mouseEvent);
}
finally
{
isInEvent--;
}
}
}

@Override
@Replace("mouseDragged")
public synchronized void mouseDragged(MouseEvent mouseEvent)
{
mouseEvent = client.getCallbacks().mouseDragged(mouseEvent);
if (isInEvent == 0)
{
mouseEvent = client.getCallbacks().mouseDragged(mouseEvent);
}
if (!mouseEvent.isConsumed())
{
rs$mouseDragged(mouseEvent);
isInEvent++;
try
{
rs$mouseDragged(mouseEvent);
}
finally
{
isInEvent--;
}
}
}

@Override
@Replace("mouseMoved")
public synchronized void mouseMoved(MouseEvent mouseEvent)
{
mouseEvent = client.getCallbacks().mouseMoved(mouseEvent);
if (isInEvent == 0)
{
mouseEvent = client.getCallbacks().mouseMoved(mouseEvent);
}
if (!mouseEvent.isConsumed())
{
rs$mouseMoved(mouseEvent);
isInEvent++;
try
{
rs$mouseMoved(mouseEvent);
}
finally
{
isInEvent--;
}
}
}
}

0 comments on commit 5738323

Please sign in to comment.