Fixed CPEvent -timestamp to return seconds since startup, as documented in Cocoa.

Miscellaneous cleanup of timestamp usage as well.
This commit is contained in:
Aparajita Fishman
2012-04-15 11:30:27 -04:00
parent 3f58c4ea6f
commit 5763ebdf2b
7 changed files with 53 additions and 44 deletions
+11 -2
View File
@@ -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
{
+3 -3
View File
@@ -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:
+6 -6
View File
@@ -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) |
+9 -9
View File
@@ -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];
}
+8 -8
View File
@@ -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<REPEATS; i++)
for (var i = 0; i < REPEATS; i++)
{
[theWindow sendEvent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPControlKeyMask
timestamp:nil windowNumber:nil context:nil
timestamp:0 windowNumber:0 context:nil
characters:"a" charactersIgnoringModifiers:"a" isARepeat:NO keyCode:0]];
[theWindow sendEvent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPAlternateKeyMask|CPCommandKeyMask
timestamp:nil windowNumber:nil context:nil
[theWindow sendEvent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPAlternateKeyMask | CPCommandKeyMask
timestamp:0 windowNumber:0 context:nil
characters:"a" charactersIgnoringModifiers:"a" isARepeat:NO keyCode:0]];
[theWindow sendEvent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPControlKeyMask|CPShiftKeyMask
timestamp:nil windowNumber:nil context:nil
[theWindow sendEvent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPControlKeyMask | CPShiftKeyMask
timestamp:0 windowNumber:0 context:nil
characters:"a" charactersIgnoringModifiers:"a" isARepeat:NO keyCode:0]];
}
@@ -73,4 +73,4 @@
sender.clicks++;
}
@end
@end
+10 -10
View File
@@ -74,7 +74,7 @@
if (!aMenu)
return;
for(var i=0; i<[aMenu numberOfItems]; i++)
for (var i = 0; i < [aMenu numberOfItems]; i++)
{
var item = [aMenu itemAtIndex:i];
[item setTarget:self];
@@ -88,24 +88,24 @@
// Don't match anything.
[menu performKeyEquivalent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPPlatformActionKeyMask
timestamp:nil windowNumber:nil context:nil
timestamp:0 windowNumber:0 context:nil
characters:"b" charactersIgnoringModifiers:"b" isARepeat:NO keyCode:0]];
[self assertFalse:escapeWasCalled || escapeNoModifierWasCalled || openDocumentWasCalled || undoWasCalled];
[menu performKeyEquivalent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:0
timestamp:nil windowNumber:nil context:nil
timestamp:0 windowNumber:0 context:nil
characters:"o" charactersIgnoringModifiers:"o" isARepeat:NO keyCode:0]];
[self assertFalse:escapeWasCalled || escapeNoModifierWasCalled || openDocumentWasCalled || undoWasCalled];
[menu performKeyEquivalent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPPlatformActionKeyMask
timestamp:nil windowNumber:nil context:nil
timestamp:0 windowNumber:0 context:nil
characters:"o" charactersIgnoringModifiers:"o" isARepeat:NO keyCode:0]];
[self assertFalse:escapeWasCalled || escapeNoModifierWasCalled || undoWasCalled];
[self assertTrue:openDocumentWasCalled message:"expect openDocumentWasCalled"];
openDocumentWasCalled = NO;
[menu performKeyEquivalent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPPlatformActionKeyMask
timestamp:nil windowNumber:nil context:nil
timestamp:0 windowNumber:0 context:nil
characters:CPUndoKeyEquivalent charactersIgnoringModifiers:CPUndoKeyEquivalent isARepeat:NO keyCode:0]];
[self assertFalse:escapeWasCalled || escapeNoModifierWasCalled || openDocumentWasCalled];
[self assertTrue:undoWasCalled];
@@ -116,7 +116,7 @@
[self _retarget:menu];
[menu performKeyEquivalent:[CPEvent keyEventWithType:CPKeyDown 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 assertFalse:escapeWasCalled || openDocumentWasCalled || undoWasCalled];
[self assertTrue:escapeNoModifierWasCalled];
@@ -124,7 +124,7 @@
escapeNoModifierWasCalled = NO;
[menu performKeyEquivalent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPPlatformActionKeyMask
timestamp:nil windowNumber:nil context:nil
timestamp:0 windowNumber:0 context:nil
characters:CPEscapeFunctionKey charactersIgnoringModifiers:CPEscapeFunctionKey isARepeat:NO keyCode:0]];
[self assertFalse:escapeNoModifierWasCalled || openDocumentWasCalled || undoWasCalled];
[self assertTrue:escapeWasCalled];
@@ -135,15 +135,15 @@
[self _retarget:menu];
[menu performKeyEquivalent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPPlatformActionKeyMask
timestamp:nil windowNumber:nil context:nil
timestamp:0 windowNumber:0 context:nil
characters:@"s" charactersIgnoringModifiers:@"s" isARepeat:NO keyCode:0]];
[self assertFalse:escapeWasCalled || escapeNoModifierWasCalled || openDocumentWasCalled || saveDocumentAsWasCalled || undoWasCalled];
[self assertTrue:saveDocumentWasCalled message:"saveDocumentWasCalled"];
saveDocumentWasCalled = NO;
[menu performKeyEquivalent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPPlatformActionKeyMask|CPShiftKeyMask
timestamp:nil windowNumber:nil context:nil
[menu performKeyEquivalent:[CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPPlatformActionKeyMask | CPShiftKeyMask
timestamp:0 windowNumber:0 context:nil
characters:@"s" charactersIgnoringModifiers:@"s" isARepeat:NO keyCode:0]];
[self assertFalse:escapeWasCalled || escapeNoModifierWasCalled || openDocumentWasCalled || saveDocumentWasCalled || undoWasCalled];
[self assertTrue:saveDocumentAsWasCalled message:"saveDocumentAsWasCalled"];
+6 -6
View File
@@ -34,15 +34,15 @@
CPKeyCodes.TAB, CPTabCharacter, @selector(insertTab:)
];
for (var i=0; i<tests.length; i += 3)
for (var i = 0; i < tests.length; i += 3)
{
var keyCode = tests[i],
character = tests[i+1],
selector = tests[i+2];
character = tests[i + 1],
selector = tests[i + 2];
responder.doCommandCalls = [];
keyEvent = [CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:0
timestamp:nil windowNumber:nil context:nil
timestamp:0 windowNumber:0 context:nil
characters:character charactersIgnoringModifiers:character isARepeat:NO keyCode:keyCode];
[responder interpretKeyEvents:[keyEvent]];
[self assert:[selector] equals:responder.doCommandCalls];
@@ -53,7 +53,7 @@
{
responder.doCommandCalls = [];
keyEvent = [CPEvent keyEventWithType:CPKeyDown location:CGPointMakeZero() modifierFlags:CPShiftKeyMask
timestamp:nil windowNumber:nil context:nil
timestamp:0 windowNumber:0 context:nil
characters:CPLeftArrowFunctionKey charactersIgnoringModifiers:CPLeftArrowFunctionKey isARepeat:NO keyCode:CPKeyCodes.LEFT];
[responder interpretKeyEvents:[keyEvent]];
[self assert:[@selector(moveLeftAndModifySelection:)] equals:responder.doCommandCalls];
@@ -72,4 +72,4 @@
[super doCommandBySelector:aSelector];
}
@end
@end