From d4e1bdf9f6bb2caacf9aeba89a554a00787e6efa Mon Sep 17 00:00:00 2001 From: "hewitt%netscape.com" Date: Mon, 24 Jun 2002 21:20:55 +0000 Subject: [PATCH] 151716 - fixing some annoying autocomplete problems, most importantly that escape should work to undo typing, and fixes some situations where the popup would appear and not go away, r=pink --- camino/BrowserWindow.h | 9 ++ camino/BrowserWindow.mm | 22 +++++ camino/BrowserWindow.nib/classes.nib | 7 +- camino/BrowserWindow.nib/info.nib | 8 +- camino/BrowserWindow.nib/objects.nib | Bin 14351 -> 14321 bytes camino/CHAutoCompleteTextField.h | 10 ++- camino/CHAutoCompleteTextField.mm | 82 ++++++++++++++---- camino/Chimera.pbproj/project.pbxproj | 27 +++++- .../BrowserWindow.nib/classes.nib | 7 +- .../English.lproj/BrowserWindow.nib/info.nib | 8 +- .../BrowserWindow.nib/objects.nib | Bin 14351 -> 14321 bytes .../projects/Chimera.pbproj/project.pbxproj | 27 +++++- .../BrowserWindow.nib/classes.nib | 7 +- .../English.lproj/BrowserWindow.nib/info.nib | 8 +- .../BrowserWindow.nib/objects.nib | Bin 14351 -> 14321 bytes camino/src/browser/AutoCompleteTextField.h | 10 ++- camino/src/browser/AutoCompleteTextField.mm | 82 ++++++++++++++---- camino/src/browser/BrowserWindow.h | 9 ++ camino/src/browser/BrowserWindow.mm | 22 +++++ chimera/BrowserWindow.h | 9 ++ chimera/BrowserWindow.mm | 22 +++++ chimera/BrowserWindow.nib/classes.nib | 7 +- chimera/BrowserWindow.nib/info.nib | 8 +- chimera/BrowserWindow.nib/objects.nib | Bin 14351 -> 14321 bytes chimera/CHAutoCompleteTextField.h | 10 ++- chimera/CHAutoCompleteTextField.mm | 82 ++++++++++++++---- chimera/Chimera.pbproj/project.pbxproj | 27 +++++- .../BrowserWindow.nib/classes.nib | 7 +- .../English.lproj/BrowserWindow.nib/info.nib | 8 +- .../BrowserWindow.nib/objects.nib | Bin 14351 -> 14321 bytes .../projects/Chimera.pbproj/project.pbxproj | 27 +++++- .../BrowserWindow.nib/classes.nib | 7 +- .../English.lproj/BrowserWindow.nib/info.nib | 8 +- .../BrowserWindow.nib/objects.nib | Bin 14351 -> 14321 bytes chimera/src/browser/AutoCompleteTextField.h | 10 ++- chimera/src/browser/AutoCompleteTextField.mm | 82 ++++++++++++++---- chimera/src/browser/BrowserWindow.h | 9 ++ chimera/src/browser/BrowserWindow.mm | 22 +++++ 38 files changed, 560 insertions(+), 130 deletions(-) create mode 100644 camino/BrowserWindow.h create mode 100644 camino/BrowserWindow.mm create mode 100644 camino/src/browser/BrowserWindow.h create mode 100644 camino/src/browser/BrowserWindow.mm create mode 100644 chimera/BrowserWindow.h create mode 100644 chimera/BrowserWindow.mm create mode 100644 chimera/src/browser/BrowserWindow.h create mode 100644 chimera/src/browser/BrowserWindow.mm diff --git a/camino/BrowserWindow.h b/camino/BrowserWindow.h new file mode 100644 index 000000000000..8eb4cd63f876 --- /dev/null +++ b/camino/BrowserWindow.h @@ -0,0 +1,9 @@ +/* BrowserWindow */ + +#import + +@interface BrowserWindow : NSWindow +{ + IBOutlet id mAutoCompleteTextField; +} +@end diff --git a/camino/BrowserWindow.mm b/camino/BrowserWindow.mm new file mode 100644 index 000000000000..18cc910af98b --- /dev/null +++ b/camino/BrowserWindow.mm @@ -0,0 +1,22 @@ +#import "BrowserWindow.h" +#import "CHAutoCompleteTextField.h" + +static const int kEscapeKeyCode = 53; + +@implementation BrowserWindow + +- (void)sendEvent:(NSEvent *)theEvent +{ + // We need this hack because NSWindow::sendEvent will eat the escape key + // and won't pass it down to the key handler of responders in the window. + // We have to override sendEvent for all of our escape key needs. + if ([theEvent keyCode] == kEscapeKeyCode && [theEvent type] == NSKeyDown) { + NSText *fieldEditor = [self fieldEditor:NO forObject:mAutoCompleteTextField]; + if (fieldEditor && [self firstResponder] == fieldEditor) { + [mAutoCompleteTextField revertText]; + } + } else + [super sendEvent:theEvent]; +} + +@end diff --git a/camino/BrowserWindow.nib/classes.nib b/camino/BrowserWindow.nib/classes.nib index b4abc1d9ac61..97dfc30f8721 100644 --- a/camino/BrowserWindow.nib/classes.nib +++ b/camino/BrowserWindow.nib/classes.nib @@ -16,7 +16,12 @@ SUPERCLASS = NSObject; }, {CLASS = BookmarksToolbar; LANGUAGE = ObjC; SUPERCLASS = NSView; }, - {CLASS = BrowserWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, + { + CLASS = BrowserWindow; + LANGUAGE = ObjC; + OUTLETS = {mAutoCompleteTextField = id; }; + SUPERCLASS = NSWindow; + }, { ACTIONS = { back = id; diff --git a/camino/BrowserWindow.nib/info.nib b/camino/BrowserWindow.nib/info.nib index 98ae94ce8056..adea7e7f4098 100644 --- a/camino/BrowserWindow.nib/info.nib +++ b/camino/BrowserWindow.nib/info.nib @@ -19,11 +19,11 @@ 336 630 666 200 132 0 0 1152 848 365 - 22 587 93 162 0 0 1152 848 + 25 719 93 162 0 0 1280 1002 463 7 536 200 180 0 0 1152 848 56 - 404 546 343 68 0 0 1152 848 + 442 634 343 68 0 0 1280 1002 IBFramework Version 248.0 @@ -41,10 +41,6 @@ 497 - IBOpenObjects - - 365 - IBSystem Version 5S60 diff --git a/camino/BrowserWindow.nib/objects.nib b/camino/BrowserWindow.nib/objects.nib index 13992b6b03d4ace3fffee9cfd47a2101d7463ba0..7bf240f0476924c5f38852b407504206cc3c5320 100644 GIT binary patch literal 14321 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 literal 14351 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 De$pWa diff --git a/camino/CHAutoCompleteTextField.h b/camino/CHAutoCompleteTextField.h index e81c818d1bb8..ac0b7da51ee7 100644 --- a/camino/CHAutoCompleteTextField.h +++ b/camino/CHAutoCompleteTextField.h @@ -41,8 +41,12 @@ nsIAutoCompleteResults *mResults; nsIAutoCompleteListener *mListener; - NSString* mSearchString; + NSString *mSearchString; + + // used to remember if backspace was pressed in complete: so we can check this in controlTextDidChange BOOL mBackspaced; + // determines if the search currently pending should complete the default result when it is ready + BOOL mCompleteResult; NSTimer *mOpenTimer; } @@ -53,15 +57,17 @@ - (NSTableView *) tableView; - (int) visibleRows; -- (void) startSearch:(NSString*)aString; +- (void) startSearch:(NSString*)aString complete:(BOOL)aComplete; - (void) performSearch; - (void) dataReady:(nsIAutoCompleteResults*)aResults status:(AutoCompleteStatus)aStatus; - (void) searchTimer:(NSTimer *)aTimer; +- (void) clearResults; - (void) completeDefaultResult; - (void) completeSelectedResult; - (void) completeResult:(int)aRow; - (void) enterResult:(int)aRow; +- (void) revertText; - (void) selectRowAt:(int)aRow; - (void) selectRowBy:(int)aRows; diff --git a/camino/CHAutoCompleteTextField.mm b/camino/CHAutoCompleteTextField.mm index 12519e285fef..97ccc75f6b36 100644 --- a/camino/CHAutoCompleteTextField.mm +++ b/camino/CHAutoCompleteTextField.mm @@ -22,6 +22,7 @@ */ #import "CHAutoCompleteTextField.h" +#import "BrowserWindowController.h" #import "CHPageProxyIcon.h" #include "nsIServiceManager.h" #include "nsMemory.h" @@ -69,6 +70,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) mSearchString = nil; mBackspaced = NO; + mCompleteResult = NO; mOpenTimer = nil; mSession = nsnull; @@ -143,7 +145,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) if (mSearchString) [mSearchString release]; - + [mPopupWin release]; [mDataSource release]; @@ -182,12 +184,14 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) // searching //////////////////////////// -- (void) startSearch:(NSString*)aString +- (void) startSearch:(NSString*)aString complete:(BOOL)aComplete { if (mSearchString) [mSearchString release]; mSearchString = [aString retain]; + mCompleteResult = aComplete; + if ([self isOpen]) { [self performSearch]; } else { @@ -200,11 +204,6 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) mOpenTimer = [[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(searchTimer:) userInfo:nil repeats:NO] retain]; - - // we need to reset mBackspaced here, or else it might still be true if the user backspaces - // the textfield to be empty, then starts typing, because it is normally reset in selectRowAt - // which won't be called until perhaps after several keystrokes (due to the timer) - mBackspaced = NO; } } @@ -254,6 +253,17 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self performSearch]; } +- (void) clearResults +{ + // clear out search data + mSearchString = nil; + mResults = nil; + + [mDataSource setResults:nil]; + + [self closePopup]; +} + // handling the popup ///////////////////////////////// - (void) openPopup @@ -271,6 +281,11 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) NSPoint locationOrigin; int tableHeight; + if ([self visibleRows] == 0) { + [self closePopup]; + return; + } + // get the origin of the location bar in coordinates of the root view locationFrame = [[self superview] frame]; locationOrigin = [[[self superview] superview] convertPoint:locationFrame.origin @@ -307,12 +322,11 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) PRInt32 defaultRow; mResults->GetDefaultItemIndex(&defaultRow); - if (mBackspaced) { - [self selectRowAt:-1]; - mBackspaced = NO; - } else { + if (mCompleteResult) { [self selectRowAt:defaultRow]; [self completeResult:defaultRow]; + } else { + [self selectRowAt:-1]; } } @@ -327,7 +341,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) NSText *text; NSString *result1; - if (aRow < 0) { + if (aRow < 0 && mSearchString) { [self setStringValue:mSearchString]; } else { if ([mDataSource rowCount] <= 0) @@ -351,10 +365,27 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) - (void) enterResult:(int)aRow { - if ([self isOpen] && aRow >= 0) { + if (aRow >= 0 && [mDataSource rowCount] > 0) { [self setStringValue: [mDataSource resultString:[mTableView selectedRow] column:@"col1"]]; [self selectText:self]; [self closePopup]; + } else if (mOpenTimer) { + // if there was a search timer going when we hit enter, cancel it + [mOpenTimer invalidate]; + [mOpenTimer release]; + mOpenTimer = nil; + } +} + +- (void) revertText +{ + BrowserWindowController *controller = (BrowserWindowController *)[[self window] windowController]; + NSString *url = [[controller getBrowserWrapper] getCurrentURLSpec]; + if (url) { + [self clearResults]; + + [self setStringValue:url]; + [self selectText:self]; } } @@ -362,8 +393,14 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) - (void) selectRowAt:(int)aRow { - [mTableView selectRow:aRow byExtendingSelection:NO]; - [mTableView scrollRowToVisible: aRow]; + if (aRow >= -1 && [mDataSource rowCount] > 0) { + // show the popup + if ([mPopupWin isVisible] == NO) + [mPopupWin orderFront:nil]; + + [mTableView selectRow:aRow byExtendingSelection:NO]; + [mTableView scrollRowToVisible: aRow]; + } } - (void) selectRowBy:(int)aRows @@ -414,11 +451,20 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self resizePopup]; } -// NSTextField //////////////////////////////////////////// +// NSTextField delegate ////////////////////////////////// - (void)controlTextDidChange:(NSNotification *)aNotification { - [self startSearch:[self stringValue]]; + NSText *text = [[self window] fieldEditor:NO forObject:self]; + NSRange range = [text selectedRange]; + + // make sure we're typing at the end of the string + if (range.location == [[self stringValue] length]) + [self startSearch:[self stringValue] complete:!mBackspaced]; + else + [self clearResults]; + + mBackspaced = NO; } - (void)controlTextDidEndEditing:(NSNotification *)aNotification @@ -426,8 +472,6 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self closePopup]; } -// NSTextField delegate ////////////////////////////////// - - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command { if (command == @selector(insertNewline:)) { diff --git a/camino/Chimera.pbproj/project.pbxproj b/camino/Chimera.pbproj/project.pbxproj index 4cde1a8b5622..92244868a6e5 100644 --- a/camino/Chimera.pbproj/project.pbxproj +++ b/camino/Chimera.pbproj/project.pbxproj @@ -11,6 +11,7 @@ F517395B020CE3740189DA0C, F528E21A020FD9620168DE43, F5DE10EA0209DC0601A967DF, + F632AF8402B9AEBB01000103, F5DE10EB0209DC0601A967DF, F51B70B7026EC98B01A80166, F5AE04BA0206A4FE01A967DF, @@ -447,6 +448,7 @@ 2E748B74029A448D4B000102, F53E012A02AEE91D01A967F3, F53E013302AEEA2901A967F3, + F632AF8502B9AEBB01000103, ); isa = PBXHeadersBuildPhase; name = Headers; @@ -560,6 +562,7 @@ 2EEC3E64028138724B000102, 2E748B75029A448D4B000102, F53E012D02AEE93701A967F3, + F632AF8602B9AEBC01000103, ); isa = PBXSourcesBuildPhase; name = Sources; @@ -1196,6 +1199,7 @@ F517395A020CE3740189DA0C, F528E218020FD8400168DE43, F5DE10E70209DC0601A967DF, + F632AF8302B9AEBB01000103, F5DE10E80209DC0601A967DF, F51B70B6026EC98B01A80166, F5125A110202064D01FAFD9F, @@ -2006,7 +2010,6 @@ isa = PBXFileReference; path = CHPreferenceManager.mm; refType = 4; - indentWidth = 2; }; F52D5CD9027D3D5001A80166 = { fileRef = F52D5CD7027D3D5001A80166; @@ -6575,6 +6578,28 @@ //F62 //F63 //F64 + F632AF8302B9AEBB01000103 = { + isa = PBXFileReference; + path = BrowserWindow.h; + refType = 4; + }; + F632AF8402B9AEBB01000103 = { + isa = PBXFileReference; + path = BrowserWindow.mm; + refType = 4; + }; + F632AF8502B9AEBB01000103 = { + fileRef = F632AF8302B9AEBB01000103; + isa = PBXBuildFile; + settings = { + }; + }; + F632AF8602B9AEBC01000103 = { + fileRef = F632AF8402B9AEBB01000103; + isa = PBXBuildFile; + settings = { + }; + }; F655020201B480F201A962F7 = { isa = PBXFileReference; name = libnkcache.dylib; diff --git a/camino/English.lproj/BrowserWindow.nib/classes.nib b/camino/English.lproj/BrowserWindow.nib/classes.nib index b4abc1d9ac61..97dfc30f8721 100644 --- a/camino/English.lproj/BrowserWindow.nib/classes.nib +++ b/camino/English.lproj/BrowserWindow.nib/classes.nib @@ -16,7 +16,12 @@ SUPERCLASS = NSObject; }, {CLASS = BookmarksToolbar; LANGUAGE = ObjC; SUPERCLASS = NSView; }, - {CLASS = BrowserWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, + { + CLASS = BrowserWindow; + LANGUAGE = ObjC; + OUTLETS = {mAutoCompleteTextField = id; }; + SUPERCLASS = NSWindow; + }, { ACTIONS = { back = id; diff --git a/camino/English.lproj/BrowserWindow.nib/info.nib b/camino/English.lproj/BrowserWindow.nib/info.nib index 98ae94ce8056..adea7e7f4098 100644 --- a/camino/English.lproj/BrowserWindow.nib/info.nib +++ b/camino/English.lproj/BrowserWindow.nib/info.nib @@ -19,11 +19,11 @@ 336 630 666 200 132 0 0 1152 848 365 - 22 587 93 162 0 0 1152 848 + 25 719 93 162 0 0 1280 1002 463 7 536 200 180 0 0 1152 848 56 - 404 546 343 68 0 0 1152 848 + 442 634 343 68 0 0 1280 1002 IBFramework Version 248.0 @@ -41,10 +41,6 @@ 497 - IBOpenObjects - - 365 - IBSystem Version 5S60 diff --git a/camino/English.lproj/BrowserWindow.nib/objects.nib b/camino/English.lproj/BrowserWindow.nib/objects.nib index 13992b6b03d4ace3fffee9cfd47a2101d7463ba0..7bf240f0476924c5f38852b407504206cc3c5320 100644 GIT binary patch literal 14321 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 literal 14351 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 De$pWa diff --git a/camino/projects/Chimera.pbproj/project.pbxproj b/camino/projects/Chimera.pbproj/project.pbxproj index 4cde1a8b5622..92244868a6e5 100644 --- a/camino/projects/Chimera.pbproj/project.pbxproj +++ b/camino/projects/Chimera.pbproj/project.pbxproj @@ -11,6 +11,7 @@ F517395B020CE3740189DA0C, F528E21A020FD9620168DE43, F5DE10EA0209DC0601A967DF, + F632AF8402B9AEBB01000103, F5DE10EB0209DC0601A967DF, F51B70B7026EC98B01A80166, F5AE04BA0206A4FE01A967DF, @@ -447,6 +448,7 @@ 2E748B74029A448D4B000102, F53E012A02AEE91D01A967F3, F53E013302AEEA2901A967F3, + F632AF8502B9AEBB01000103, ); isa = PBXHeadersBuildPhase; name = Headers; @@ -560,6 +562,7 @@ 2EEC3E64028138724B000102, 2E748B75029A448D4B000102, F53E012D02AEE93701A967F3, + F632AF8602B9AEBC01000103, ); isa = PBXSourcesBuildPhase; name = Sources; @@ -1196,6 +1199,7 @@ F517395A020CE3740189DA0C, F528E218020FD8400168DE43, F5DE10E70209DC0601A967DF, + F632AF8302B9AEBB01000103, F5DE10E80209DC0601A967DF, F51B70B6026EC98B01A80166, F5125A110202064D01FAFD9F, @@ -2006,7 +2010,6 @@ isa = PBXFileReference; path = CHPreferenceManager.mm; refType = 4; - indentWidth = 2; }; F52D5CD9027D3D5001A80166 = { fileRef = F52D5CD7027D3D5001A80166; @@ -6575,6 +6578,28 @@ //F62 //F63 //F64 + F632AF8302B9AEBB01000103 = { + isa = PBXFileReference; + path = BrowserWindow.h; + refType = 4; + }; + F632AF8402B9AEBB01000103 = { + isa = PBXFileReference; + path = BrowserWindow.mm; + refType = 4; + }; + F632AF8502B9AEBB01000103 = { + fileRef = F632AF8302B9AEBB01000103; + isa = PBXBuildFile; + settings = { + }; + }; + F632AF8602B9AEBC01000103 = { + fileRef = F632AF8402B9AEBB01000103; + isa = PBXBuildFile; + settings = { + }; + }; F655020201B480F201A962F7 = { isa = PBXFileReference; name = libnkcache.dylib; diff --git a/camino/resources/localized/English.lproj/BrowserWindow.nib/classes.nib b/camino/resources/localized/English.lproj/BrowserWindow.nib/classes.nib index b4abc1d9ac61..97dfc30f8721 100644 --- a/camino/resources/localized/English.lproj/BrowserWindow.nib/classes.nib +++ b/camino/resources/localized/English.lproj/BrowserWindow.nib/classes.nib @@ -16,7 +16,12 @@ SUPERCLASS = NSObject; }, {CLASS = BookmarksToolbar; LANGUAGE = ObjC; SUPERCLASS = NSView; }, - {CLASS = BrowserWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, + { + CLASS = BrowserWindow; + LANGUAGE = ObjC; + OUTLETS = {mAutoCompleteTextField = id; }; + SUPERCLASS = NSWindow; + }, { ACTIONS = { back = id; diff --git a/camino/resources/localized/English.lproj/BrowserWindow.nib/info.nib b/camino/resources/localized/English.lproj/BrowserWindow.nib/info.nib index 98ae94ce8056..adea7e7f4098 100644 --- a/camino/resources/localized/English.lproj/BrowserWindow.nib/info.nib +++ b/camino/resources/localized/English.lproj/BrowserWindow.nib/info.nib @@ -19,11 +19,11 @@ 336 630 666 200 132 0 0 1152 848 365 - 22 587 93 162 0 0 1152 848 + 25 719 93 162 0 0 1280 1002 463 7 536 200 180 0 0 1152 848 56 - 404 546 343 68 0 0 1152 848 + 442 634 343 68 0 0 1280 1002 IBFramework Version 248.0 @@ -41,10 +41,6 @@ 497 - IBOpenObjects - - 365 - IBSystem Version 5S60 diff --git a/camino/resources/localized/English.lproj/BrowserWindow.nib/objects.nib b/camino/resources/localized/English.lproj/BrowserWindow.nib/objects.nib index 13992b6b03d4ace3fffee9cfd47a2101d7463ba0..7bf240f0476924c5f38852b407504206cc3c5320 100644 GIT binary patch literal 14321 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 literal 14351 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 De$pWa diff --git a/camino/src/browser/AutoCompleteTextField.h b/camino/src/browser/AutoCompleteTextField.h index e81c818d1bb8..ac0b7da51ee7 100644 --- a/camino/src/browser/AutoCompleteTextField.h +++ b/camino/src/browser/AutoCompleteTextField.h @@ -41,8 +41,12 @@ nsIAutoCompleteResults *mResults; nsIAutoCompleteListener *mListener; - NSString* mSearchString; + NSString *mSearchString; + + // used to remember if backspace was pressed in complete: so we can check this in controlTextDidChange BOOL mBackspaced; + // determines if the search currently pending should complete the default result when it is ready + BOOL mCompleteResult; NSTimer *mOpenTimer; } @@ -53,15 +57,17 @@ - (NSTableView *) tableView; - (int) visibleRows; -- (void) startSearch:(NSString*)aString; +- (void) startSearch:(NSString*)aString complete:(BOOL)aComplete; - (void) performSearch; - (void) dataReady:(nsIAutoCompleteResults*)aResults status:(AutoCompleteStatus)aStatus; - (void) searchTimer:(NSTimer *)aTimer; +- (void) clearResults; - (void) completeDefaultResult; - (void) completeSelectedResult; - (void) completeResult:(int)aRow; - (void) enterResult:(int)aRow; +- (void) revertText; - (void) selectRowAt:(int)aRow; - (void) selectRowBy:(int)aRows; diff --git a/camino/src/browser/AutoCompleteTextField.mm b/camino/src/browser/AutoCompleteTextField.mm index 12519e285fef..97ccc75f6b36 100644 --- a/camino/src/browser/AutoCompleteTextField.mm +++ b/camino/src/browser/AutoCompleteTextField.mm @@ -22,6 +22,7 @@ */ #import "CHAutoCompleteTextField.h" +#import "BrowserWindowController.h" #import "CHPageProxyIcon.h" #include "nsIServiceManager.h" #include "nsMemory.h" @@ -69,6 +70,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) mSearchString = nil; mBackspaced = NO; + mCompleteResult = NO; mOpenTimer = nil; mSession = nsnull; @@ -143,7 +145,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) if (mSearchString) [mSearchString release]; - + [mPopupWin release]; [mDataSource release]; @@ -182,12 +184,14 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) // searching //////////////////////////// -- (void) startSearch:(NSString*)aString +- (void) startSearch:(NSString*)aString complete:(BOOL)aComplete { if (mSearchString) [mSearchString release]; mSearchString = [aString retain]; + mCompleteResult = aComplete; + if ([self isOpen]) { [self performSearch]; } else { @@ -200,11 +204,6 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) mOpenTimer = [[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(searchTimer:) userInfo:nil repeats:NO] retain]; - - // we need to reset mBackspaced here, or else it might still be true if the user backspaces - // the textfield to be empty, then starts typing, because it is normally reset in selectRowAt - // which won't be called until perhaps after several keystrokes (due to the timer) - mBackspaced = NO; } } @@ -254,6 +253,17 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self performSearch]; } +- (void) clearResults +{ + // clear out search data + mSearchString = nil; + mResults = nil; + + [mDataSource setResults:nil]; + + [self closePopup]; +} + // handling the popup ///////////////////////////////// - (void) openPopup @@ -271,6 +281,11 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) NSPoint locationOrigin; int tableHeight; + if ([self visibleRows] == 0) { + [self closePopup]; + return; + } + // get the origin of the location bar in coordinates of the root view locationFrame = [[self superview] frame]; locationOrigin = [[[self superview] superview] convertPoint:locationFrame.origin @@ -307,12 +322,11 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) PRInt32 defaultRow; mResults->GetDefaultItemIndex(&defaultRow); - if (mBackspaced) { - [self selectRowAt:-1]; - mBackspaced = NO; - } else { + if (mCompleteResult) { [self selectRowAt:defaultRow]; [self completeResult:defaultRow]; + } else { + [self selectRowAt:-1]; } } @@ -327,7 +341,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) NSText *text; NSString *result1; - if (aRow < 0) { + if (aRow < 0 && mSearchString) { [self setStringValue:mSearchString]; } else { if ([mDataSource rowCount] <= 0) @@ -351,10 +365,27 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) - (void) enterResult:(int)aRow { - if ([self isOpen] && aRow >= 0) { + if (aRow >= 0 && [mDataSource rowCount] > 0) { [self setStringValue: [mDataSource resultString:[mTableView selectedRow] column:@"col1"]]; [self selectText:self]; [self closePopup]; + } else if (mOpenTimer) { + // if there was a search timer going when we hit enter, cancel it + [mOpenTimer invalidate]; + [mOpenTimer release]; + mOpenTimer = nil; + } +} + +- (void) revertText +{ + BrowserWindowController *controller = (BrowserWindowController *)[[self window] windowController]; + NSString *url = [[controller getBrowserWrapper] getCurrentURLSpec]; + if (url) { + [self clearResults]; + + [self setStringValue:url]; + [self selectText:self]; } } @@ -362,8 +393,14 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) - (void) selectRowAt:(int)aRow { - [mTableView selectRow:aRow byExtendingSelection:NO]; - [mTableView scrollRowToVisible: aRow]; + if (aRow >= -1 && [mDataSource rowCount] > 0) { + // show the popup + if ([mPopupWin isVisible] == NO) + [mPopupWin orderFront:nil]; + + [mTableView selectRow:aRow byExtendingSelection:NO]; + [mTableView scrollRowToVisible: aRow]; + } } - (void) selectRowBy:(int)aRows @@ -414,11 +451,20 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self resizePopup]; } -// NSTextField //////////////////////////////////////////// +// NSTextField delegate ////////////////////////////////// - (void)controlTextDidChange:(NSNotification *)aNotification { - [self startSearch:[self stringValue]]; + NSText *text = [[self window] fieldEditor:NO forObject:self]; + NSRange range = [text selectedRange]; + + // make sure we're typing at the end of the string + if (range.location == [[self stringValue] length]) + [self startSearch:[self stringValue] complete:!mBackspaced]; + else + [self clearResults]; + + mBackspaced = NO; } - (void)controlTextDidEndEditing:(NSNotification *)aNotification @@ -426,8 +472,6 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self closePopup]; } -// NSTextField delegate ////////////////////////////////// - - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command { if (command == @selector(insertNewline:)) { diff --git a/camino/src/browser/BrowserWindow.h b/camino/src/browser/BrowserWindow.h new file mode 100644 index 000000000000..8eb4cd63f876 --- /dev/null +++ b/camino/src/browser/BrowserWindow.h @@ -0,0 +1,9 @@ +/* BrowserWindow */ + +#import + +@interface BrowserWindow : NSWindow +{ + IBOutlet id mAutoCompleteTextField; +} +@end diff --git a/camino/src/browser/BrowserWindow.mm b/camino/src/browser/BrowserWindow.mm new file mode 100644 index 000000000000..18cc910af98b --- /dev/null +++ b/camino/src/browser/BrowserWindow.mm @@ -0,0 +1,22 @@ +#import "BrowserWindow.h" +#import "CHAutoCompleteTextField.h" + +static const int kEscapeKeyCode = 53; + +@implementation BrowserWindow + +- (void)sendEvent:(NSEvent *)theEvent +{ + // We need this hack because NSWindow::sendEvent will eat the escape key + // and won't pass it down to the key handler of responders in the window. + // We have to override sendEvent for all of our escape key needs. + if ([theEvent keyCode] == kEscapeKeyCode && [theEvent type] == NSKeyDown) { + NSText *fieldEditor = [self fieldEditor:NO forObject:mAutoCompleteTextField]; + if (fieldEditor && [self firstResponder] == fieldEditor) { + [mAutoCompleteTextField revertText]; + } + } else + [super sendEvent:theEvent]; +} + +@end diff --git a/chimera/BrowserWindow.h b/chimera/BrowserWindow.h new file mode 100644 index 000000000000..8eb4cd63f876 --- /dev/null +++ b/chimera/BrowserWindow.h @@ -0,0 +1,9 @@ +/* BrowserWindow */ + +#import + +@interface BrowserWindow : NSWindow +{ + IBOutlet id mAutoCompleteTextField; +} +@end diff --git a/chimera/BrowserWindow.mm b/chimera/BrowserWindow.mm new file mode 100644 index 000000000000..18cc910af98b --- /dev/null +++ b/chimera/BrowserWindow.mm @@ -0,0 +1,22 @@ +#import "BrowserWindow.h" +#import "CHAutoCompleteTextField.h" + +static const int kEscapeKeyCode = 53; + +@implementation BrowserWindow + +- (void)sendEvent:(NSEvent *)theEvent +{ + // We need this hack because NSWindow::sendEvent will eat the escape key + // and won't pass it down to the key handler of responders in the window. + // We have to override sendEvent for all of our escape key needs. + if ([theEvent keyCode] == kEscapeKeyCode && [theEvent type] == NSKeyDown) { + NSText *fieldEditor = [self fieldEditor:NO forObject:mAutoCompleteTextField]; + if (fieldEditor && [self firstResponder] == fieldEditor) { + [mAutoCompleteTextField revertText]; + } + } else + [super sendEvent:theEvent]; +} + +@end diff --git a/chimera/BrowserWindow.nib/classes.nib b/chimera/BrowserWindow.nib/classes.nib index b4abc1d9ac61..97dfc30f8721 100644 --- a/chimera/BrowserWindow.nib/classes.nib +++ b/chimera/BrowserWindow.nib/classes.nib @@ -16,7 +16,12 @@ SUPERCLASS = NSObject; }, {CLASS = BookmarksToolbar; LANGUAGE = ObjC; SUPERCLASS = NSView; }, - {CLASS = BrowserWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, + { + CLASS = BrowserWindow; + LANGUAGE = ObjC; + OUTLETS = {mAutoCompleteTextField = id; }; + SUPERCLASS = NSWindow; + }, { ACTIONS = { back = id; diff --git a/chimera/BrowserWindow.nib/info.nib b/chimera/BrowserWindow.nib/info.nib index 98ae94ce8056..adea7e7f4098 100644 --- a/chimera/BrowserWindow.nib/info.nib +++ b/chimera/BrowserWindow.nib/info.nib @@ -19,11 +19,11 @@ 336 630 666 200 132 0 0 1152 848 365 - 22 587 93 162 0 0 1152 848 + 25 719 93 162 0 0 1280 1002 463 7 536 200 180 0 0 1152 848 56 - 404 546 343 68 0 0 1152 848 + 442 634 343 68 0 0 1280 1002 IBFramework Version 248.0 @@ -41,10 +41,6 @@ 497 - IBOpenObjects - - 365 - IBSystem Version 5S60 diff --git a/chimera/BrowserWindow.nib/objects.nib b/chimera/BrowserWindow.nib/objects.nib index 13992b6b03d4ace3fffee9cfd47a2101d7463ba0..7bf240f0476924c5f38852b407504206cc3c5320 100644 GIT binary patch literal 14321 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 literal 14351 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 De$pWa diff --git a/chimera/CHAutoCompleteTextField.h b/chimera/CHAutoCompleteTextField.h index e81c818d1bb8..ac0b7da51ee7 100644 --- a/chimera/CHAutoCompleteTextField.h +++ b/chimera/CHAutoCompleteTextField.h @@ -41,8 +41,12 @@ nsIAutoCompleteResults *mResults; nsIAutoCompleteListener *mListener; - NSString* mSearchString; + NSString *mSearchString; + + // used to remember if backspace was pressed in complete: so we can check this in controlTextDidChange BOOL mBackspaced; + // determines if the search currently pending should complete the default result when it is ready + BOOL mCompleteResult; NSTimer *mOpenTimer; } @@ -53,15 +57,17 @@ - (NSTableView *) tableView; - (int) visibleRows; -- (void) startSearch:(NSString*)aString; +- (void) startSearch:(NSString*)aString complete:(BOOL)aComplete; - (void) performSearch; - (void) dataReady:(nsIAutoCompleteResults*)aResults status:(AutoCompleteStatus)aStatus; - (void) searchTimer:(NSTimer *)aTimer; +- (void) clearResults; - (void) completeDefaultResult; - (void) completeSelectedResult; - (void) completeResult:(int)aRow; - (void) enterResult:(int)aRow; +- (void) revertText; - (void) selectRowAt:(int)aRow; - (void) selectRowBy:(int)aRows; diff --git a/chimera/CHAutoCompleteTextField.mm b/chimera/CHAutoCompleteTextField.mm index 12519e285fef..97ccc75f6b36 100644 --- a/chimera/CHAutoCompleteTextField.mm +++ b/chimera/CHAutoCompleteTextField.mm @@ -22,6 +22,7 @@ */ #import "CHAutoCompleteTextField.h" +#import "BrowserWindowController.h" #import "CHPageProxyIcon.h" #include "nsIServiceManager.h" #include "nsMemory.h" @@ -69,6 +70,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) mSearchString = nil; mBackspaced = NO; + mCompleteResult = NO; mOpenTimer = nil; mSession = nsnull; @@ -143,7 +145,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) if (mSearchString) [mSearchString release]; - + [mPopupWin release]; [mDataSource release]; @@ -182,12 +184,14 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) // searching //////////////////////////// -- (void) startSearch:(NSString*)aString +- (void) startSearch:(NSString*)aString complete:(BOOL)aComplete { if (mSearchString) [mSearchString release]; mSearchString = [aString retain]; + mCompleteResult = aComplete; + if ([self isOpen]) { [self performSearch]; } else { @@ -200,11 +204,6 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) mOpenTimer = [[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(searchTimer:) userInfo:nil repeats:NO] retain]; - - // we need to reset mBackspaced here, or else it might still be true if the user backspaces - // the textfield to be empty, then starts typing, because it is normally reset in selectRowAt - // which won't be called until perhaps after several keystrokes (due to the timer) - mBackspaced = NO; } } @@ -254,6 +253,17 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self performSearch]; } +- (void) clearResults +{ + // clear out search data + mSearchString = nil; + mResults = nil; + + [mDataSource setResults:nil]; + + [self closePopup]; +} + // handling the popup ///////////////////////////////// - (void) openPopup @@ -271,6 +281,11 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) NSPoint locationOrigin; int tableHeight; + if ([self visibleRows] == 0) { + [self closePopup]; + return; + } + // get the origin of the location bar in coordinates of the root view locationFrame = [[self superview] frame]; locationOrigin = [[[self superview] superview] convertPoint:locationFrame.origin @@ -307,12 +322,11 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) PRInt32 defaultRow; mResults->GetDefaultItemIndex(&defaultRow); - if (mBackspaced) { - [self selectRowAt:-1]; - mBackspaced = NO; - } else { + if (mCompleteResult) { [self selectRowAt:defaultRow]; [self completeResult:defaultRow]; + } else { + [self selectRowAt:-1]; } } @@ -327,7 +341,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) NSText *text; NSString *result1; - if (aRow < 0) { + if (aRow < 0 && mSearchString) { [self setStringValue:mSearchString]; } else { if ([mDataSource rowCount] <= 0) @@ -351,10 +365,27 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) - (void) enterResult:(int)aRow { - if ([self isOpen] && aRow >= 0) { + if (aRow >= 0 && [mDataSource rowCount] > 0) { [self setStringValue: [mDataSource resultString:[mTableView selectedRow] column:@"col1"]]; [self selectText:self]; [self closePopup]; + } else if (mOpenTimer) { + // if there was a search timer going when we hit enter, cancel it + [mOpenTimer invalidate]; + [mOpenTimer release]; + mOpenTimer = nil; + } +} + +- (void) revertText +{ + BrowserWindowController *controller = (BrowserWindowController *)[[self window] windowController]; + NSString *url = [[controller getBrowserWrapper] getCurrentURLSpec]; + if (url) { + [self clearResults]; + + [self setStringValue:url]; + [self selectText:self]; } } @@ -362,8 +393,14 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) - (void) selectRowAt:(int)aRow { - [mTableView selectRow:aRow byExtendingSelection:NO]; - [mTableView scrollRowToVisible: aRow]; + if (aRow >= -1 && [mDataSource rowCount] > 0) { + // show the popup + if ([mPopupWin isVisible] == NO) + [mPopupWin orderFront:nil]; + + [mTableView selectRow:aRow byExtendingSelection:NO]; + [mTableView scrollRowToVisible: aRow]; + } } - (void) selectRowBy:(int)aRows @@ -414,11 +451,20 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self resizePopup]; } -// NSTextField //////////////////////////////////////////// +// NSTextField delegate ////////////////////////////////// - (void)controlTextDidChange:(NSNotification *)aNotification { - [self startSearch:[self stringValue]]; + NSText *text = [[self window] fieldEditor:NO forObject:self]; + NSRange range = [text selectedRange]; + + // make sure we're typing at the end of the string + if (range.location == [[self stringValue] length]) + [self startSearch:[self stringValue] complete:!mBackspaced]; + else + [self clearResults]; + + mBackspaced = NO; } - (void)controlTextDidEndEditing:(NSNotification *)aNotification @@ -426,8 +472,6 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self closePopup]; } -// NSTextField delegate ////////////////////////////////// - - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command { if (command == @selector(insertNewline:)) { diff --git a/chimera/Chimera.pbproj/project.pbxproj b/chimera/Chimera.pbproj/project.pbxproj index 4cde1a8b5622..92244868a6e5 100644 --- a/chimera/Chimera.pbproj/project.pbxproj +++ b/chimera/Chimera.pbproj/project.pbxproj @@ -11,6 +11,7 @@ F517395B020CE3740189DA0C, F528E21A020FD9620168DE43, F5DE10EA0209DC0601A967DF, + F632AF8402B9AEBB01000103, F5DE10EB0209DC0601A967DF, F51B70B7026EC98B01A80166, F5AE04BA0206A4FE01A967DF, @@ -447,6 +448,7 @@ 2E748B74029A448D4B000102, F53E012A02AEE91D01A967F3, F53E013302AEEA2901A967F3, + F632AF8502B9AEBB01000103, ); isa = PBXHeadersBuildPhase; name = Headers; @@ -560,6 +562,7 @@ 2EEC3E64028138724B000102, 2E748B75029A448D4B000102, F53E012D02AEE93701A967F3, + F632AF8602B9AEBC01000103, ); isa = PBXSourcesBuildPhase; name = Sources; @@ -1196,6 +1199,7 @@ F517395A020CE3740189DA0C, F528E218020FD8400168DE43, F5DE10E70209DC0601A967DF, + F632AF8302B9AEBB01000103, F5DE10E80209DC0601A967DF, F51B70B6026EC98B01A80166, F5125A110202064D01FAFD9F, @@ -2006,7 +2010,6 @@ isa = PBXFileReference; path = CHPreferenceManager.mm; refType = 4; - indentWidth = 2; }; F52D5CD9027D3D5001A80166 = { fileRef = F52D5CD7027D3D5001A80166; @@ -6575,6 +6578,28 @@ //F62 //F63 //F64 + F632AF8302B9AEBB01000103 = { + isa = PBXFileReference; + path = BrowserWindow.h; + refType = 4; + }; + F632AF8402B9AEBB01000103 = { + isa = PBXFileReference; + path = BrowserWindow.mm; + refType = 4; + }; + F632AF8502B9AEBB01000103 = { + fileRef = F632AF8302B9AEBB01000103; + isa = PBXBuildFile; + settings = { + }; + }; + F632AF8602B9AEBC01000103 = { + fileRef = F632AF8402B9AEBB01000103; + isa = PBXBuildFile; + settings = { + }; + }; F655020201B480F201A962F7 = { isa = PBXFileReference; name = libnkcache.dylib; diff --git a/chimera/English.lproj/BrowserWindow.nib/classes.nib b/chimera/English.lproj/BrowserWindow.nib/classes.nib index b4abc1d9ac61..97dfc30f8721 100644 --- a/chimera/English.lproj/BrowserWindow.nib/classes.nib +++ b/chimera/English.lproj/BrowserWindow.nib/classes.nib @@ -16,7 +16,12 @@ SUPERCLASS = NSObject; }, {CLASS = BookmarksToolbar; LANGUAGE = ObjC; SUPERCLASS = NSView; }, - {CLASS = BrowserWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, + { + CLASS = BrowserWindow; + LANGUAGE = ObjC; + OUTLETS = {mAutoCompleteTextField = id; }; + SUPERCLASS = NSWindow; + }, { ACTIONS = { back = id; diff --git a/chimera/English.lproj/BrowserWindow.nib/info.nib b/chimera/English.lproj/BrowserWindow.nib/info.nib index 98ae94ce8056..adea7e7f4098 100644 --- a/chimera/English.lproj/BrowserWindow.nib/info.nib +++ b/chimera/English.lproj/BrowserWindow.nib/info.nib @@ -19,11 +19,11 @@ 336 630 666 200 132 0 0 1152 848 365 - 22 587 93 162 0 0 1152 848 + 25 719 93 162 0 0 1280 1002 463 7 536 200 180 0 0 1152 848 56 - 404 546 343 68 0 0 1152 848 + 442 634 343 68 0 0 1280 1002 IBFramework Version 248.0 @@ -41,10 +41,6 @@ 497 - IBOpenObjects - - 365 - IBSystem Version 5S60 diff --git a/chimera/English.lproj/BrowserWindow.nib/objects.nib b/chimera/English.lproj/BrowserWindow.nib/objects.nib index 13992b6b03d4ace3fffee9cfd47a2101d7463ba0..7bf240f0476924c5f38852b407504206cc3c5320 100644 GIT binary patch literal 14321 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 literal 14351 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 De$pWa diff --git a/chimera/projects/Chimera.pbproj/project.pbxproj b/chimera/projects/Chimera.pbproj/project.pbxproj index 4cde1a8b5622..92244868a6e5 100644 --- a/chimera/projects/Chimera.pbproj/project.pbxproj +++ b/chimera/projects/Chimera.pbproj/project.pbxproj @@ -11,6 +11,7 @@ F517395B020CE3740189DA0C, F528E21A020FD9620168DE43, F5DE10EA0209DC0601A967DF, + F632AF8402B9AEBB01000103, F5DE10EB0209DC0601A967DF, F51B70B7026EC98B01A80166, F5AE04BA0206A4FE01A967DF, @@ -447,6 +448,7 @@ 2E748B74029A448D4B000102, F53E012A02AEE91D01A967F3, F53E013302AEEA2901A967F3, + F632AF8502B9AEBB01000103, ); isa = PBXHeadersBuildPhase; name = Headers; @@ -560,6 +562,7 @@ 2EEC3E64028138724B000102, 2E748B75029A448D4B000102, F53E012D02AEE93701A967F3, + F632AF8602B9AEBC01000103, ); isa = PBXSourcesBuildPhase; name = Sources; @@ -1196,6 +1199,7 @@ F517395A020CE3740189DA0C, F528E218020FD8400168DE43, F5DE10E70209DC0601A967DF, + F632AF8302B9AEBB01000103, F5DE10E80209DC0601A967DF, F51B70B6026EC98B01A80166, F5125A110202064D01FAFD9F, @@ -2006,7 +2010,6 @@ isa = PBXFileReference; path = CHPreferenceManager.mm; refType = 4; - indentWidth = 2; }; F52D5CD9027D3D5001A80166 = { fileRef = F52D5CD7027D3D5001A80166; @@ -6575,6 +6578,28 @@ //F62 //F63 //F64 + F632AF8302B9AEBB01000103 = { + isa = PBXFileReference; + path = BrowserWindow.h; + refType = 4; + }; + F632AF8402B9AEBB01000103 = { + isa = PBXFileReference; + path = BrowserWindow.mm; + refType = 4; + }; + F632AF8502B9AEBB01000103 = { + fileRef = F632AF8302B9AEBB01000103; + isa = PBXBuildFile; + settings = { + }; + }; + F632AF8602B9AEBC01000103 = { + fileRef = F632AF8402B9AEBB01000103; + isa = PBXBuildFile; + settings = { + }; + }; F655020201B480F201A962F7 = { isa = PBXFileReference; name = libnkcache.dylib; diff --git a/chimera/resources/localized/English.lproj/BrowserWindow.nib/classes.nib b/chimera/resources/localized/English.lproj/BrowserWindow.nib/classes.nib index b4abc1d9ac61..97dfc30f8721 100644 --- a/chimera/resources/localized/English.lproj/BrowserWindow.nib/classes.nib +++ b/chimera/resources/localized/English.lproj/BrowserWindow.nib/classes.nib @@ -16,7 +16,12 @@ SUPERCLASS = NSObject; }, {CLASS = BookmarksToolbar; LANGUAGE = ObjC; SUPERCLASS = NSView; }, - {CLASS = BrowserWindow; LANGUAGE = ObjC; SUPERCLASS = NSWindow; }, + { + CLASS = BrowserWindow; + LANGUAGE = ObjC; + OUTLETS = {mAutoCompleteTextField = id; }; + SUPERCLASS = NSWindow; + }, { ACTIONS = { back = id; diff --git a/chimera/resources/localized/English.lproj/BrowserWindow.nib/info.nib b/chimera/resources/localized/English.lproj/BrowserWindow.nib/info.nib index 98ae94ce8056..adea7e7f4098 100644 --- a/chimera/resources/localized/English.lproj/BrowserWindow.nib/info.nib +++ b/chimera/resources/localized/English.lproj/BrowserWindow.nib/info.nib @@ -19,11 +19,11 @@ 336 630 666 200 132 0 0 1152 848 365 - 22 587 93 162 0 0 1152 848 + 25 719 93 162 0 0 1280 1002 463 7 536 200 180 0 0 1152 848 56 - 404 546 343 68 0 0 1152 848 + 442 634 343 68 0 0 1280 1002 IBFramework Version 248.0 @@ -41,10 +41,6 @@ 497 - IBOpenObjects - - 365 - IBSystem Version 5S60 diff --git a/chimera/resources/localized/English.lproj/BrowserWindow.nib/objects.nib b/chimera/resources/localized/English.lproj/BrowserWindow.nib/objects.nib index 13992b6b03d4ace3fffee9cfd47a2101d7463ba0..7bf240f0476924c5f38852b407504206cc3c5320 100644 GIT binary patch literal 14321 zcmbtb4U|;Hm9Faf|6%?Zegr}~1d}tG)g8#$6Xzr{!zj)im~p}kVU5QnJ>74hv41B0 z!@#Z_t>*Ph*5xGG-kEo3FcL}PAC4>};G(i9leos19}Na#(32nI>WjxDo9LQkh5c^T zd#_*5ADA%AtM_hI-FxfSt$T0Xswu5W?HJZV$y7oML`BJKI&ar?y{@;vd-aWjTeV>7 zx0_1FDIED zlNc7%y^H{o$CuR~zvwEt(N&p=Z(iVGH-P}E;Y$NuqB+7eP`=PV$D1O1)g!5j+v0BXOZmBSJ1E~ zq%51HKrUU3s#m?Y*Q^qhgd~4ZcHfP|vkE{Vue?D^`MYC7Gb>4f{Yz2f2_>IPrr+EN zlb6z@Vy%fsLR#V?@*g8>H3wEOor;8G+NZ+W2-o$R-hN0XB0oQ&>s2r%%F4A!J4UVW zhE}jG!|@o%Flpmp_BtcsVXALCOGd92hBHXkkwAj|0>HDmY@X@0WWR>&fBODB&z&=} z*=+S?f*lgRKE_l@7Drm0e5UCR#_mVUvfPV=8Ke|uEg{&C&g9PJGt6$m2$Nu6ZLAT# zYZ;?w?wrB{%Nq=~L*uf!b9%|pP#fE|YTIY7)oV9};tsktod?;tABOH1Q?TB3mtf=d z#NBwkgY!X!?jTTY?f>&b<6QRrsqFiN;+Yf2jkZv`v;YJ~0$Fl4_o~e{IL;E<1C8pL zd(|HLX;|KDmV2vcEU(e8Ue?|o3h778+CDzXSF(N``)ZP)**W)F+Z)j-Osw*Bm$jQbtj&VaHHW9)^O!3LiP7wse%WA=EZKERw z$)_`KPMLcde7=a^pXXjd`D*SrdKpc6xVpNbA)`Zb1_a9ibcBg7zQPL-0tY2Y}0 z$dU}^r5?yxmcjxSv}BSFwBMrs(1%bo)aKOK$1zgLnHk`$pZ z`x`|0kEcvjrxuAU(RKLB0d0F~O<0SB2!v$;gMN7hS%?d^=F^2n}hAEbH2d->rvK(&60)HPzfFyTiq$A+Q* z@$pP^>-lze0_}XaZZ_V{W}lP@PoGlAxCc>#tw04#KEvQF2kk8JmAUk)HYdU!)jG0k z6$S-rb=hnt*M0}XB;v<7M@9!R)pd!$h?d|#$z_iS_B8&ZIE4R41pkt#|B7DP-90qq zW31lp2V*t8gRLa1TBlqz>G-UcTD7ZK6Hkl;5}`|ITE1S3!~+*=DILX(j;z3-a;tp^ z!Tc9@tBTi2Zk77ZX4Z3a3e+0N&iEy@ei;SMINpmp<2sr)MA4m*Kr-1s5*QxV5?4@& z{6VNtV`ta(+fy2RK?tscs6y4@IP8y7$MTa2FUc*nor8){sddZQ+_HS88u~&l)Z!NW ze?^JE3CkPL+%lyF6vQ@lb~%woav&a$3}oQ+jq`=Cv<_tO%(W;oWJPF=l=AZ|!`hi#Cw14wgXyRiOSSn!@t9UvGgrzrqZVDQ zy;jtUd($X4a#@|XQRI9%k^O+pm2?Vod;9wm@y!V>ne2{*!U)dd@Mq`F=34U^5M}pM zC=XxP*WVMs4rF`dC`?A{ilJLL78dFm=e%GP*!kOP8N01E*Qy4gmj#2NP!KIcrP4kN z-|mICLCCjNJL4pAI&#CS*QXoO6#ybP3?$h_Qf_hp5F0py3ADE?{aOkemNIx{ykM8q zjp6OtGY_UN9MNKdsFv&-jAOkGU}t6+qNJ|50o#>^28RzRZ#hen8X3}-KR=#f5I;n( zb|qDtBk@6PQ#crxgV9UE;V|>upN!zSh4duFm=o;j1N9x`s*kwhoRyhX0+ECB5 z)x5Z2?J;lZF<~6C`3$_Bqk@;`Hsv!{*x$aK{{E++AqzUYI?}0lXFNJgdtle186U|7 z?A}nx?0lc#AHw>gXD(1|(MDU(cd!!&Tz?-t#a#zJHw6?wl(nb+U_j>4q!O#S?E5D?%HM= z-L=iRO=@&x$L4f)Is4nylRN?~RO--)FpHkfs-M;T$;}bsl-21}Djs8J?9B_A2rRm` zTpA|g5(ZZ%SY~Y-V{6gFGZpUeZ0m;oLC5fLgnR&EN-0C)`ZPpH7A}{}=_!X~R`A-| z0Y75{{vw>xA}e;ug0A|L?Z7HOrW{y#XCM~TB8GlGzx?E-M4eB}v186s@S@_woqAO= z8I}pCcEoI#@r;pazi@!8*kUA*&gYlFMXmUlifS=S6xDVif{n0kc%~5B23f$x3r|me z<|FRN8UqRJD-w-GgZ?BcVuMDaG;36J5TYUEe?ZnGtw6y-Y~4@3yHzP^!~#t z!TY7E_Ae^JF1L}MUNpKjvA)J8ICNM|V67-n61thv4Ml>a75 znvg-G&FTgEk5e2k|GoQd91v6Q(E(LcA-rGu( z)Z1Dl#>x8B*BjUt-b}%leyOs0@QmEGa5j&ga zPY!Fr@K9I_`3JFA7`bYaX72UsP+^vv<_Y$B3UBc&Vh>YCai@$q8=Xkk9{^*iz+kdi z>%aUWEka+W>*JriaNqz1Wr!)2N=d(@!u}HEXAoZ?JR1q8f?E&?VGjuFf@p}J66_So zh)TyU8p^c6&U|J%J7Y7LaqNok#9gUr`z3cHApLfs1EWvc0NYS8py8I&RLrkGJOU!K!n0``0JnMHRf_g$9L ze+tM^Z*oKV$@!kGizn%3ynyD96h@&oK;Zlyso3{0sxCN>>{0#oX-Ek6xSUk#2b)Jv z;sX6pqn=IqBP*NLZI{_I@8nc3PC)G=^|+#rF7tySO4@7 zxKpXbsW>Q^c(+U@-d#TvhV(b=grZ<4(B`DGL>?BttBG+c0l!zWObQ~{ckugN{62zT z+2@63X@1aZ!z9b~hoa#Q4d?PbS_1;`2d#{$E7= z%*@2AhGZ6f7SgN!D$*~_Ou9k~g;TQ--tbom{FgHmt_sQXHJ3E$+?2#T%%oBivWO-o zL?!k~r%EZD6U?$*Nb|=956DO8z~A;-tfjrUQ~^rh8K~BZ5J7~ zNvMiaHFIx>li%K`4f>ruL0hrPz3Fkvg29}UQaMcHOu_Mc#dKV4o)l3R4d8cDxE}w9 zz*zY|X?Wms|M_;TUObgBlqaE8B>0Cfjjr#8c=2#vpG?#Bxfp;+mV(`f;xH9yLD&^IYKZ`)kLMKK>rfjY zrO(T<{8v*|nYs*muYwrRZJMwzr_INXnG5U8;}`(@C5@(QDc;5~U~}J?c@GVJciLPg zcoW_%$s6}=7yLV96CBZ!Ym50ZtVRA)W*+18+-EV&TmPjUAzo zGm+PY1CjVoG&>0*wz)Tt%lhMU=jJ70HD0HeZQu4g<(Do5RUd-5cR`20ChGD z_Jb4pESaV0Tz z9MH)U(^Y3TnTHXL5r|UfA5Qvj9Kks(`r<&MShC;8w^v@Rtst=;KoD?cVVH{umj?p$ zR|3@JIS^@8|A@ioQ03;l4D+!m=#~KDrMhAT1hf-COu7o~@cou*Bo#v)wgMPbxZH6P zxx;QlCo_(Q;{bZ+lPJ^xR?#00X@f}Zq2rtQ#;9Cm7!^#Vi!GwLWZ~Qa_KXQD6abgq zk5bPwUI@s+gaSh6#m=D-F#(%8sol-0l`C#iM;Kc`U42=J4fQGpVuv(|35*Cag>#moWKp#*<%|>H0-EqSh%?Zv$7Ac>h9QZ zI%R9l1Jm^6q+VWGkz6Q&;;e-n4gwhVZ~OD>=}fk{x4$<$NNErarwXwc?%~n#=MQ8$ z6E!ZZarAJFnycF3Kmu7pJLUu`!BbQxH3sJnID$?|A=p)8s$2PpysSxkN9r&}LTipX zQnSyHi~5nhsf*eoR5ume-f)*i{pI`=vjksHsx;rFA=_+NzfRsDAxyfC(@`}@x@^(NqK3KX<+l1O!^5M55L zn<7Q@qNt!WO2L3^tsicr5tR+%I*L0>bLHTN)XftYI**_g33s>ec;UqO`#A1khU<76fHMI z`?N$d9t%XA+bZ^KE}x<`h(v7t12#3bf@HCmkdzu!hQ?j11!^j^Y4!?8Uhf`^ZzsK! z$4A|(yR^u#Yj0p%Rn$lR9hYea!oyU*R>NgA+~B~t)%_u4Q(S^d$Dcz-a7!L`u6=$M z@LWADGuz1Olj`PK+ZHi9ahS}314G&*Td$4Iu+1NFxDI*7joBhh~1-AlJP1f2zrMG3chz2xg&_3UywdqRngp^Sb zH^^x`j&pIVpDgN0P28#tv-iAd=AH<%sj^wEO^0Uj!uY3wQ2>uNI&m3jPAVnuTu(ifZ9&KocyPJ*dN6{|H|Q-ToC{4+_2m#Xofb^gY4- zc>l5BXRV3b@P^!K8{o)xp2XMZL)N(9LwNgz;IE)~L-1dt_^sf-M{z{(J5Zd%)h^Ji z6ux?EMDQ=5KXwMAsJU105fsQlT?^osVWQA(q3|sQ@FBtf(K;yjR%@N$-?H+8hXF-C zaj%83oV0Gin9ymr;A7ST!9RjZ#Ma-oo)YX1YtzT9E2{wcAHn|sl(>NSK5LQSS6Ocf zb`bELtF12dwXVl0H|lXUvD(@w_|vF5EBH?U!gzOL03ATUXk8=t@9_RGBx5bB zL)D#v|C_Z>@F?Ej5&TZ8Pw?;I9hUYG5R?nw9JI%3_y&r*1YeF~w_r5xKM4LdTEf0R zYV`>I1H409Pg_R?|0JsS2=od5N~33P#B-KuymiW&Vf8W7p%8#68yV( zyEB3ZE-t(T1htq2;Cy4iS|a#Lz()n!hvGjm5NnR$SK~cNB(TeS&DsDBvQ7*3kTu2u zdj{!j6fmhjM)A1d=!xtsFU6Pmd%PpVdH_V4gl{oGj|#rmnkV?*;{87a&!WIEbQHI5 zv=CQs#@knL(F(;W!4Fzc))UrN!M_Q>x3DgN@XZYtR4ryL6#Q?j2Lz9!>Io<^3K*Fu zt$PF?#{2(a<)HWi^d80Axc+J-1^=Q|CwL10ST7&68U?=s@AMytt$sWZemrEI6ns5+ z_6c7N>h2eOJH8eP-}~|PCBd-J*!_Zi1z%qid>g(f%(YfR1K7QS9kFnN2A$y?i;sNz zxb>vqT^6`|6wvd+S7p^e-S{hl{|ZF|sXBD(9SdmITF(gn2mr4M{yK^st1P4rAI96r z`|x-fi_cmr*cYwVO6!E+HvraDjR%I+ZUwKg0uZS6nBZ#w`zCCIwG%Aoh0mWaHJAF$ jt+!&?Ad~*684TrMl^VKNcgBP9z?uZknMdOEXKVit!&U1! literal 14351 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 De$pWa diff --git a/chimera/src/browser/AutoCompleteTextField.h b/chimera/src/browser/AutoCompleteTextField.h index e81c818d1bb8..ac0b7da51ee7 100644 --- a/chimera/src/browser/AutoCompleteTextField.h +++ b/chimera/src/browser/AutoCompleteTextField.h @@ -41,8 +41,12 @@ nsIAutoCompleteResults *mResults; nsIAutoCompleteListener *mListener; - NSString* mSearchString; + NSString *mSearchString; + + // used to remember if backspace was pressed in complete: so we can check this in controlTextDidChange BOOL mBackspaced; + // determines if the search currently pending should complete the default result when it is ready + BOOL mCompleteResult; NSTimer *mOpenTimer; } @@ -53,15 +57,17 @@ - (NSTableView *) tableView; - (int) visibleRows; -- (void) startSearch:(NSString*)aString; +- (void) startSearch:(NSString*)aString complete:(BOOL)aComplete; - (void) performSearch; - (void) dataReady:(nsIAutoCompleteResults*)aResults status:(AutoCompleteStatus)aStatus; - (void) searchTimer:(NSTimer *)aTimer; +- (void) clearResults; - (void) completeDefaultResult; - (void) completeSelectedResult; - (void) completeResult:(int)aRow; - (void) enterResult:(int)aRow; +- (void) revertText; - (void) selectRowAt:(int)aRow; - (void) selectRowBy:(int)aRows; diff --git a/chimera/src/browser/AutoCompleteTextField.mm b/chimera/src/browser/AutoCompleteTextField.mm index 12519e285fef..97ccc75f6b36 100644 --- a/chimera/src/browser/AutoCompleteTextField.mm +++ b/chimera/src/browser/AutoCompleteTextField.mm @@ -22,6 +22,7 @@ */ #import "CHAutoCompleteTextField.h" +#import "BrowserWindowController.h" #import "CHPageProxyIcon.h" #include "nsIServiceManager.h" #include "nsMemory.h" @@ -69,6 +70,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) mSearchString = nil; mBackspaced = NO; + mCompleteResult = NO; mOpenTimer = nil; mSession = nsnull; @@ -143,7 +145,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) if (mSearchString) [mSearchString release]; - + [mPopupWin release]; [mDataSource release]; @@ -182,12 +184,14 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) // searching //////////////////////////// -- (void) startSearch:(NSString*)aString +- (void) startSearch:(NSString*)aString complete:(BOOL)aComplete { if (mSearchString) [mSearchString release]; mSearchString = [aString retain]; + mCompleteResult = aComplete; + if ([self isOpen]) { [self performSearch]; } else { @@ -200,11 +204,6 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) mOpenTimer = [[NSTimer scheduledTimerWithTimeInterval:0.2 target:self selector:@selector(searchTimer:) userInfo:nil repeats:NO] retain]; - - // we need to reset mBackspaced here, or else it might still be true if the user backspaces - // the textfield to be empty, then starts typing, because it is normally reset in selectRowAt - // which won't be called until perhaps after several keystrokes (due to the timer) - mBackspaced = NO; } } @@ -254,6 +253,17 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self performSearch]; } +- (void) clearResults +{ + // clear out search data + mSearchString = nil; + mResults = nil; + + [mDataSource setResults:nil]; + + [self closePopup]; +} + // handling the popup ///////////////////////////////// - (void) openPopup @@ -271,6 +281,11 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) NSPoint locationOrigin; int tableHeight; + if ([self visibleRows] == 0) { + [self closePopup]; + return; + } + // get the origin of the location bar in coordinates of the root view locationFrame = [[self superview] frame]; locationOrigin = [[[self superview] superview] convertPoint:locationFrame.origin @@ -307,12 +322,11 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) PRInt32 defaultRow; mResults->GetDefaultItemIndex(&defaultRow); - if (mBackspaced) { - [self selectRowAt:-1]; - mBackspaced = NO; - } else { + if (mCompleteResult) { [self selectRowAt:defaultRow]; [self completeResult:defaultRow]; + } else { + [self selectRowAt:-1]; } } @@ -327,7 +341,7 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) NSText *text; NSString *result1; - if (aRow < 0) { + if (aRow < 0 && mSearchString) { [self setStringValue:mSearchString]; } else { if ([mDataSource rowCount] <= 0) @@ -351,10 +365,27 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) - (void) enterResult:(int)aRow { - if ([self isOpen] && aRow >= 0) { + if (aRow >= 0 && [mDataSource rowCount] > 0) { [self setStringValue: [mDataSource resultString:[mTableView selectedRow] column:@"col1"]]; [self selectText:self]; [self closePopup]; + } else if (mOpenTimer) { + // if there was a search timer going when we hit enter, cancel it + [mOpenTimer invalidate]; + [mOpenTimer release]; + mOpenTimer = nil; + } +} + +- (void) revertText +{ + BrowserWindowController *controller = (BrowserWindowController *)[[self window] windowController]; + NSString *url = [[controller getBrowserWrapper] getCurrentURLSpec]; + if (url) { + [self clearResults]; + + [self setStringValue:url]; + [self selectText:self]; } } @@ -362,8 +393,14 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) - (void) selectRowAt:(int)aRow { - [mTableView selectRow:aRow byExtendingSelection:NO]; - [mTableView scrollRowToVisible: aRow]; + if (aRow >= -1 && [mDataSource rowCount] > 0) { + // show the popup + if ([mPopupWin isVisible] == NO) + [mPopupWin orderFront:nil]; + + [mTableView selectRow:aRow byExtendingSelection:NO]; + [mTableView scrollRowToVisible: aRow]; + } } - (void) selectRowBy:(int)aRows @@ -414,11 +451,20 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self resizePopup]; } -// NSTextField //////////////////////////////////////////// +// NSTextField delegate ////////////////////////////////// - (void)controlTextDidChange:(NSNotification *)aNotification { - [self startSearch:[self stringValue]]; + NSText *text = [[self window] fieldEditor:NO forObject:self]; + NSRange range = [text selectedRange]; + + // make sure we're typing at the end of the string + if (range.location == [[self stringValue] length]) + [self startSearch:[self stringValue] complete:!mBackspaced]; + else + [self clearResults]; + + mBackspaced = NO; } - (void)controlTextDidEndEditing:(NSNotification *)aNotification @@ -426,8 +472,6 @@ NS_IMPL_ISUPPORTS1(AutoCompleteListener, nsIAutoCompleteListener) [self closePopup]; } -// NSTextField delegate ////////////////////////////////// - - (BOOL)control:(NSControl *)control textView:(NSTextView *)textView doCommandBySelector:(SEL)command { if (command == @selector(insertNewline:)) { diff --git a/chimera/src/browser/BrowserWindow.h b/chimera/src/browser/BrowserWindow.h new file mode 100644 index 000000000000..8eb4cd63f876 --- /dev/null +++ b/chimera/src/browser/BrowserWindow.h @@ -0,0 +1,9 @@ +/* BrowserWindow */ + +#import + +@interface BrowserWindow : NSWindow +{ + IBOutlet id mAutoCompleteTextField; +} +@end diff --git a/chimera/src/browser/BrowserWindow.mm b/chimera/src/browser/BrowserWindow.mm new file mode 100644 index 000000000000..18cc910af98b --- /dev/null +++ b/chimera/src/browser/BrowserWindow.mm @@ -0,0 +1,22 @@ +#import "BrowserWindow.h" +#import "CHAutoCompleteTextField.h" + +static const int kEscapeKeyCode = 53; + +@implementation BrowserWindow + +- (void)sendEvent:(NSEvent *)theEvent +{ + // We need this hack because NSWindow::sendEvent will eat the escape key + // and won't pass it down to the key handler of responders in the window. + // We have to override sendEvent for all of our escape key needs. + if ([theEvent keyCode] == kEscapeKeyCode && [theEvent type] == NSKeyDown) { + NSText *fieldEditor = [self fieldEditor:NO forObject:mAutoCompleteTextField]; + if (fieldEditor && [self firstResponder] == fieldEditor) { + [mAutoCompleteTextField revertText]; + } + } else + [super sendEvent:theEvent]; +} + +@end