From 3fe5ec5d6da99d2ae5188b3ee263b60155eacbe1 Mon Sep 17 00:00:00 2001 From: Aparajita Fishman Date: Sun, 22 May 2011 18:05:08 -0700 Subject: [PATCH] Fixed set of keys that can be considered a key equivalent, removed redundant call to performKeyEquivalent, test app --- AppKit/CPEvent.j | 27 +- AppKit/CPTextField.j | 3 - .../performKeyEquivalentTest/AppController.j | 133 ++++++ .../performKeyEquivalentTest/Info.plist | 10 + .../Manual/performKeyEquivalentTest/Jakefile | 94 ++++ .../Resources/MainMenu.cib | 1 + .../Resources/MainMenu.xib | 423 ++++++++++++++++++ .../Resources/spinner.gif | Bin 0 -> 1849 bytes .../performKeyEquivalentTest/index-debug.html | 103 +++++ .../performKeyEquivalentTest/index.html | 77 ++++ Tests/Manual/performKeyEquivalentTest/main.j | 18 + 11 files changed, 867 insertions(+), 22 deletions(-) create mode 100644 Tests/Manual/performKeyEquivalentTest/AppController.j create mode 100644 Tests/Manual/performKeyEquivalentTest/Info.plist create mode 100644 Tests/Manual/performKeyEquivalentTest/Jakefile create mode 100644 Tests/Manual/performKeyEquivalentTest/Resources/MainMenu.cib create mode 100644 Tests/Manual/performKeyEquivalentTest/Resources/MainMenu.xib create mode 100644 Tests/Manual/performKeyEquivalentTest/Resources/spinner.gif create mode 100644 Tests/Manual/performKeyEquivalentTest/index-debug.html create mode 100644 Tests/Manual/performKeyEquivalentTest/index.html create mode 100644 Tests/Manual/performKeyEquivalentTest/main.j diff --git a/AppKit/CPEvent.j b/AppKit/CPEvent.j index db54f5fbc..898d15182 100644 --- a/AppKit/CPEvent.j +++ b/AppKit/CPEvent.j @@ -573,27 +573,17 @@ var _CPEventPeriodicEventPeriod = 0, for (var i = 0; i < characterCount; i++) { - switch (_characters.charAt(i)) + var c = _characters.charAt(i); + + if ((c >= CPUpArrowFunctionKey && c <= CPModeSwitchFunctionKey) || + c === CPEnterCharacter || + c === CPNewlineCharacter || + c === CPCarriageReturnCharacter) { - case CPBackspaceCharacter: - case CPDeleteCharacter: - case CPDeleteFunctionKey: - case CPTabCharacter: - case CPCarriageReturnCharacter: - case CPNewlineCharacter: - case CPSpaceFunctionKey: - case CPEscapeFunctionKey: - case CPPageUpFunctionKey: - case CPPageDownFunctionKey: - case CPLeftArrowFunctionKey: - case CPUpArrowFunctionKey: - case CPRightArrowFunctionKey: - case CPDownArrowFunctionKey: - case CPEndFunctionKey: - case CPHomeFunctionKey: - return YES; + return YES; } } + // FIXME: More cases? return NO; } @@ -651,4 +641,3 @@ function _CPEventFromNativeMouseEvent(aNativeEvent, anEventType, aPoint, modifie return aNativeEvent; } - diff --git a/AppKit/CPTextField.j b/AppKit/CPTextField.j index eee5dfd95..46670e4d2 100644 --- a/AppKit/CPTextField.j +++ b/AppKit/CPTextField.j @@ -704,9 +704,6 @@ CPTextFieldStatePlaceholder = CPThemeState("placeholder"); - (void)keyDown:(CPEvent)anEvent { - if ([anEvent _couldBeKeyEquivalent] && [self performKeyEquivalent:anEvent]) - return; - // CPTextField uses an HTML input element to take the input so we need to // propagate the dom event so the element is updated. This has to be done // before interpretKeyEvents: though so individual commands have a chance diff --git a/Tests/Manual/performKeyEquivalentTest/AppController.j b/Tests/Manual/performKeyEquivalentTest/AppController.j new file mode 100644 index 000000000..e1c10eaaa --- /dev/null +++ b/Tests/Manual/performKeyEquivalentTest/AppController.j @@ -0,0 +1,133 @@ +/* + * AppController.j + * performKeyEquivalentTest + * + * Created by aparajita on May 22, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +@import +@import + + +var usesNewCode = YES; + +@implementation AppController : CPObject +{ + CPWindow theWindow; //this "outlet" is connected automatically by the Cib + CPCheckBox useNewCode; +} + +- (void)applicationDidFinishLaunching:(CPNotification)aNotification +{ + // This is called when the application is done loading. +} + +- (void)awakeFromCib +{ + // This is called when the cib is done loading. + // You can implement this method on any object instantiated from a Cib. + // It's a useful hook for setting up current UI values, and other things. + + // In this case, we want the window from Cib to become our full browser window + [theWindow setFullPlatformWindow:YES]; +} + +- (void)setUsesNewCode:(id)sender +{ + usesNewCode = [sender state] === CPOnState; +} + +@end + +@implementation MyTextField : CPTextField + +- (void)keyDown:(CPEvent)anEvent +{ + CPLog("keyDown:%s", [self description]); + + if (!usesNewCode) + { + if ([anEvent _couldBeKeyEquivalent] && [self performKeyEquivalent:anEvent]) + return; + } + + // CPTextField uses an HTML input element to take the input so we need to + // propagate the dom event so the element is updated. This has to be done + // before interpretKeyEvents: though so individual commands have a chance + // to override this (escape to clear the text in a search field for example). + [[[self window] platformWindow] _propagateCurrentDOMEvent:YES]; + + [self interpretKeyEvents:[anEvent]]; + + [[CPRunLoop currentRunLoop] limitDateForMode:CPDefaultRunLoopMode]; +} + +- (BOOL)performKeyEquivalent:(CPEvent)anEvent +{ + CPLog("performKeyEquivalent:%s", [self description]); + + return [super performKeyEquivalent:anEvent]; +} + +@end + +@implementation CPEvent (test) + +- (BOOL)_couldBeKeyEquivalent +{ + if (_type !== CPKeyDown) + return NO; + + var characterCount = _characters.length; + + if (!characterCount) + return NO; + + if (_modifierFlags & (CPCommandKeyMask | CPControlKeyMask)) + return YES; + + for (var i = 0; i < characterCount; i++) + { + if (usesNewCode) + { + var c = _characters.charAt(i); + + if ((c >= CPUpArrowFunctionKey && c <= CPModeSwitchFunctionKey) || + c === CPEnterCharacter || + c === CPNewlineCharacter || + c === CPCarriageReturnCharacter) + { + return YES; + } + } + else + { + switch (_characters.charAt(i)) + { + case CPBackspaceCharacter: + case CPDeleteCharacter: + case CPDeleteFunctionKey: + case CPTabCharacter: + case CPCarriageReturnCharacter: + case CPNewlineCharacter: + case CPSpaceFunctionKey: + case CPEscapeFunctionKey: + case CPPageUpFunctionKey: + case CPPageDownFunctionKey: + case CPLeftArrowFunctionKey: + case CPUpArrowFunctionKey: + case CPRightArrowFunctionKey: + case CPDownArrowFunctionKey: + case CPEndFunctionKey: + case CPHomeFunctionKey: + return YES; + } + } + } + + // FIXME: More cases? + return NO; +} + +@end diff --git a/Tests/Manual/performKeyEquivalentTest/Info.plist b/Tests/Manual/performKeyEquivalentTest/Info.plist new file mode 100644 index 000000000..e15257f6e --- /dev/null +++ b/Tests/Manual/performKeyEquivalentTest/Info.plist @@ -0,0 +1,10 @@ + + + + + Main cib file base name + MainMenu.cib + CPBundleName + performKeyEquivalentTest + + diff --git a/Tests/Manual/performKeyEquivalentTest/Jakefile b/Tests/Manual/performKeyEquivalentTest/Jakefile new file mode 100644 index 000000000..2107ff75e --- /dev/null +++ b/Tests/Manual/performKeyEquivalentTest/Jakefile @@ -0,0 +1,94 @@ +/* + * Jakefile + * performKeyEquivalentTest + * + * Created by aparajita on May 22, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +var ENV = require("system").env, + FILE = require("file"), + JAKE = require("jake"), + task = JAKE.task, + FileList = JAKE.FileList, + app = require("cappuccino/jake").app, + configuration = ENV["CONFIG"] || ENV["CONFIGURATION"] || ENV["c"] || "Debug", + OS = require("os"); + +app ("performKeyEquivalentTest", function(task) +{ + task.setBuildIntermediatesPath(FILE.join("Build", "performKeyEquivalentTest.build", configuration)); + task.setBuildPath(FILE.join("Build", configuration)); + + task.setProductName("performKeyEquivalentTest"); + task.setIdentifier("com.aparajita.performKeyEquivalentTest"); + task.setVersion("1.0"); + task.setAuthor("Victory-Heart Productions"); + task.setEmail("feedback @nospam@ yourcompany.com"); + task.setSummary("performKeyEquivalentTest"); + task.setSources((new FileList("**/*.j")).exclude(FILE.join("Build", "**"))); + task.setResources(new FileList("Resources/**")); + task.setIndexFilePath("index.html"); + task.setInfoPlistPath("Info.plist"); + task.setNib2CibFlags("-R Resources/"); + + if (configuration === "Debug") + task.setCompilerFlags("-DDEBUG -g"); + else + task.setCompilerFlags("-O"); +}); + +task ("default", ["performKeyEquivalentTest"], function() +{ + printResults(configuration); +}); + +task ("build", ["default"]); + +task ("debug", function() +{ + ENV["CONFIGURATION"] = "Debug"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("release", function() +{ + ENV["CONFIGURATION"] = "Release"; + JAKE.subjake(["."], "build", ENV); +}); + +task ("run", ["debug"], function() +{ + OS.system(["open", FILE.join("Build", "Debug", "performKeyEquivalentTest", "index.html")]); +}); + +task ("run-release", ["release"], function() +{ + OS.system(["open", FILE.join("Build", "Release", "performKeyEquivalentTest", "index.html")]); +}); + +task ("deploy", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Deployment", "performKeyEquivalentTest")); + OS.system(["press", "-f", FILE.join("Build", "Release", "performKeyEquivalentTest"), FILE.join("Build", "Deployment", "performKeyEquivalentTest")]); + printResults("Deployment") +}); + +task ("desktop", ["release"], function() +{ + FILE.mkdirs(FILE.join("Build", "Desktop", "performKeyEquivalentTest")); + require("cappuccino/nativehost").buildNativeHost(FILE.join("Build", "Release", "performKeyEquivalentTest"), FILE.join("Build", "Desktop", "performKeyEquivalentTest", "performKeyEquivalentTest.app")); + printResults("Desktop") +}); + +task ("run-desktop", ["desktop"], function() +{ + OS.system([FILE.join("Build", "Desktop", "performKeyEquivalentTest", "performKeyEquivalentTest.app", "Contents", "MacOS", "NativeHost"), "-i"]); +}); + +function printResults(configuration) +{ + print("----------------------------"); + print(configuration+" app built at path: "+FILE.join("Build", configuration, "performKeyEquivalentTest")); + print("----------------------------"); +} diff --git a/Tests/Manual/performKeyEquivalentTest/Resources/MainMenu.cib b/Tests/Manual/performKeyEquivalentTest/Resources/MainMenu.cib new file mode 100644 index 000000000..d5a053755 --- /dev/null +++ b/Tests/Manual/performKeyEquivalentTest/Resources/MainMenu.cib @@ -0,0 +1 @@ +280NPLIST;1.0;D;K;4;$topD;K;18;CPCibObjectDataKeyD;K;6;CP$UIDd;1;2E;E;K;8;$objectsA;S;5;$nullD;K;10;$classnameS;16;_CPCibObjectDataK;8;$classesA;S;16;_CPCibObjectDataS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;1E;K;28;_CPCibObjectDataNamesKeysKeyD;K;6;CP$UIDd;1;4E;K;30;_CPCibObjectDataNamesValuesKeyD;K;6;CP$UIDd;1;5E;K;30;_CPCibObjectDataClassesKeysKeyD;K;6;CP$UIDd;1;6E;K;32;_CPCibObjectDataClassesValuesKeyD;K;6;CP$UIDd;1;7E;K;30;_CPCibObjectDataConnectionsKeyD;K;6;CP$UIDd;1;8E;K;28;_CPCibObjectDataFrameworkKeyD;K;6;CP$UIDd;1;9E;K;26;_CPCibObjectDataNextOidKeyD;K;6;CP$UIDd;2;10E;K;30;_CPCibObjectDataObjectsKeysKeyD;K;6;CP$UIDd;2;11E;K;32;_CPCibObjectDataObjectsValuesKeyD;K;6;CP$UIDd;2;12E;K;26;_CPCibObjectDataOidKeysKeyD;K;6;CP$UIDd;2;13E;K;28;_CPCibObjectDataOidValuesKeyD;K;6;CP$UIDd;2;14E;K;28;_CPCibObjectDataFileOwnerKeyD;K;6;CP$UIDd;2;16E;K;33;_CPCibObjectDataVisibleWindowsKeyD;K;6;CP$UIDd;2;18E;E;D;K;10;$classnameS;7;CPArrayK;8;$classesA;S;7;CPArrayS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;2;29E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;30E;D;K;6;CP$UIDd;2;31E;D;K;6;CP$UIDd;2;32E;D;K;6;CP$UIDd;2;33E;D;K;6;CP$UIDd;2;34E;D;K;6;CP$UIDd;2;35E;D;K;6;CP$UIDd;2;36E;D;K;6;CP$UIDd;2;37E;D;K;6;CP$UIDd;2;38E;D;K;6;CP$UIDd;2;39E;D;K;6;CP$UIDd;2;40E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;41E;D;K;6;CP$UIDd;2;41E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;43E;D;K;6;CP$UIDd;2;44E;D;K;6;CP$UIDd;2;45E;D;K;6;CP$UIDd;2;47E;E;E;S;16;IBCocoaFrameworkD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;27E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;1;0E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;26E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;29E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;25E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;29E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;16E;D;K;6;CP$UIDd;2;23E;D;K;6;CP$UIDd;2;16E;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;E;E;D;K;10;$classnameS;18;_CPCibCustomObjectK;8;$classesA;S;18;_CPCibCustomObjectS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;48E;E;D;K;10;$classnameS;5;CPSetK;8;$classesA;S;5;CPSetS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;17E;K;15;CPSetObjectsKeyD;K;6;CP$UIDd;2;49E;E;D;K;10;$classnameS;18;_CPCibClassSwapperK;8;$classesA;S;18;_CPCibClassSwapperS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;50E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;51E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;52E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;53E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;54E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;55E;K;6;$afontD;K;6;CP$UIDd;2;57E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;58E;K;11;$aalignmentD;K;6;CP$UIDd;2;59E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;60E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;61E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;62E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;60E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;60E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;60E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;64E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;58E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;59E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibClassSwapperClassNameKeyD;K;6;CP$UIDd;2;41E;K;38;_CPCibClassSwapperOriginalClassNameKeyD;K;6;CP$UIDd;2;65E;E;D;K;6;$classD;K;6;CP$UIDd;2;19E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;50E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;66E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;52E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;53E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;54E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;55E;K;6;$afontD;K;6;CP$UIDd;2;57E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;58E;K;11;$aalignmentD;K;6;CP$UIDd;2;59E;K;35;CPControlSendsActionOnEndEditingKeyD;K;6;CP$UIDd;2;60E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;61E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;62E;K;24;CPTextFieldIsEditableKeyD;K;6;CP$UIDd;2;60E;K;26;CPTextFieldIsSelectableKeyD;K;6;CP$UIDd;2;60E;K;29;CPTextFieldDrawsBackgroundKeyD;K;6;CP$UIDd;2;60E;K;29;CPTextFieldBackgroundColorKeyD;K;6;CP$UIDd;2;64E;K;27;CPTextFieldLineBreakModeKeyD;K;6;CP$UIDd;2;58E;K;23;CPTextFieldAlignmentKeyD;K;6;CP$UIDd;2;59E;K;31;CPTextFieldPlaceholderStringKeyD;K;6;CP$UIDd;1;0E;K;30;_CPCibClassSwapperClassNameKeyD;K;6;CP$UIDd;2;41E;K;38;_CPCibClassSwapperOriginalClassNameKeyD;K;6;CP$UIDd;2;65E;E;D;K;10;$classnameS;6;CPViewK;8;$classesA;S;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;22E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;50E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;67E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;67E;K;17;CPViewSubviewsKeyD;K;6;CP$UIDd;2;68E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;1;0E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;69E;E;D;K;10;$classnameS;10;CPCheckBoxK;8;$classesA;S;10;CPCheckBoxS;8;CPButtonS;9;CPControlS;6;CPViewS;11;CPResponderS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;24E;K;27;CPResponderNextResponderKeyD;K;6;CP$UIDd;2;23E;K;18;CPResponderMenuKeyD;K;6;CP$UIDd;1;0E;K;12;CPViewTagKeyD;K;6;CP$UIDd;2;50E;K;14;CPViewFrameKeyD;K;6;CP$UIDd;2;70E;K;15;CPViewBoundsKeyD;K;6;CP$UIDd;2;71E;K;18;CPViewSuperviewKeyD;K;6;CP$UIDd;2;23E;K;22;CPViewAutoresizingMaskD;K;6;CP$UIDd;2;53E;K;19;CPViewThemeClassKeyD;K;6;CP$UIDd;2;72E;K;19;CPViewThemeStateKeyD;K;6;CP$UIDd;2;73E;K;16;$aimage-positionD;K;6;CP$UIDd;2;58E;K;6;$afontD;K;6;CP$UIDd;2;57E;K;17;$aline-break-modeD;K;6;CP$UIDd;2;50E;K;11;$aalignmentD;K;6;CP$UIDd;2;50E;K;17;CPControlValueKeyD;K;6;CP$UIDd;2;74E;K;24;CPControlSendActionOnKeyD;K;6;CP$UIDd;2;59E;K;16;CPButtonTitleKeyD;K;6;CP$UIDd;2;75E;K;25;CPButtonAlternateTitleKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonAllowsMixedStateKeyD;K;6;CP$UIDd;2;76E;K;32;CPButtonImageDimsWhenDisabledKeyD;K;6;CP$UIDd;1;0E;K;24;CPButtonImagePositionKeyD;K;6;CP$UIDd;2;58E;K;28;CPButtonKeyEquivalentMaskKeyD;K;6;CP$UIDd;2;50E;K;24;CPButtonPeriodicDelayKeyD;K;6;CP$UIDd;1;0E;K;27;CPButtonPeriodicIntervalKeyD;K;6;CP$UIDd;1;0E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;48E;E;D;K;6;$classD;K;6;CP$UIDd;2;15E;K;27;_CPCibCustomObjectClassNameD;K;6;CP$UIDd;2;77E;E;D;K;10;$classnameS;20;_CPCibWindowTemplateK;8;$classesA;S;20;_CPCibWindowTemplateS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;28E;K;30;_CPCibWindowTemplateMaxSizeKeyD;K;6;CP$UIDd;2;78E;K;32;_CPCibWindowTemplateViewClassKeyD;K;6;CP$UIDd;1;0E;K;34;_CPCibWindowTemplateWindowClassKeyD;K;6;CP$UIDd;2;79E;K;33;_CPCibWindowTemplateWindowRectKeyD;K;6;CP$UIDd;2;80E;K;30;_CPCibWindowTempatStyleMaskKeyD;K;6;CP$UIDd;2;81E;K;34;_CPCibWindowTemplateWindowTitleKeyD;K;6;CP$UIDd;2;82E;K;33;_CPCibWindowTemplateWindowViewKeyD;K;6;CP$UIDd;2;23E;E;S;15;My Text Field-1S;26;Button Cell (Use new code)S;13;My Text FieldS;17;Text Field Cell-1S;15;Text Field CellS;12;Content ViewS;12;File's OwnerS;24;Check Box (Use new code)S;11;ApplicationS;14;App ControllerS;15;Window (Window)S;11;MyTextFieldD;K;10;$classnameS;20;CPCibOutletConnectorK;8;$classesA;S;20;CPCibOutletConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;16E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;27E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;83E;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;27E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;29E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;84E;E;D;K;6;$classD;K;6;CP$UIDd;2;42E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;27E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;25E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;85E;E;D;K;10;$classnameS;21;CPCibControlConnectorK;8;$classesA;S;21;CPCibControlConnectorS;14;CPCibConnectorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;46E;K;24;_CPCibConnectorSourceKeyD;K;6;CP$UIDd;2;25E;K;29;_CPCibConnectorDestinationKeyD;K;6;CP$UIDd;2;27E;K;23;_CPCibConnectorLabelKeyD;K;6;CP$UIDd;2;86E;E;S;13;CPApplicationD;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;29E;E;E;d;1;0S;23;{{186, 147}, {104, 29}}S;19;{{0, 0}, {104, 29}}d;2;36S;9;textfieldS;19;bezeled+placeholderD;K;10;$classnameS;6;CPFontK;8;$classesA;S;6;CPFontS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;56E;K;13;CPFontNameKeyD;K;6;CP$UIDd;2;87E;K;13;CPFontSizeKeyD;K;6;CP$UIDd;2;88E;K;15;CPFontIsBoldKeyD;K;6;CP$UIDd;2;76E;K;17;CPFontIsItalicKeyD;K;6;CP$UIDd;2;76E;E;d;1;2d;1;4T;S;0;d;4;3072D;K;10;$classnameS;7;CPColorK;8;$classesA;S;7;CPColorS;8;CPObjectE;E;D;K;6;$classD;K;6;CP$UIDd;2;63E;K;20;CPColorComponentsKeyD;K;6;CP$UIDd;2;89E;E;S;11;CPTextFieldS;22;{{186, 94}, {104, 29}}S;20;{{0, 0}, {480, 360}}D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;21E;D;K;6;CP$UIDd;2;20E;D;K;6;CP$UIDd;2;25E;E;E;S;6;normalS;23;{{190, 214}, {109, 18}}S;19;{{0, 0}, {109, 18}}S;9;check-boxS;8;selectedd;1;1S;12;Use new codeF;S;13;AppControllerS;28;{1.79769e+308, 1.79769e+308}S;8;CPWindowS;24;{{335, 128}, {480, 360}}d;1;7S;6;WindowS;8;delegateS;9;theWindowS;10;useNewCodeS;15;setUsesNewCode:S;17;Arial, sans-serifd;2;12D;K;6;$classD;K;6;CP$UIDd;1;3E;K;10;CP.objectsA;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;D;K;6;CP$UIDd;2;74E;E;E;E;K;9;$archiverS;15;CPKeyedArchiverK;8;$versionS;6;100000E; \ No newline at end of file diff --git a/Tests/Manual/performKeyEquivalentTest/Resources/MainMenu.xib b/Tests/Manual/performKeyEquivalentTest/Resources/MainMenu.xib new file mode 100644 index 000000000..d532b9d6f --- /dev/null +++ b/Tests/Manual/performKeyEquivalentTest/Resources/MainMenu.xib @@ -0,0 +1,423 @@ + + + + 1050 + 10J869 + 804 + 1038.35 + 461.00 + + com.apple.InterfaceBuilder.CocoaPlugin + 804 + + + YES + + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + + + PluginDependencyRecalculationVersion + + + + YES + + NSApplication + + + FirstResponder + + + NSApplication + + + 7 + 2 + {{335, 390}, {480, 360}} + 1946157056 + Window + NSWindow + + {1.79769e+308, 1.79769e+308} + + + 256 + + YES + + + 268 + {{192, 240}, {96, 22}} + + YES + + -1804468671 + 272630784 + + + LucidaGrande + 13 + 1044 + + + YES + + 6 + System + textBackgroundColor + + 3 + MQA + + + + 6 + System + textColor + + 3 + MAA + + + + + + + 268 + {{192, 187}, {96, 22}} + + YES + + -1804468671 + 272630784 + + + + YES + + + + + + + 268 + {{190, 128}, {109, 18}} + + YES + + -2080244224 + 0 + Use new code + + + 1211912703 + 2 + + NSImage + NSSwitch + + + NSSwitch + + + + 200 + 25 + + + + {480, 360} + + + {{0, 0}, {1440, 878}} + {1.79769e+308, 1.79769e+308} + + + AppController + + + + + YES + + + delegate + + + + 451 + + + + theWindow + + + + 459 + + + + useNewCode + + + + 465 + + + + setUsesNewCode: + + + + 466 + + + + + YES + + 0 + + YES + + + + + + -2 + + + File's Owner + + + -1 + + + First Responder + + + -3 + + + Application + + + 371 + + + YES + + + + + + 372 + + + YES + + + + + + + + 450 + + + + + 456 + + + YES + + + + + + 457 + + + + + 460 + + + YES + + + + + + 461 + + + + + 462 + + + YES + + + + + + 463 + + + + + + + YES + + YES + -3.IBPluginDependency + 371.IBEditorWindowLastContentRect + 371.IBPluginDependency + 371.IBWindowTemplateEditedContentRect + 371.NSWindowTemplate.visibleAtLaunch + 371.editorWindowContentRectSynchronizationRect + 372.IBPluginDependency + 456.CustomClassName + 456.IBPluginDependency + 456.IBViewBoundsToFrameTransform + 457.IBPluginDependency + 460.CustomClassName + 460.IBPluginDependency + 460.IBViewBoundsToFrameTransform + 461.IBPluginDependency + 462.IBPluginDependency + 462.IBViewBoundsToFrameTransform + 463.IBPluginDependency + + + YES + com.apple.InterfaceBuilder.CocoaPlugin + {{511, 723}, {480, 360}} + com.apple.InterfaceBuilder.CocoaPlugin + {{511, 723}, {480, 360}} + + {{33, 99}, {480, 360}} + com.apple.InterfaceBuilder.CocoaPlugin + MyTextField + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDQAAAw1MAAA + + com.apple.InterfaceBuilder.CocoaPlugin + MyTextField + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDQAAAwx4AAA + + com.apple.InterfaceBuilder.CocoaPlugin + com.apple.InterfaceBuilder.CocoaPlugin + + P4AAAL+AAABDUAAAwwgAAA + + com.apple.InterfaceBuilder.CocoaPlugin + + + + YES + + + YES + + + + + YES + + + YES + + + + 466 + + + + YES + + AppController + + theWindow + NSWindow + + + theWindow + + theWindow + NSWindow + + + + IBProjectSource + ./Classes/AppController.h + + + + AppController + + setUsesNewCode: + id + + + setUsesNewCode: + + setUsesNewCode: + id + + + + useNewCode + id + + + useNewCode + + useNewCode + id + + + + IBUserSource + + + + + MyTextField + NSTextField + + IBUserSource + + + + + + 0 + IBCocoaFramework + + com.apple.InterfaceBuilder.CocoaPlugin.macosx + + + + com.apple.InterfaceBuilder.CocoaPlugin.InterfaceBuilder3 + + + YES + + 3 + + NSSwitch + {15, 15} + + + diff --git a/Tests/Manual/performKeyEquivalentTest/Resources/spinner.gif b/Tests/Manual/performKeyEquivalentTest/Resources/spinner.gif new file mode 100644 index 0000000000000000000000000000000000000000..06dbc2bc21dddcf0e09b566d5b211aee89570f52 GIT binary patch literal 1849 zcma*odr(tX9tZHtz31lM+(&Y`A`Ou`NeG&R#DrIfV%?hng21vs6v>ooRQQFbk7E_K!V( z{?5!fpZWgIZ%*d6t%i*j24bL}AZUJm9)h6R*;%L4IWse3G#VWaN1#$zSSXcBhlYlH zJ|D}n{r&w2f+Qp)SS*&n?*G4}{}!h?td_mjU6Kad-rW*QwWYCUk7d^e+sjpZAn6kT z5rM;`{~_}-wm+L@%+E;JphLm}C3WzQAQD0wBoY|rOTQX{(@pp-WAA8Iw0HKl|15j) zhGh(SFWu#5zUCw^T!}C~eC}~?{xG-r7ugQC>taC+|L^xr&a%{#cgUOZXIM&v?)k^2 z1i5%0!U00wq)r4vlAwXBA_m5J5WNeuBm-XJQ5pG4GD%vc|K){+TJ{AkHqN@SJKczX zU}QRd9n*_bf^h94)6Ctv{CUfz_;qs#RDuQ$DR%y1&5G-a6rhf*4Y zl+UOD1*GE{GQ7vv;c-tTIMkz0ovO>9j%b5hpa@a*CBJ#W!0@ndSwF|%hMkdFtXiU) z`BEp+yhkt8ZY>tg&uyH@%^%K4jDrbA;et&vnnzZ3z22@e6<27z2Vk13kb7OtISyxv z(XoO-LNQCZe3lfzc%*pNqU<9T+p~teThOEB+~e&U0mC|zS{Q)dJZ)!^1f7L(zg*L> z*vSW%?dR~@@0(}x6-V^A`~ImD;)NaBUnP8;RH=bS2@pk`wp>>8r&jGjmGPy%1BW}v zoPo}ca$~bze@efc3kapuEVW1!%teOZT3j2Tw5=hjiAf02d}7dL0oFC%@=RXp5Ow#% z@a>+AM|YWt$n&e`>sB-32gBcuTi>R>*|8@lp`y6thc7ydyqDsuUn~YzZf|{-R@-3y zL#wx{Ii}xxL_csiW*LBn0-A$>zp4WOmkf6=ilrjlW?-l9+bCd7|i?*b5NTmy<<6NZ0T8$SN@mwdC2f z6jqK=N@bS@!=YSj%>h0}*4p+%0HbTIrE$w7UMT6+AZZ&DAo*qZAAi(OtNbIfl#Dw^ zJWeiCp~zi#&t6x}m9)O^eR4HiLV3QA<<0>HZ8%$^lrSE94Wb}=+MM^!b>n#5&-JQR zkr-CEu9C;_F*7DqDisulV6Pmg$nFL0TPn%~*m^-`Z3^BgU(sNpnx%nW(!eV9A&FvI zHL3X3lw8Wji^6=8KbQDE-e%b?svdFxxdh$8r97@7$ojeI`6AL8Ob6QC$qh&>ZWVDX1F{0vJnT%%mE;GveKWR%C} zM&4d;Jf3s9|HAA)yVUPo`Aq;0do#)uHSXi5*QF*)x@MVVHr+cN)uMZ__F|&Ta#p8d z53TOKtce!PJUuie8UWol-S(`c2nH?UGqJP{!4RR4u$LCfn)q-hj0^f=h(VYy)T6eN zhRO!ja-aDBTcgeyP(8Ua4IdiOog^*CQa?R(cP#9AgL9`j>EX-6Yf1lzX(!~``M1XC zNmM<4<6d~wWZ$Xrk0K}UteTrq@LBBk#MsjkK;pbuVhe)NI7(7Pf(l?lxC7=1Z7Pzl zMbS;nV4NI5_N{1$P)&XC)huOGQ+h^zpYUZfb*1n6>!`#*b3y52LGmi+<4sY5jyD#- zw&$d}DTguLAfnRtjrM*JfqtHqUu6rQoU=g%1E9xk%;)TDm^2<8n-0IhTsQFaek)MY}>PK4;nBk=ow4pF>vzkO& gna%Org-kgQCf=+BeMi^RbuY;YE~rTjend;_cdi8t>i_@% literal 0 HcmV?d00001 diff --git a/Tests/Manual/performKeyEquivalentTest/index-debug.html b/Tests/Manual/performKeyEquivalentTest/index-debug.html new file mode 100644 index 000000000..89b8a1a32 --- /dev/null +++ b/Tests/Manual/performKeyEquivalentTest/index-debug.html @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + performKeyEquivalentTest + + + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/performKeyEquivalentTest/index.html b/Tests/Manual/performKeyEquivalentTest/index.html new file mode 100644 index 000000000..e5701184e --- /dev/null +++ b/Tests/Manual/performKeyEquivalentTest/index.html @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + performKeyEquivalentTest + + + + + + + + + + + + +
+
+ + + +
+
+ + + diff --git a/Tests/Manual/performKeyEquivalentTest/main.j b/Tests/Manual/performKeyEquivalentTest/main.j new file mode 100644 index 000000000..a30882e3b --- /dev/null +++ b/Tests/Manual/performKeyEquivalentTest/main.j @@ -0,0 +1,18 @@ +/* + * AppController.j + * performKeyEquivalentTest + * + * Created by aparajita on May 22, 2011. + * Copyright 2011, Victory-Heart Productions All rights reserved. + */ + +@import +@import + +@import "AppController.j" + + +function main(args, namedArgs) +{ + CPApplicationMain(args, namedArgs); +}