Merge branch 'pr/1' into upstream

This commit is contained in:
xKylee
2020-03-27 23:23:50 +00:00
2 changed files with 33 additions and 0 deletions

View File

@@ -430,4 +430,16 @@ public interface RuneLiteConfig extends Config
{ {
return new Keybind(KeyEvent.VK_F12, InputEvent.CTRL_DOWN_MASK); return new Keybind(KeyEvent.VK_F12, InputEvent.CTRL_DOWN_MASK);
} }
@ConfigItem(
keyName = "blockExtraMouseButtons",
name = "Block Extra Mouse Buttons",
description = "Blocks extra mouse buttons (4 and above)",
position = 34,
titleSection = "keybindsTitle"
)
default boolean blockExtraMouseButtons()
{
return false;
}
} }

View File

@@ -28,14 +28,21 @@ import java.awt.event.MouseEvent;
import java.awt.event.MouseWheelEvent; import java.awt.event.MouseWheelEvent;
import java.util.List; import java.util.List;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import javax.inject.Inject;
import javax.inject.Singleton; import javax.inject.Singleton;
import net.runelite.client.config.RuneLiteConfig;
@Singleton @Singleton
public class MouseManager public class MouseManager
{ {
// Button numbers greater than BUTTON3 have no constant identifier
private static final int MOUSE_BUTTON_4 = 4;
private final List<MouseListener> mouseListeners = new CopyOnWriteArrayList<>(); private final List<MouseListener> mouseListeners = new CopyOnWriteArrayList<>();
private final List<MouseWheelListener> mouseWheelListeners = new CopyOnWriteArrayList<>(); private final List<MouseWheelListener> mouseWheelListeners = new CopyOnWriteArrayList<>();
@Inject
private RuneLiteConfig runeLiteConfig;
public void registerMouseListener(MouseListener mouseListener) public void registerMouseListener(MouseListener mouseListener)
{ {
@@ -75,6 +82,7 @@ public class MouseManager
public MouseEvent processMousePressed(MouseEvent mouseEvent) public MouseEvent processMousePressed(MouseEvent mouseEvent)
{ {
checkExtraMouseButtons(mouseEvent);
for (MouseListener mouseListener : mouseListeners) for (MouseListener mouseListener : mouseListeners)
{ {
mouseEvent = mouseListener.mousePressed(mouseEvent); mouseEvent = mouseListener.mousePressed(mouseEvent);
@@ -84,6 +92,7 @@ public class MouseManager
public MouseEvent processMouseReleased(MouseEvent mouseEvent) public MouseEvent processMouseReleased(MouseEvent mouseEvent)
{ {
checkExtraMouseButtons(mouseEvent);
for (MouseListener mouseListener : mouseListeners) for (MouseListener mouseListener : mouseListeners)
{ {
mouseEvent = mouseListener.mouseReleased(mouseEvent); mouseEvent = mouseListener.mouseReleased(mouseEvent);
@@ -93,12 +102,24 @@ public class MouseManager
public MouseEvent processMouseClicked(MouseEvent mouseEvent) public MouseEvent processMouseClicked(MouseEvent mouseEvent)
{ {
checkExtraMouseButtons(mouseEvent);
for (MouseListener mouseListener : mouseListeners) for (MouseListener mouseListener : mouseListeners)
{ {
mouseEvent = mouseListener.mouseClicked(mouseEvent); mouseEvent = mouseListener.mouseClicked(mouseEvent);
} }
return mouseEvent; return mouseEvent;
} }
private void checkExtraMouseButtons(MouseEvent mouseEvent)
{
// Prevent extra mouse buttons from being passed into the client,
// as it treats them all as left click
int button = mouseEvent.getButton();
if (button >= MOUSE_BUTTON_4 && runeLiteConfig.blockExtraMouseButtons())
{
mouseEvent.consume();
}
}
public MouseEvent processMouseEntered(MouseEvent mouseEvent) public MouseEvent processMouseEntered(MouseEvent mouseEvent)
{ {