@@ -80,6 +80,11 @@ - (id)init
80
80
81
81
signImages = [[NSMutableDictionary alloc ] init ];
82
82
83
+ useMouseTime =
84
+ [[NSUserDefaults standardUserDefaults ] boolForKey: MMUseMouseTimeKey];
85
+ if (useMouseTime)
86
+ mouseDownTime = [[NSDate date ] retain ];
87
+
83
88
return self;
84
89
}
85
90
@@ -91,6 +96,7 @@ - (void)dealloc
91
96
[markedText release ]; markedText = nil ;
92
97
[markedTextAttributes release ]; markedTextAttributes = nil ;
93
98
[signImages release ]; signImages = nil ;
99
+ [mouseDownTime release ]; mouseDownTime = nil ;
94
100
95
101
#if (MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
96
102
if (asciiImSource) {
@@ -380,7 +386,21 @@ - (void)mouseDown:(NSEvent *)event
380
386
381
387
int button = [event buttonNumber ];
382
388
int flags = [event modifierFlags ];
383
- int count = [event clickCount ];
389
+ int repeat = 0 ;
390
+
391
+ if (useMouseTime) {
392
+ // Use Vim mouseTime option to handle multiple mouse down events
393
+ NSDate *now = [[NSDate date ] retain ];
394
+ id mouset = [[[self vimController ] vimState ] objectForKey: @" p_mouset" ];
395
+ NSTimeInterval interval =
396
+ [now timeIntervalSinceDate: mouseDownTime] * 1000.0 ;
397
+ if (interval < (NSTimeInterval )[mouset longValue ])
398
+ repeat = 1 ;
399
+ mouseDownTime = now;
400
+ } else {
401
+ repeat = [event clickCount ] > 1 ;
402
+ }
403
+
384
404
NSMutableData *data = [NSMutableData data ];
385
405
386
406
// If desired, intepret Ctrl-Click as a right mouse click.
@@ -398,7 +418,7 @@ - (void)mouseDown:(NSEvent *)event
398
418
[data appendBytes: &col length: sizeof (int )];
399
419
[data appendBytes: &button length: sizeof (int )];
400
420
[data appendBytes: &flags length: sizeof (int )];
401
- [data appendBytes: &count length: sizeof (int )];
421
+ [data appendBytes: &repeat length: sizeof (int )];
402
422
403
423
[[self vimController ] sendMessage: MouseDownMsgID data: data];
404
424
}
0 commit comments