Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. |
| 2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
| 3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
| 4 | 4 |
| 5 #import <Cocoa/Cocoa.h> | 5 #import <Cocoa/Cocoa.h> |
| 6 | 6 |
| 7 #include "base/auto_reset.h" | 7 #include "base/auto_reset.h" |
| 8 #include "base/mac/bundle_locations.h" | 8 #include "base/mac/bundle_locations.h" |
| 9 #include "base/strings/sys_string_conversions.h" | 9 #include "base/strings/sys_string_conversions.h" |
| 10 #include "chrome/app/vector_icons/vector_icons.h" | 10 #include "chrome/app/vector_icons/vector_icons.h" |
| (...skipping 23 matching lines...) Expand all Loading... | |
| 34 #include "ui/gfx/image/image_skia_util_mac.h" | 34 #include "ui/gfx/image/image_skia_util_mac.h" |
| 35 #include "ui/gfx/paint_vector_icon.h" | 35 #include "ui/gfx/paint_vector_icon.h" |
| 36 | 36 |
| 37 using content::NativeWebKeyboardEvent; | 37 using content::NativeWebKeyboardEvent; |
| 38 | 38 |
| 39 const float kFindBarOpenDuration = 0.2; | 39 const float kFindBarOpenDuration = 0.2; |
| 40 const float kFindBarCloseDuration = 0.15; | 40 const float kFindBarCloseDuration = 0.15; |
| 41 const float kFindBarMoveDuration = 0.15; | 41 const float kFindBarMoveDuration = 0.15; |
| 42 const float kRightEdgeOffset = 25; | 42 const float kRightEdgeOffset = 25; |
| 43 const int kMaxCharacters = 4000; | 43 const int kMaxCharacters = 4000; |
| 44 const int kUndefinedResultCount = -1; | |
| 44 | 45 |
| 45 @interface FindBarCocoaController (PrivateMethods) <NSAnimationDelegate> | 46 @interface FindBarCocoaController (PrivateMethods) <NSAnimationDelegate> |
| 46 // Returns the appropriate frame for a hidden find bar. | 47 // Returns the appropriate frame for a hidden find bar. |
| 47 - (NSRect)hiddenFindBarFrame; | 48 - (NSRect)hiddenFindBarFrame; |
| 48 | 49 |
| 49 // Animates the given |view| to the given |endFrame| within |duration| seconds. | 50 // Animates the given |view| to the given |endFrame| within |duration| seconds. |
| 50 // Returns a new NSViewAnimation. | 51 // Returns a new NSViewAnimation. |
| 51 - (NSViewAnimation*)createAnimationForView:(NSView*)view | 52 - (NSViewAnimation*)createAnimationForView:(NSView*)view |
| 52 toFrame:(NSRect)endFrame | 53 toFrame:(NSRect)endFrame |
| 53 duration:(float)duration; | 54 duration:(float)duration; |
| (...skipping 14 matching lines...) Expand all Loading... | |
| 68 // Puts |text| into the find bar and enables the buttons, but doesn't start a | 69 // Puts |text| into the find bar and enables the buttons, but doesn't start a |
| 69 // new search for |text|. | 70 // new search for |text|. |
| 70 - (void)prepopulateText:(NSString*)text; | 71 - (void)prepopulateText:(NSString*)text; |
| 71 | 72 |
| 72 // Clears the find results for all tabs in browser associated with this find | 73 // Clears the find results for all tabs in browser associated with this find |
| 73 // bar. If |suppressPboardUpdateActions_| is true then the current tab is not | 74 // bar. If |suppressPboardUpdateActions_| is true then the current tab is not |
| 74 // cleared. | 75 // cleared. |
| 75 - (void)clearFindResultsForCurrentBrowser; | 76 - (void)clearFindResultsForCurrentBrowser; |
| 76 | 77 |
| 77 - (BrowserWindowController*)browserWindowController; | 78 - (BrowserWindowController*)browserWindowController; |
| 79 | |
| 80 // Returns the number of matches from the last find results of the active | |
| 81 // web contents. Returns kUndefinedResultCount if unable to determine the count. | |
| 82 - (int)lastNumberOfMatchesForActiveWebContents; | |
| 78 @end | 83 @end |
| 79 | 84 |
| 80 @implementation FindBarCocoaController | 85 @implementation FindBarCocoaController |
| 81 | 86 |
| 82 @synthesize findBarView = findBarView_; | 87 @synthesize findBarView = findBarView_; |
| 83 | 88 |
| 84 - (id)initWithBrowser:(Browser*)browser { | 89 - (id)initWithBrowser:(Browser*)browser { |
| 85 if ((self = [super initWithNibName:@"FindBar" | 90 if ((self = [super initWithNibName:@"FindBar" |
| 86 bundle:base::mac::FrameworkBundle()])) { | 91 bundle:base::mac::FrameworkBundle()])) { |
| 87 [[NSNotificationCenter defaultCenter] | 92 [[NSNotificationCenter defaultCenter] |
| (...skipping 267 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 355 showHideAnimation_.reset(nil); | 360 showHideAnimation_.reset(nil); |
| 356 } | 361 } |
| 357 if (moveAnimation_.get()) { | 362 if (moveAnimation_.get()) { |
| 358 [moveAnimation_ stopAnimation]; | 363 [moveAnimation_ stopAnimation]; |
| 359 moveAnimation_.reset(nil); | 364 moveAnimation_.reset(nil); |
| 360 } | 365 } |
| 361 } | 366 } |
| 362 | 367 |
| 363 - (void)setFocusAndSelection { | 368 - (void)setFocusAndSelection { |
| 364 [[findText_ window] makeFirstResponder:findText_]; | 369 [[findText_ window] makeFirstResponder:findText_]; |
| 370 BOOL buttonsEnabled = ([self lastNumberOfMatchesForActiveWebContents] != 0); | |
| 365 | 371 |
| 366 // Enable the buttons if the find text is non-empty. | |
| 367 BOOL buttonsEnabled = ([[findText_ stringValue] length] > 0) ? YES : NO; | |
| 368 [previousButton_ setEnabled:buttonsEnabled]; | 372 [previousButton_ setEnabled:buttonsEnabled]; |
| 369 [nextButton_ setEnabled:buttonsEnabled]; | 373 [nextButton_ setEnabled:buttonsEnabled]; |
| 370 } | 374 } |
| 371 | 375 |
| 372 - (void)restoreSavedFocus { | 376 - (void)restoreSavedFocus { |
| 373 if (!(focusTracker_.get() && | 377 if (!(focusTracker_.get() && |
| 374 [focusTracker_ restoreFocusInWindow:[findBarView_ window]])) { | 378 [focusTracker_ restoreFocusInWindow:[findBarView_ window]])) { |
| 375 // Fall back to giving focus to the tab contents. | 379 // Fall back to giving focus to the tab contents. |
| 376 findBarBridge_->GetFindBarController()->web_contents()->Focus(); | 380 findBarBridge_->GetFindBarController()->web_contents()->Focus(); |
| 377 } | 381 } |
| (...skipping 283 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 661 } | 665 } |
| 662 } | 666 } |
| 663 | 667 |
| 664 - (BrowserWindowController*)browserWindowController { | 668 - (BrowserWindowController*)browserWindowController { |
| 665 if (!browser_) | 669 if (!browser_) |
| 666 return nil; | 670 return nil; |
| 667 return [BrowserWindowController | 671 return [BrowserWindowController |
| 668 browserWindowControllerForWindow:browser_->window()->GetNativeWindow()]; | 672 browserWindowControllerForWindow:browser_->window()->GetNativeWindow()]; |
| 669 } | 673 } |
| 670 | 674 |
| 675 - (int)lastNumberOfMatchesForActiveWebContents { | |
| 676 if (!browser_) | |
| 677 return kUndefinedResultCount; | |
| 678 | |
| 679 content::WebContents* contents = | |
| 680 findBarBridge_->GetFindBarController()->web_contents(); | |
| 681 FindTabHelper* findTabHelper = FindTabHelper::FromWebContents(contents); | |
| 682 return findTabHelper->find_result().number_of_matches(); | |
|
rohitrao (ping after 24h)
2017/07/26 14:55:31
For my own reference, number_of_matches() appears
| |
| 683 } | |
| 671 @end | 684 @end |
| OLD | NEW |