diff options
Diffstat (limited to 'chrome/browser')
-rw-r--r-- | chrome/browser/cocoa/find_bar_bridge.mm | 3 | ||||
-rw-r--r-- | chrome/browser/cocoa/find_bar_cocoa_controller.mm | 35 |
2 files changed, 34 insertions, 4 deletions
diff --git a/chrome/browser/cocoa/find_bar_bridge.mm b/chrome/browser/cocoa/find_bar_bridge.mm index cd7733c..c12a830 100644 --- a/chrome/browser/cocoa/find_bar_bridge.mm +++ b/chrome/browser/cocoa/find_bar_bridge.mm @@ -7,7 +7,8 @@ #include "base/sys_string_conversions.h" #import "chrome/browser/cocoa/find_bar_cocoa_controller.h" -FindBarBridge::FindBarBridge() { +FindBarBridge::FindBarBridge() + : find_bar_controller_(NULL) { cocoa_controller_.reset([[FindBarCocoaController alloc] init]); [cocoa_controller_ setFindBarBridge:this]; } diff --git a/chrome/browser/cocoa/find_bar_cocoa_controller.mm b/chrome/browser/cocoa/find_bar_cocoa_controller.mm index 9f4a62b..995f29c 100644 --- a/chrome/browser/cocoa/find_bar_cocoa_controller.mm +++ b/chrome/browser/cocoa/find_bar_cocoa_controller.mm @@ -30,6 +30,10 @@ static float kFindBarCloseDuration = 0.15; - (void)setFindBarFrame:(NSRect)endFrame animate:(BOOL)animate duration:(float)duration; + +// Optionally stops the current search, puts |text| into the find bar, and +// enables the buttons, but doesn't start a new search for |text|. +- (void)prepopulateText:(NSString*)text stopSearch:(BOOL)stopSearch; @end @implementation FindBarCocoaController @@ -61,6 +65,11 @@ static float kFindBarCloseDuration = 0.15; - (void)awakeFromNib { [findBarView_ setFrame:[self hiddenFindBarFrame]]; + + // Stopping the search requires a findbar controller, which isn't valid yet + // during setup. Furthermore, there is no active search yet anyway. + [self prepopulateText:[[FindPasteboard sharedInstance] findText] + stopSearch:NO]; } - (IBAction)close:(id)sender { @@ -83,7 +92,8 @@ static float kFindBarCloseDuration = 0.15; } - (void)findPboardUpdated:(NSNotification*)notification { - [self setFindText:[[FindPasteboard sharedInstance] findText]]; + [self prepopulateText:[[FindPasteboard sharedInstance] findText] + stopSearch:YES]; } // Positions the find bar container view in the correct location based on the @@ -143,9 +153,8 @@ static float kFindBarCloseDuration = 0.15; if ([event modifierFlags] & NSShiftKeyMask) [previousButton_ performClick:nil]; - else { + else [nextButton_ performClick:nil]; - } return YES; } else if (command == @selector(pageUp:) || @@ -345,4 +354,24 @@ static float kFindBarCloseDuration = 0.15; [currentAnimation_ startAnimation]; } +- (void)prepopulateText:(NSString*)text stopSearch:(BOOL)stopSearch{ + [self setFindText:text]; + + // End the find session, hide the "x of y" text and disable the + // buttons, but do not close the find bar or raise the window here. + if (stopSearch && findBarBridge_) { + TabContents* contents = + findBarBridge_->GetFindBarController()->tab_contents(); + if (contents) { + contents->StopFinding(true); + findBarBridge_->ClearResults(contents->find_result()); + } + } + + // Has to happen after |ClearResults()| above. + BOOL buttonsEnabled = [text length] > 0 ? YES : NO; + [previousButton_ setEnabled:buttonsEnabled]; + [nextButton_ setEnabled:buttonsEnabled]; +} + @end |