mirror of
https://github.com/cappuccino/cappuccino.git
synced 2026-08-25 04:57:03 +00:00
Fixed CPEvent -timestamp to return seconds since startup, as documented in Cocoa.
Miscellaneous cleanup of timestamp usage as well.
This commit is contained in:
+11
-2
@@ -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
|
||||
{
|
||||
|
||||
@@ -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:
|
||||
|
||||
@@ -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) |
|
||||
|
||||
@@ -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];
|
||||
}
|
||||
|
||||
@@ -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
@@ -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"];
|
||||
|
||||
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user