From bfcb94a8441480a22cfd649938b6252160fe8be5 Mon Sep 17 00:00:00 2001 From: Francisco Ryan Tolmasky I Date: Sat, 13 Jun 2009 18:27:31 -0700 Subject: [PATCH] Various key input fixes. Reviewed by me. --- AppKit/CPCompatibility.j | 7 +++++-- AppKit/CPResponder.j | 38 ++++++++++++++++---------------------- Objective-J/debug.js | 2 +- 3 files changed, 22 insertions(+), 25 deletions(-) diff --git a/AppKit/CPCompatibility.j b/AppKit/CPCompatibility.j index 2ba69a747..e5e30c41f 100644 --- a/AppKit/CPCompatibility.j +++ b/AppKit/CPCompatibility.j @@ -106,9 +106,12 @@ else if (USER_AGENT.indexOf("AppleWebKit/") != -1) var versionStart = USER_AGENT.indexOf("AppleWebKit/") + "AppleWebKit/".length, versionEnd = USER_AGENT.indexOf(" ", versionStart), - version = parseFloat(USER_AGENT.substring(versionStart, versionEnd), 10); + versionString = USER_AGENT.substring(versionStart, versionEnd), + versionDivision = versionString.indexOf('.'), + majorVersion = parseInt(versionString.substring(0, versionDivision)), + minorVersion = parseInt(versionString.substr(versionDivision + 1)); - if(USER_AGENT.indexOf("Plainview") == -1 && version >= 525.14 || USER_AGENT.indexOf("Chrome") != -1) + if((USER_AGENT.indexOf("Safari") !== CPNotFound && (majorVersion >= 525 && minorVersion > 14)) || USER_AGENT.indexOf("Chrome") !== CPNotFound) PLATFORM_FEATURES |= CPJavascriptRemedialKeySupport; } diff --git a/AppKit/CPResponder.j b/AppKit/CPResponder.j index 5d07e987b..c55a2731c 100644 --- a/AppKit/CPResponder.j +++ b/AppKit/CPResponder.j @@ -96,36 +96,38 @@ CPDownArrowKeyCode = 40; */ - (void)interpretKeyEvents:(CPArray)events { - var event, - index = 0; - - while(event = events[index++]) + var index = 0, + count = [events count]; + + for (; index < count; ++index) { + var event = events[index]; + switch([event keyCode]) { - case CPLeftArrowKeyCode: [self moveBackward:self]; + case CPLeftArrowKeyCode: [self doCommandBySelector:@selector(moveLeft:)]; break; - case CPRightArrowKeyCode: [self moveForward:self]; + case CPRightArrowKeyCode: [self doCommandBySelector:@selector(moveRight:)]; break; - case CPUpArrowKeyCode: [self moveUp:self]; + case CPUpArrowKeyCode: [self doCommandBySelector:@selector(moveUp:)]; break; - case CPDownArrowKeyCode: [self moveDown:self]; + case CPDownArrowKeyCode: [self doCommandBySelector:@selector(moveDown:)]; break; - case CPDeleteKeyCode: [self deleteBackward:self]; + case CPDeleteKeyCode: [self doCommandBySelector:@selector(deleteBackward:)]; break; case CPReturnKeyCode: - case 3: [self insertLineBreak:self]; + case 3: [self doCommandBySelector:@selector(insertLineBreak:)]; break; - case CPEscapeKeyCode: [self cancel:self]; + case CPEscapeKeyCode: [self doCommandBySelector:@selector(cancel:)]; break; case CPTabKeyCode: var shift = [event modifierFlags] & CPShiftKeyMask; if (!shift) - [self insertTab:self]; + [self doCommandBySelector:@selector(insertTab:)]; else - [self insertBackTab:self]; + [self doCommandBySelector:@selector(insertBackTab:)]; break; @@ -224,14 +226,6 @@ CPDownArrowKeyCode = 40; } // Action Methods -/*! - Deletes one character backward, or the selection if anything is selected. - @param aSender the object requesting this -*/ -- (void)deleteBackward:(id)aSender -{ -} - /*! Insert a line break at the caret position or selection. @param aSender the object requesting this @@ -278,7 +272,7 @@ CPDownArrowKeyCode = 40; */ - (void)doCommandBySelector:(SEL)aSelector { - if([self respondsToSelector:aSelector]) + if ([self respondsToSelector:aSelector]) [self performSelector:aSelector]; else [_nextResponder doCommandBySelector:aSelector]; diff --git a/Objective-J/debug.js b/Objective-J/debug.js index 9702e00c8..cbc5fd447 100644 --- a/Objective-J/debug.js +++ b/Objective-J/debug.js @@ -119,7 +119,7 @@ function objj_backtrace_set_enabled(enabled) function objj_debug_print_backtrace() { - print(objj_debug_backtrace_string()); + alert(objj_debug_backtrace_string()); } function objj_debug_backtrace_string()