summaryrefslogtreecommitdiffstats
path: root/chrome/browser
diff options
context:
space:
mode:
Diffstat (limited to 'chrome/browser')
-rw-r--r--chrome/browser/cocoa/find_bar_bridge.mm3
-rw-r--r--chrome/browser/cocoa/find_bar_cocoa_controller.mm35
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