forked from dorkbox/SystemTray
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.getConstructors()[0].setModifiers(trayClass.getConstructors()[0].getModifiers() & javassist.Modifier.PUBLIC);
|
||||
|
||||
CtClass robotClass = pool.get("java.awt.Robot");
|
||||
CtField ctField = new CtField(robotClass, "robot", trayClass);
|
||||
CtField ctField = new CtField(CtClass.intType, "lastButton", trayClass);
|
||||
trayClass.addField(ctField);
|
||||
|
||||
ctField = new CtField(pool.get("java.awt.Robot"), "robot", trayClass);
|
||||
trayClass.addField(ctField);
|
||||
|
||||
CtMethod ctMethodGet = trayClass.getDeclaredMethod("handleMouseEvent");
|
||||
@ -259,6 +261,12 @@ class SystemTrayFixes {
|
||||
"sun.awt.SunToolkit toolKit = (sun.awt.SunToolkit)java.awt.Toolkit.getDefaultToolkit();" +
|
||||
"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) {" +
|
||||
"int eventType = sun.lwawt.macosx.NSEvent.nsToJavaEventType(event.getType());" +
|
||||
"int jButton = 0;" +
|
||||
@ -296,6 +304,7 @@ class SystemTrayFixes {
|
||||
"e.printStackTrace();" +
|
||||
"}" +
|
||||
"}" +
|
||||
"lastButton = 1;" +
|
||||
"robot.mousePress(java.awt.event.InputEvent.BUTTON1_DOWN_MASK);" +
|
||||
"return;" +
|
||||
"}" +
|
||||
|
Loading…
Reference in New Issue
Block a user