Mac SystemTray now correctly overwrites the button click when it was
a re-dispatched click (to support using both left+right mouse clicks)
This commit is contained in:
parent
c01b560c06
commit
6d256c8346
@ -248,8 +248,10 @@ class SystemTrayFixes {
|
|||||||
trayClass.setModifiers(trayClass.getModifiers() & javassist.Modifier.PUBLIC);
|
trayClass.setModifiers(trayClass.getModifiers() & javassist.Modifier.PUBLIC);
|
||||||
trayClass.getConstructors()[0].setModifiers(trayClass.getConstructors()[0].getModifiers() & javassist.Modifier.PUBLIC);
|
trayClass.getConstructors()[0].setModifiers(trayClass.getConstructors()[0].getModifiers() & javassist.Modifier.PUBLIC);
|
||||||
|
|
||||||
CtClass robotClass = pool.get("java.awt.Robot");
|
CtField ctField = new CtField(CtClass.intType, "lastButton", trayClass);
|
||||||
CtField ctField = new CtField(robotClass, "robot", trayClass);
|
trayClass.addField(ctField);
|
||||||
|
|
||||||
|
ctField = new CtField(pool.get("java.awt.Robot"), "robot", trayClass);
|
||||||
trayClass.addField(ctField);
|
trayClass.addField(ctField);
|
||||||
|
|
||||||
CtMethod ctMethodGet = trayClass.getDeclaredMethod("handleMouseEvent");
|
CtMethod ctMethodGet = trayClass.getDeclaredMethod("handleMouseEvent");
|
||||||
@ -259,6 +261,12 @@ class SystemTrayFixes {
|
|||||||
"sun.awt.SunToolkit toolKit = (sun.awt.SunToolkit)java.awt.Toolkit.getDefaultToolkit();" +
|
"sun.awt.SunToolkit toolKit = (sun.awt.SunToolkit)java.awt.Toolkit.getDefaultToolkit();" +
|
||||||
"int button = event.getButtonNumber();" +
|
"int button = event.getButtonNumber();" +
|
||||||
|
|
||||||
|
// have to intercept to see if it was a button click redirect to preserve what button was used in the event
|
||||||
|
"if (lastButton == 1) {" +
|
||||||
|
"button = lastButton;" +
|
||||||
|
"lastButton = -1;" +
|
||||||
|
"}" +
|
||||||
|
|
||||||
"if ((button <= 2 || toolKit.areExtraMouseButtonsEnabled()) && button <= toolKit.getNumberOfButtons() - 1) {" +
|
"if ((button <= 2 || toolKit.areExtraMouseButtonsEnabled()) && button <= toolKit.getNumberOfButtons() - 1) {" +
|
||||||
"int eventType = sun.lwawt.macosx.NSEvent.nsToJavaEventType(event.getType());" +
|
"int eventType = sun.lwawt.macosx.NSEvent.nsToJavaEventType(event.getType());" +
|
||||||
"int jButton = 0;" +
|
"int jButton = 0;" +
|
||||||
@ -296,6 +304,7 @@ class SystemTrayFixes {
|
|||||||
"e.printStackTrace();" +
|
"e.printStackTrace();" +
|
||||||
"}" +
|
"}" +
|
||||||
"}" +
|
"}" +
|
||||||
|
"lastButton = 1;" +
|
||||||
"robot.mousePress(java.awt.event.InputEvent.BUTTON1_DOWN_MASK);" +
|
"robot.mousePress(java.awt.event.InputEvent.BUTTON1_DOWN_MASK);" +
|
||||||
"return;" +
|
"return;" +
|
||||||
"}" +
|
"}" +
|
||||||
|
Loading…
Reference in New Issue
Block a user