Mac OS X: Fix ctrl-click right button handling
This commit is contained in:
parent
502291c9cb
commit
20663ff01b
|
@ -69,6 +69,9 @@ final class MouseEventQueue extends EventQueue implements MouseListener, MouseMo
|
||||||
private int last_x;
|
private int last_x;
|
||||||
private int last_y;
|
private int last_y;
|
||||||
|
|
||||||
|
/** Saved control key state for ctrl-click right button emulation */
|
||||||
|
private boolean saved_control_state;
|
||||||
|
|
||||||
/** Event scratch array */
|
/** Event scratch array */
|
||||||
private final int[] event = new int[EVENT_SIZE];
|
private final int[] event = new int[EVENT_SIZE];
|
||||||
|
|
||||||
|
@ -156,27 +159,6 @@ final class MouseEventQueue extends EventQueue implements MouseListener, MouseMo
|
||||||
}
|
}
|
||||||
|
|
||||||
private void handleButton(MouseEvent e) {
|
private void handleButton(MouseEvent e) {
|
||||||
byte button;
|
|
||||||
switch (e.getButton()) {
|
|
||||||
case MouseEvent.NOBUTTON:
|
|
||||||
// Nothing to do, so return
|
|
||||||
return;
|
|
||||||
case MouseEvent.BUTTON1:
|
|
||||||
// Emulate right click if ctrl is down
|
|
||||||
if (!e.isControlDown())
|
|
||||||
button = (byte)0;
|
|
||||||
else
|
|
||||||
button = (byte)1;
|
|
||||||
break;
|
|
||||||
case MouseEvent.BUTTON2:
|
|
||||||
button = (byte)2;
|
|
||||||
break;
|
|
||||||
case MouseEvent.BUTTON3:
|
|
||||||
button = (byte)1;
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
throw new IllegalArgumentException("Not a valid button: " + e.getButton());
|
|
||||||
}
|
|
||||||
byte state;
|
byte state;
|
||||||
switch (e.getID()) {
|
switch (e.getID()) {
|
||||||
case MouseEvent.MOUSE_PRESSED:
|
case MouseEvent.MOUSE_PRESSED:
|
||||||
|
@ -188,6 +170,34 @@ final class MouseEventQueue extends EventQueue implements MouseListener, MouseMo
|
||||||
default:
|
default:
|
||||||
throw new IllegalArgumentException("Not a valid event ID: " + e.getID());
|
throw new IllegalArgumentException("Not a valid event ID: " + e.getID());
|
||||||
}
|
}
|
||||||
|
byte button;
|
||||||
|
switch (e.getButton()) {
|
||||||
|
case MouseEvent.NOBUTTON:
|
||||||
|
// Nothing to do, so return
|
||||||
|
return;
|
||||||
|
case MouseEvent.BUTTON1:
|
||||||
|
// Emulate right click if ctrl is down
|
||||||
|
if (state == 1)
|
||||||
|
saved_control_state = e.isControlDown();
|
||||||
|
if (saved_control_state) {
|
||||||
|
if (buttons[1] == state)
|
||||||
|
return; // ignore
|
||||||
|
button = (byte)1;
|
||||||
|
} else {
|
||||||
|
button = (byte)0;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case MouseEvent.BUTTON2:
|
||||||
|
button = (byte)2;
|
||||||
|
break;
|
||||||
|
case MouseEvent.BUTTON3:
|
||||||
|
if (buttons[1] == state)
|
||||||
|
return; // ignore
|
||||||
|
button = (byte)1;
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
throw new IllegalArgumentException("Not a valid button: " + e.getButton());
|
||||||
|
}
|
||||||
setButton(button, state);
|
setButton(button, state);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue