diff --git a/AppKit/CPEvent.j b/AppKit/CPEvent.j index 80d931f76..4f309e350 100644 --- a/AppKit/CPEvent.j +++ b/AppKit/CPEvent.j @@ -179,7 +179,8 @@ CPDOMEventTouchCancel = "touchcancel"; var _CPEventPeriodicEventPeriod = 0, _CPEventPeriodicEventTimer = nil, - _CPEventUpperCaseRegex = new RegExp("[A-Z]"); + _CPEventUpperCaseRegex = new RegExp("[A-Z]"), + _CPEventStartupMilliseconds = new Date().getTime(); /*! @ingroup appkit @@ -209,6 +210,14 @@ var _CPEventPeriodicEventPeriod = 0, float _deltaZ; } +/*! + Returns the current time in fractional seconds since startup. +*/ ++ (CPTimeInterval)currentTimestamp +{ + return (new Date().getTime() - _CPEventStartupMilliseconds) / 1000; +} + /*! Creates a new keyboard event. @@ -389,7 +398,7 @@ var _CPEventPeriodicEventPeriod = 0, } /*! - Returns the time the event occurred. + Returns the time the event occurred in seconds since startup. */ - (CPTimeInterval)timestamp { diff --git a/AppKit/CPMenu/_CPMenuManager.j b/AppKit/CPMenu/_CPMenuManager.j index 2d3f67cb7..9b680674a 100644 --- a/AppKit/CPMenu/_CPMenuManager.j +++ b/AppKit/CPMenu/_CPMenuManager.j @@ -5,7 +5,7 @@ _CPMenuManagerScrollingStateUp = -1; _CPMenuManagerScrollingStateDown = 1; _CPMenuManagerScrollingStateNone = 0; -var STICKY_TIME_INTERVAL = 500, +var STICKY_TIME_INTERVAL = 0.5, SharedMenuManager = nil; @implementation _CPMenuManager: CPObject @@ -127,7 +127,7 @@ var STICKY_TIME_INTERVAL = 500, if (_keyBuffer) { - if (([CPDate date] - _startTime) > (STICKY_TIME_INTERVAL + [activeMenu numberOfItems] / 2)) + if (([anEvent timestamp] - _startTime) > (STICKY_TIME_INTERVAL + [activeMenu numberOfItems] / 2)) [self selectNextItemBeginningWith:_keyBuffer inMenu:menu clearBuffer:YES]; if (type === CPPeriodic) @@ -245,7 +245,7 @@ var STICKY_TIME_INTERVAL = 500, 3. The user clicks, drags and then releases. Tracking ends. */ - if (_mouseWasDragged || [anEvent timestamp] - _startTime > STICKY_TIME_INTERVAL) + if (_mouseWasDragged || ([anEvent timestamp] - _startTime > STICKY_TIME_INTERVAL)) { /* Close the menu if: diff --git a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j index 0c89d8684..076ec8f12 100644 --- a/AppKit/Platform/DOM/CPPlatformWindow+DOM.j +++ b/AppKit/Platform/DOM/CPPlatformWindow+DOM.j @@ -661,7 +661,7 @@ var ModifierKeyCodes = [ - (void)keyEvent:(DOMEvent)aDOMEvent { var event, - timestamp = aDOMEvent.timeStamp || new Date(), + timestamp = [CPEvent currentTimestamp], sourceElement = aDOMEvent.target || aDOMEvent.srcElement, windowNumber = [[CPApp keyWindow] windowNumber], modifierFlags = (aDOMEvent.shiftKey ? CPShiftKeyMask : 0) | @@ -871,11 +871,11 @@ var ModifierKeyCodes = [ { if ([self _validateCopyCutOrPasteEvent:aDOMEvent flags:CPPlatformActionKeyMask] && !_ignoreNativeCopyOrCutEvent) { - //we have to send out a fake copy or cut event so that we can force the copy/cut mechanisms to take place + // we have to send out a fake copy or cut event so that we can force the copy/cut mechanisms to take place var cut = aDOMEvent.type === "beforecut", keyCode = cut ? CPKeyCodes.X : CPKeyCodes.C, characters = cut ? "x" : "c", - timestamp = aDOMEvent.timeStamp ? aDOMEvent.timeStamp : new Date(), + timestamp = [CPEvent currentTimestamp], // fake event, might as well use current timestamp windowNumber = [[CPApp keyWindow] windowNumber], modifierFlags = CPPlatformActionKeyMask; @@ -1008,7 +1008,7 @@ var ModifierKeyCodes = [ var deltaX = 0.0, deltaY = 0.0, windowNumber = 0, - timestamp = aDOMEvent.timeStamp ? aDOMEvent.timeStamp : new Date(), + timestamp = [CPEvent currentTimestamp], modifierFlags = (aDOMEvent.shiftKey ? CPShiftKeyMask : 0) | (aDOMEvent.ctrlKey ? CPControlKeyMask : 0) | (aDOMEvent.altKey ? CPAlternateKeyMask : 0) | @@ -1135,7 +1135,7 @@ var ModifierKeyCodes = [ newEvent.clientX = touch.clientX; newEvent.clientY = touch.clientY; - newEvent.timestamp = aDOMEvent.timestamp; + newEvent.timestamp = [CPEvent currentTimestamp]; newEvent.target = aDOMEvent.target; newEvent.shiftKey = newEvent.ctrlKey = newEvent.altKey = newEvent.metaKey = false; @@ -1179,7 +1179,7 @@ var ModifierKeyCodes = [ var event, location = _CGPointMake(aDOMEvent.clientX, aDOMEvent.clientY), - timestamp = aDOMEvent.timeStamp ? aDOMEvent.timeStamp : new Date(), + timestamp = [CPEvent currentTimestamp], sourceElement = (aDOMEvent.target || aDOMEvent.srcElement), windowNumber = 0, modifierFlags = (aDOMEvent.shiftKey ? CPShiftKeyMask : 0) | diff --git a/Tests/AppKit/CPButtonTest.j b/Tests/AppKit/CPButtonTest.j index a859f69f1..eff7f75ec 100644 --- a/Tests/AppKit/CPButtonTest.j +++ b/Tests/AppKit/CPButtonTest.j @@ -41,11 +41,11 @@ [button setAction:@selector(clickMe:)]; [button setKeyEquivalent:"a"]; [button performKeyEquivalent:[CPEvent keyEventWithType:CPKeyUp location:CGPointMakeZero() modifierFlags:0 - timestamp:nil windowNumber:nil context:nil + timestamp:0 windowNumber:0 context:nil characters:"b" charactersIgnoringModifiers:"b" isARepeat:NO keyCode:0]]; [self assertFalse:wasClicked]; [button performKeyEquivalent:[CPEvent keyEventWithType:CPKeyUp location:CGPointMakeZero() modifierFlags:0 - timestamp:nil windowNumber:nil context:nil + timestamp:0 windowNumber:0 context:nil characters:"a" charactersIgnoringModifiers:"a" isARepeat:NO keyCode:0]]; [self assertTrue:wasClicked]; } @@ -57,11 +57,11 @@ [button setKeyEquivalent:"a"]; [button setKeyEquivalentModifierMask:CPAlternateKeyMask]; [button performKeyEquivalent:[CPEvent keyEventWithType:CPKeyUp location:CGPointMakeZero() modifierFlags:0 - timestamp:nil windowNumber:nil context:nil + timestamp:0 windowNumber:0 context:nil characters:"a" charactersIgnoringModifiers:"a" isARepeat:NO keyCode:0]]; [self assertFalse:wasClicked]; [button performKeyEquivalent:[CPEvent keyEventWithType:CPKeyUp location:CGPointMakeZero() modifierFlags:CPAlternateKeyMask - timestamp:nil windowNumber:nil context:nil + timestamp:0 windowNumber:0 context:nil characters:"a" charactersIgnoringModifiers:"a" isARepeat:NO keyCode:0]]; [self assertTrue:wasClicked]; } @@ -73,12 +73,12 @@ [button setKeyEquivalent:"A"]; [button performKeyEquivalent:[CPEvent keyEventWithType:CPKeyUp location:CGPointMakeZero() modifierFlags:0 - timestamp:nil windowNumber:nil context:nil + timestamp:0 windowNumber:0 context:nil characters:"a" charactersIgnoringModifiers:"a" isARepeat:NO keyCode:0]]; [self assertFalse:wasClicked]; [button performKeyEquivalent:[CPEvent keyEventWithType:CPKeyUp location:CGPointMakeZero() modifierFlags:CPShiftKeyMask - timestamp:nil windowNumber:nil context:nil + timestamp:0 windowNumber:0 context:nil characters:"A" charactersIgnoringModifiers:"a" isARepeat:NO keyCode:0]]; [self assertTrue:wasClicked]; } @@ -89,15 +89,15 @@ [button setAction:@selector(clickMe:)]; [button setKeyEquivalent:CPEscapeFunctionKey]; [button performKeyEquivalent:[CPEvent keyEventWithType:CPKeyUp location:CGPointMakeZero() modifierFlags:0 - timestamp:nil windowNumber:nil context:nil + timestamp:0 windowNumber:0 context:nil characters:CPDeleteCharacter charactersIgnoringModifiers:CPDeleteCharacter isARepeat:NO keyCode:0]]; [self assertFalse:wasClicked]; [button performKeyEquivalent:[CPEvent keyEventWithType:CPKeyUp location:CGPointMakeZero() modifierFlags:0 - timestamp:nil windowNumber:nil context:nil + timestamp:0 windowNumber:0 context:nil characters:"a" charactersIgnoringModifiers:"a" isARepeat:NO keyCode:0]]; [self assertFalse:wasClicked]; [button performKeyEquivalent:[CPEvent keyEventWithType:CPKeyUp location:CGPointMakeZero() modifierFlags:0 - timestamp:nil windowNumber:nil context:nil + timestamp:0 windowNumber:0 context:nil characters:CPEscapeFunctionKey charactersIgnoringModifiers:CPEscapeFunctionKey isARepeat:NO keyCode:0]]; [self assertTrue:wasClicked]; } diff --git a/Tests/AppKit/CPKeyEquivalentPerformance.j b/Tests/AppKit/CPKeyEquivalentPerformance.j index a6a509437..84ea9e7b1 100644 --- a/Tests/AppKit/CPKeyEquivalentPerformance.j +++ b/Tests/AppKit/CPKeyEquivalentPerformance.j @@ -34,7 +34,7 @@ [button2 setTarget:self]; [button2 setAction:@selector(clicked:)]; [button2 setKeyEquivalent:"a"]; - [button2 setKeyEquivalentModifierMask:CPAlternateKeyMask|CPCommandKeyMask]; + [button2 setKeyEquivalentModifierMask:CPAlternateKeyMask | CPCommandKeyMask]; button2.clicks = 0; [button3 setTarget:self]; @@ -45,16 +45,16 @@ var start = (new Date).getTime(); - for (var i=0; i