OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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 #include "chrome/browser/find_bar_controller.h" | 5 #include "chrome/browser/find_bar_controller.h" |
6 | 6 |
7 #include "app/l10n_util.h" | 7 #include "app/l10n_util.h" |
8 #include "build/build_config.h" | 8 #include "build/build_config.h" |
9 #include "chrome/browser/find_bar.h" | 9 #include "chrome/browser/find_bar.h" |
10 #include "chrome/browser/tab_contents/navigation_entry.h" | 10 #include "chrome/browser/tab_contents/navigation_entry.h" |
(...skipping 16 matching lines...) Expand all Loading... |
27 void FindBarController::Show() { | 27 void FindBarController::Show() { |
28 // Only show the animation if we're not already showing a find bar for the | 28 // Only show the animation if we're not already showing a find bar for the |
29 // selected TabContents. | 29 // selected TabContents. |
30 if (!tab_contents_->find_ui_active()) { | 30 if (!tab_contents_->find_ui_active()) { |
31 tab_contents_->set_find_ui_active(true); | 31 tab_contents_->set_find_ui_active(true); |
32 find_bar_->Show(true); | 32 find_bar_->Show(true); |
33 } | 33 } |
34 find_bar_->SetFocusAndSelection(); | 34 find_bar_->SetFocusAndSelection(); |
35 } | 35 } |
36 | 36 |
37 void FindBarController::EndFindSession() { | 37 void FindBarController::EndFindSession(SelectionAction action) { |
38 find_bar_->Hide(true); | 38 find_bar_->Hide(true); |
39 | 39 |
40 // |tab_contents_| can be NULL for a number of reasons, for example when the | 40 // |tab_contents_| can be NULL for a number of reasons, for example when the |
41 // tab is closing. We must guard against that case. See issue 8030. | 41 // tab is closing. We must guard against that case. See issue 8030. |
42 if (tab_contents_) { | 42 if (tab_contents_) { |
43 // When we hide the window, we need to notify the renderer that we are done | 43 // When we hide the window, we need to notify the renderer that we are done |
44 // for now, so that we can abort the scoping effort and clear all the | 44 // for now, so that we can abort the scoping effort and clear all the |
45 // tickmarks and highlighting. | 45 // tickmarks and highlighting. |
46 tab_contents_->StopFinding(false); // false = don't clear selection on | 46 tab_contents_->StopFinding(action); |
47 // page. | |
48 find_bar_->ClearResults(tab_contents_->find_result()); | 47 find_bar_->ClearResults(tab_contents_->find_result()); |
49 | 48 |
50 // When we get dismissed we restore the focus to where it belongs. | 49 // When we get dismissed we restore the focus to where it belongs. |
51 find_bar_->RestoreSavedFocus(); | 50 find_bar_->RestoreSavedFocus(); |
52 } | 51 } |
53 } | 52 } |
54 | 53 |
55 void FindBarController::ChangeTabContents(TabContents* contents) { | 54 void FindBarController::ChangeTabContents(TabContents* contents) { |
56 if (tab_contents_) { | 55 if (tab_contents_) { |
57 registrar_.RemoveAll(); | 56 registrar_.RemoveAll(); |
(...skipping 74 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
132 if (source_controller == &tab_contents_->controller()) { | 131 if (source_controller == &tab_contents_->controller()) { |
133 NavigationController::LoadCommittedDetails* commit_details = | 132 NavigationController::LoadCommittedDetails* commit_details = |
134 Details<NavigationController::LoadCommittedDetails>(details).ptr(); | 133 Details<NavigationController::LoadCommittedDetails>(details).ptr(); |
135 PageTransition::Type transition_type = | 134 PageTransition::Type transition_type = |
136 commit_details->entry->transition_type(); | 135 commit_details->entry->transition_type(); |
137 // We hide the FindInPage window when the user navigates away, except on | 136 // We hide the FindInPage window when the user navigates away, except on |
138 // reload. | 137 // reload. |
139 if (find_bar_->IsFindBarVisible()) { | 138 if (find_bar_->IsFindBarVisible()) { |
140 if (PageTransition::StripQualifier(transition_type) != | 139 if (PageTransition::StripQualifier(transition_type) != |
141 PageTransition::RELOAD) { | 140 PageTransition::RELOAD) { |
142 EndFindSession(); | 141 EndFindSession(kKeepSelection); |
143 } else { | 142 } else { |
144 // On Reload we want to make sure FindNext is converted to a full Find | 143 // On Reload we want to make sure FindNext is converted to a full Find |
145 // to make sure highlights for inactive matches are repainted. | 144 // to make sure highlights for inactive matches are repainted. |
146 tab_contents_->set_find_op_aborted(true); | 145 tab_contents_->set_find_op_aborted(true); |
147 } | 146 } |
148 } | 147 } |
149 } | 148 } |
150 } | 149 } |
151 } | 150 } |
152 | 151 |
(...skipping 50 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
203 if (find_result.number_of_matches() > -1) { | 202 if (find_result.number_of_matches() > -1) { |
204 if (last_reported_matchcount_ > 0 && | 203 if (last_reported_matchcount_ > 0 && |
205 find_result.number_of_matches() == 1 && | 204 find_result.number_of_matches() == 1 && |
206 !find_result.final_update()) | 205 !find_result.final_update()) |
207 return; // Don't let interim result override match count. | 206 return; // Don't let interim result override match count. |
208 last_reported_matchcount_ = find_result.number_of_matches(); | 207 last_reported_matchcount_ = find_result.number_of_matches(); |
209 } | 208 } |
210 | 209 |
211 find_bar_->UpdateUIForFindResult(find_result, tab_contents_->find_text()); | 210 find_bar_->UpdateUIForFindResult(find_result, tab_contents_->find_text()); |
212 } | 211 } |
OLD | NEW |