Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(684)

Side by Side Diff: chrome/browser/ui/views/find_bar_view.cc

Issue 2441863002: Remove some more !IsModeMaterial code. (Closed)
Patch Set: restore Created 4 years, 2 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
OLDNEW
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 #include "chrome/browser/ui/views/find_bar_view.h" 5 #include "chrome/browser/ui/views/find_bar_view.h"
6 6
7 #include <algorithm> 7 #include <algorithm>
8 8
9 #include "base/i18n/number_formatting.h" 9 #include "base/i18n/number_formatting.h"
10 #include "base/macros.h" 10 #include "base/macros.h"
(...skipping 93 matching lines...) Expand 10 before | Expand all | Expand 10 after
104 104
105 DISALLOW_COPY_AND_ASSIGN(FocusForwarderView); 105 DISALLOW_COPY_AND_ASSIGN(FocusForwarderView);
106 }; 106 };
107 107
108 } // namespace 108 } // namespace
109 109
110 //////////////////////////////////////////////////////////////////////////////// 110 ////////////////////////////////////////////////////////////////////////////////
111 // FindBarView, public: 111 // FindBarView, public:
112 112
113 FindBarView::FindBarView(FindBarHost* host) 113 FindBarView::FindBarView(FindBarHost* host)
114 : DropdownBarView(host), 114 : find_bar_host_(host),
115 find_text_(new views::Textfield), 115 find_text_(new views::Textfield),
116 match_count_text_(new MatchCountLabel()), 116 match_count_text_(new MatchCountLabel()),
117 focus_forwarder_view_(new FocusForwarderView(find_text_)), 117 focus_forwarder_view_(new FocusForwarderView(find_text_)),
118 separator_(new views::Separator(views::Separator::VERTICAL)), 118 separator_(new views::Separator(views::Separator::VERTICAL)),
119 find_previous_button_(new views::VectorIconButton(this)), 119 find_previous_button_(new views::VectorIconButton(this)),
120 find_next_button_(new views::VectorIconButton(this)), 120 find_next_button_(new views::VectorIconButton(this)),
121 close_button_(new views::VectorIconButton(this)) { 121 close_button_(new views::VectorIconButton(this)) {
122 find_text_->set_id(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD); 122 find_text_->set_id(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD);
123 find_text_->set_default_width_in_chars(kDefaultCharWidth); 123 find_text_->set_default_width_in_chars(kDefaultCharWidth);
124 find_text_->set_controller(this); 124 find_text_->set_controller(this);
(...skipping 111 matching lines...) Expand 10 before | Expand all | Expand 10 after
236 SchedulePaint(); 236 SchedulePaint();
237 } 237 }
238 238
239 void FindBarView::ClearMatchCount() { 239 void FindBarView::ClearMatchCount() {
240 match_count_text_->SetText(base::string16()); 240 match_count_text_->SetText(base::string16());
241 UpdateMatchCountAppearance(false); 241 UpdateMatchCountAppearance(false);
242 Layout(); 242 Layout();
243 SchedulePaint(); 243 SchedulePaint();
244 } 244 }
245 245
246 void FindBarView::SetFocusAndSelection(bool select_all) {
247 find_text_->RequestFocus();
248 GetWidget()->GetInputMethod()->ShowImeIfNeeded();
249 if (select_all && !find_text_->text().empty())
250 find_text_->SelectAll(true);
251 }
252
253 /////////////////////////////////////////////////////////////////////////////// 246 ///////////////////////////////////////////////////////////////////////////////
254 // FindBarView, views::View overrides: 247 // FindBarView, views::View overrides:
255 248
256 void FindBarView::Layout() { 249 void FindBarView::Layout() {
257 views::View::Layout(); 250 views::View::Layout();
258 251
259 // The focus forwarder view is a hidden view that should cover the area 252 // The focus forwarder view is a hidden view that should cover the area
260 // between the find text box and the find button so that when the user clicks 253 // between the find text box and the find button so that when the user clicks
261 // in that area we focus on the find text box. 254 // in that area we focus on the find text box.
262 const int find_text_edge = find_text_->x() + find_text_->width(); 255 const int find_text_edge = find_text_->x() + find_text_->width();
263 focus_forwarder_view_->SetBounds( 256 focus_forwarder_view_->SetBounds(
264 find_text_edge, find_previous_button_->y(), 257 find_text_edge, find_previous_button_->y(),
265 find_previous_button_->x() - find_text_edge, 258 find_previous_button_->x() - find_text_edge,
266 find_previous_button_->height()); 259 find_previous_button_->height());
267 } 260 }
268 261
269 gfx::Size FindBarView::GetPreferredSize() const { 262 gfx::Size FindBarView::GetPreferredSize() const {
270 gfx::Size size = views::View::GetPreferredSize(); 263 gfx::Size size = views::View::GetPreferredSize();
271 // Ignore the preferred size for the match count label, and just let it take 264 // Ignore the preferred size for the match count label, and just let it take
272 // up part of the space for the input textfield. This prevents the overall 265 // up part of the space for the input textfield. This prevents the overall
273 // width from changing every time the match count text changes. 266 // width from changing every time the match count text changes.
274 size.set_width(size.width() - match_count_text_->GetPreferredSize().width()); 267 size.set_width(size.width() - match_count_text_->GetPreferredSize().width());
275 return size; 268 return size;
276 } 269 }
277 270
278 //////////////////////////////////////////////////////////////////////////////// 271 ////////////////////////////////////////////////////////////////////////////////
272 // FindBarView, DropdownBarHostDelegate implementation:
273
274 void FindBarView::SetFocusAndSelection(bool select_all) {
275 find_text_->RequestFocus();
276 GetWidget()->GetInputMethod()->ShowImeIfNeeded();
277 if (select_all && !find_text_->text().empty())
278 find_text_->SelectAll(true);
279 }
280
281 ////////////////////////////////////////////////////////////////////////////////
279 // FindBarView, views::VectorIconButtonDelegate implementation: 282 // FindBarView, views::VectorIconButtonDelegate implementation:
280 283
281 void FindBarView::ButtonPressed( 284 void FindBarView::ButtonPressed(
282 views::Button* sender, const ui::Event& event) { 285 views::Button* sender, const ui::Event& event) {
283 switch (sender->id()) { 286 switch (sender->id()) {
284 case VIEW_ID_FIND_IN_PAGE_PREVIOUS_BUTTON: 287 case VIEW_ID_FIND_IN_PAGE_PREVIOUS_BUTTON:
285 case VIEW_ID_FIND_IN_PAGE_NEXT_BUTTON: 288 case VIEW_ID_FIND_IN_PAGE_NEXT_BUTTON:
286 if (!find_text_->text().empty()) { 289 if (!find_text_->text().empty()) {
287 FindTabHelper* find_tab_helper = FindTabHelper::FromWebContents( 290 FindTabHelper* find_tab_helper = FindTabHelper::FromWebContents(
288 find_bar_host()->GetFindBarController()->web_contents()); 291 find_bar_host_->GetFindBarController()->web_contents());
289 find_tab_helper->StartFinding( 292 find_tab_helper->StartFinding(
290 find_text_->text(), 293 find_text_->text(),
291 sender->id() == VIEW_ID_FIND_IN_PAGE_NEXT_BUTTON, 294 sender->id() == VIEW_ID_FIND_IN_PAGE_NEXT_BUTTON,
292 false); // Not case sensitive. 295 false); // Not case sensitive.
293 } 296 }
294 break; 297 break;
295 case VIEW_ID_FIND_IN_PAGE_CLOSE_BUTTON: 298 case VIEW_ID_FIND_IN_PAGE_CLOSE_BUTTON:
296 find_bar_host()->GetFindBarController()->EndFindSession( 299 find_bar_host_->GetFindBarController()->EndFindSession(
297 FindBarController::kKeepSelectionOnPage, 300 FindBarController::kKeepSelectionOnPage,
298 FindBarController::kKeepResultsInFindBox); 301 FindBarController::kKeepResultsInFindBox);
299 break; 302 break;
300 default: 303 default:
301 NOTREACHED() << "Unknown button"; 304 NOTREACHED() << "Unknown button";
302 break; 305 break;
303 } 306 }
304 } 307 }
305 308
306 SkColor FindBarView::GetVectorIconBaseColor() const { 309 SkColor FindBarView::GetVectorIconBaseColor() const {
307 return GetNativeTheme()->GetSystemColor( 310 return GetNativeTheme()->GetSystemColor(
308 ui::NativeTheme::kColorId_TextfieldDefaultColor); 311 ui::NativeTheme::kColorId_TextfieldDefaultColor);
309 } 312 }
310 313
311 //////////////////////////////////////////////////////////////////////////////// 314 ////////////////////////////////////////////////////////////////////////////////
312 // FindBarView, views::TextfieldController implementation: 315 // FindBarView, views::TextfieldController implementation:
313 316
314 bool FindBarView::HandleKeyEvent(views::Textfield* sender, 317 bool FindBarView::HandleKeyEvent(views::Textfield* sender,
315 const ui::KeyEvent& key_event) { 318 const ui::KeyEvent& key_event) {
316 // If the dialog is not visible, there is no reason to process keyboard input. 319 // If the dialog is not visible, there is no reason to process keyboard input.
317 if (!host()->IsVisible()) 320 if (!find_bar_host_->IsVisible())
318 return false; 321 return false;
319 322
320 if (find_bar_host()->MaybeForwardKeyEventToWebpage(key_event)) 323 if (find_bar_host_->MaybeForwardKeyEventToWebpage(key_event))
321 return true; // Handled, we are done! 324 return true; // Handled, we are done!
322 325
323 if (key_event.key_code() == ui::VKEY_RETURN && 326 if (key_event.key_code() == ui::VKEY_RETURN &&
324 key_event.type() == ui::ET_KEY_PRESSED) { 327 key_event.type() == ui::ET_KEY_PRESSED) {
325 // Pressing Return/Enter starts the search (unless text box is empty). 328 // Pressing Return/Enter starts the search (unless text box is empty).
326 base::string16 find_string = find_text_->text(); 329 base::string16 find_string = find_text_->text();
327 if (!find_string.empty()) { 330 if (!find_string.empty()) {
328 FindBarController* controller = find_bar_host()->GetFindBarController(); 331 FindBarController* controller = find_bar_host_->GetFindBarController();
329 FindTabHelper* find_tab_helper = 332 FindTabHelper* find_tab_helper =
330 FindTabHelper::FromWebContents(controller->web_contents()); 333 FindTabHelper::FromWebContents(controller->web_contents());
331 // Search forwards for enter, backwards for shift-enter. 334 // Search forwards for enter, backwards for shift-enter.
332 find_tab_helper->StartFinding(find_string, 335 find_tab_helper->StartFinding(find_string,
333 !key_event.IsShiftDown(), 336 !key_event.IsShiftDown(),
334 false); // Not case sensitive. 337 false); // Not case sensitive.
335 } 338 }
336 return true; 339 return true;
337 } 340 }
338 341
(...skipping 13 matching lines...) Expand all
352 // See http://crbug.com/79002 355 // See http://crbug.com/79002
353 last_searched_text_.clear(); 356 last_searched_text_.clear();
354 } 357 }
355 358
356 views::View* FindBarView::TargetForRect(View* root, const gfx::Rect& rect) { 359 views::View* FindBarView::TargetForRect(View* root, const gfx::Rect& rect) {
357 DCHECK_EQ(match_count_text_, root); 360 DCHECK_EQ(match_count_text_, root);
358 return find_text_; 361 return find_text_;
359 } 362 }
360 363
361 void FindBarView::Find(const base::string16& search_text) { 364 void FindBarView::Find(const base::string16& search_text) {
362 FindBarController* controller = find_bar_host()->GetFindBarController(); 365 FindBarController* controller = find_bar_host_->GetFindBarController();
363 DCHECK(controller); 366 DCHECK(controller);
364 content::WebContents* web_contents = controller->web_contents(); 367 content::WebContents* web_contents = controller->web_contents();
365 // We must guard against a NULL web_contents, which can happen if the text 368 // We must guard against a NULL web_contents, which can happen if the text
366 // in the Find box is changed right after the tab is destroyed. Otherwise, it 369 // in the Find box is changed right after the tab is destroyed. Otherwise, it
367 // can lead to crashes, as exposed by automation testing in issue 8048. 370 // can lead to crashes, as exposed by automation testing in issue 8048.
368 if (!web_contents) 371 if (!web_contents)
369 return; 372 return;
370 FindTabHelper* find_tab_helper = FindTabHelper::FromWebContents(web_contents); 373 FindTabHelper* find_tab_helper = FindTabHelper::FromWebContents(web_contents);
371 374
372 last_searched_text_ = search_text; 375 last_searched_text_ = search_text;
373 376
374 // When the user changes something in the text box we check the contents and 377 // When the user changes something in the text box we check the contents and
375 // if the textbox contains something we set it as the new search string and 378 // if the textbox contains something we set it as the new search string and
376 // initiate search (even though old searches might be in progress). 379 // initiate search (even though old searches might be in progress).
377 if (!search_text.empty()) { 380 if (!search_text.empty()) {
378 // The last two params here are forward (true) and case sensitive (false). 381 // The last two params here are forward (true) and case sensitive (false).
379 find_tab_helper->StartFinding(search_text, true, false); 382 find_tab_helper->StartFinding(search_text, true, false);
380 } else { 383 } else {
381 find_tab_helper->StopFinding(FindBarController::kClearSelectionOnPage); 384 find_tab_helper->StopFinding(FindBarController::kClearSelectionOnPage);
382 UpdateForResult(find_tab_helper->find_result(), base::string16()); 385 UpdateForResult(find_tab_helper->find_result(), base::string16());
383 find_bar_host()->MoveWindowIfNecessary(gfx::Rect()); 386 find_bar_host_->MoveWindowIfNecessary(gfx::Rect());
384 387
385 // Clearing the text box should clear the prepopulate state so that when 388 // Clearing the text box should clear the prepopulate state so that when
386 // we close and reopen the Find box it doesn't show the search we just 389 // we close and reopen the Find box it doesn't show the search we just
387 // deleted. We can't do this on ChromeOS yet because we get ContentsChanged 390 // deleted. We can't do this on ChromeOS yet because we get ContentsChanged
388 // sent for a lot more things than just the user nulling out the search 391 // sent for a lot more things than just the user nulling out the search
389 // terms. See http://crbug.com/45372. 392 // terms. See http://crbug.com/45372.
390 Profile* profile = 393 Profile* profile =
391 Profile::FromBrowserContext(web_contents->GetBrowserContext()); 394 Profile::FromBrowserContext(web_contents->GetBrowserContext());
392 FindBarState* find_bar_state = FindBarStateFactory::GetForProfile(profile); 395 FindBarState* find_bar_state = FindBarStateFactory::GetForProfile(profile);
393 find_bar_state->set_last_prepopulate_text(base::string16()); 396 find_bar_state->set_last_prepopulate_text(base::string16());
394 } 397 }
395 } 398 }
396 399
397 void FindBarView::UpdateMatchCountAppearance(bool no_match) { 400 void FindBarView::UpdateMatchCountAppearance(bool no_match) {
398 bool enable_buttons = !find_text_->text().empty() && !no_match; 401 bool enable_buttons = !find_text_->text().empty() && !no_match;
399 find_previous_button_->SetEnabled(enable_buttons); 402 find_previous_button_->SetEnabled(enable_buttons);
400 find_next_button_->SetEnabled(enable_buttons); 403 find_next_button_->SetEnabled(enable_buttons);
401 } 404 }
402 405
403 FindBarHost* FindBarView::find_bar_host() const {
404 return static_cast<FindBarHost*>(host());
405 }
406
407 const char* FindBarView::GetClassName() const { 406 const char* FindBarView::GetClassName() const {
408 return "FindBarView"; 407 return "FindBarView";
409 } 408 }
410 409
411 void FindBarView::OnNativeThemeChanged(const ui::NativeTheme* theme) { 410 void FindBarView::OnNativeThemeChanged(const ui::NativeTheme* theme) {
412 SkColor bg_color = theme->GetSystemColor( 411 SkColor bg_color = theme->GetSystemColor(
413 ui::NativeTheme::kColorId_TextfieldDefaultBackground); 412 ui::NativeTheme::kColorId_TextfieldDefaultBackground);
414 auto border = base::MakeUnique<views::BubbleBorder>( 413 auto border = base::MakeUnique<views::BubbleBorder>(
415 views::BubbleBorder::NONE, views::BubbleBorder::SMALL_SHADOW, 414 views::BubbleBorder::NONE, views::BubbleBorder::SMALL_SHADOW,
416 bg_color); 415 bg_color);
417 set_background(new views::BubbleBackground(border.get())); 416 set_background(new views::BubbleBackground(border.get()));
418 SetBorder(std::move(border)); 417 SetBorder(std::move(border));
419 418
420 match_count_text_->SetBackgroundColor(bg_color); 419 match_count_text_->SetBackgroundColor(bg_color);
421 SkColor text_color = 420 SkColor text_color =
422 theme->GetSystemColor(ui::NativeTheme::kColorId_TextfieldDefaultColor); 421 theme->GetSystemColor(ui::NativeTheme::kColorId_TextfieldDefaultColor);
423 match_count_text_->SetEnabledColor(SkColorSetA(text_color, 0x69)); 422 match_count_text_->SetEnabledColor(SkColorSetA(text_color, 0x69));
424 separator_->SetColor(SkColorSetA(text_color, 0x26)); 423 separator_->SetColor(SkColorSetA(text_color, 0x26));
425 } 424 }
426 425
OLDNEW
« no previous file with comments | « chrome/browser/ui/views/find_bar_view.h ('k') | chrome/browser/ui/views/frame/browser_header_painter_ash.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698