Skip to content

Commit 6fca0a1

Browse files
authored
(nut-tree/nut-js#373) Updated doubleClick implementation to fire two up/down cycles (#115)
1 parent 0f55b08 commit 6fca0a1

File tree

1 file changed

+15
-5
lines changed

1 file changed

+15
-5
lines changed

src/macos/mouse.c

Lines changed: 15 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -139,22 +139,32 @@ void clickMouse(MMMouseButton button)
139139
* Special function for sending double clicks, needed for Mac OS X.
140140
* @param button Button to click.
141141
*/
142-
void doubleClick(MMMouseButton button)
143-
{
142+
void doubleClick(MMMouseButton button) {
144143
/* Double click for Mac. */
145144
const CGPoint currentPos = CGPointFromMMPoint(getMousePos());
146145
const CGEventType mouseTypeDown = MMMouseToCGEventType(true, button);
147-
const CGEventType mouseTypeUP = MMMouseToCGEventType(false, button);
146+
const CGEventType mouseTypeUp = MMMouseToCGEventType(false, button);
148147

149148
CGEventSourceRef src = CGEventSourceCreate(kCGEventSourceStateHIDSystemState);
150-
CGEventRef event = CGEventCreateMouseEvent(src, mouseTypeDown, currentPos, kCGMouseButtonLeft);
149+
CGEventRef event = CGEventCreateMouseEvent(src, mouseTypeDown, currentPos,
150+
button);
151151

152152
/* Set event to double click. */
153153
CGEventSetIntegerValueField(event, kCGMouseEventClickState, 2);
154154

155+
// First down
156+
CGEventPost(kCGHIDEventTap, event);
157+
158+
// First up
159+
CGEventSetType(event, mouseTypeUp);
160+
CGEventPost(kCGHIDEventTap, event);
161+
162+
// Second down
163+
CGEventSetType(event, mouseTypeDown);
155164
CGEventPost(kCGHIDEventTap, event);
156165

157-
CGEventSetType(event, mouseTypeUP);
166+
// Second up
167+
CGEventSetType(event, mouseTypeUp);
158168
CGEventPost(kCGHIDEventTap, event);
159169

160170
CFRelease(event);

0 commit comments

Comments
 (0)