| 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 #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/strings/string_number_conversions.h" | 9 #include "base/strings/string_number_conversions.h" |
| 10 #include "base/strings/string_util.h" | 10 #include "base/strings/string_util.h" |
| (...skipping 10 matching lines...) Expand all Loading... |
| 21 #include "chrome/browser/ui/views/frame/browser_view.h" | 21 #include "chrome/browser/ui/views/frame/browser_view.h" |
| 22 #include "grit/generated_resources.h" | 22 #include "grit/generated_resources.h" |
| 23 #include "grit/theme_resources.h" | 23 #include "grit/theme_resources.h" |
| 24 #include "grit/ui_resources.h" | 24 #include "grit/ui_resources.h" |
| 25 #include "third_party/skia/include/effects/SkGradientShader.h" | 25 #include "third_party/skia/include/effects/SkGradientShader.h" |
| 26 #include "ui/base/l10n/l10n_util.h" | 26 #include "ui/base/l10n/l10n_util.h" |
| 27 #include "ui/base/resource/resource_bundle.h" | 27 #include "ui/base/resource/resource_bundle.h" |
| 28 #include "ui/base/theme_provider.h" | 28 #include "ui/base/theme_provider.h" |
| 29 #include "ui/events/event.h" | 29 #include "ui/events/event.h" |
| 30 #include "ui/gfx/canvas.h" | 30 #include "ui/gfx/canvas.h" |
| 31 #include "ui/views/border.h" | |
| 32 #include "ui/views/controls/button/image_button.h" | 31 #include "ui/views/controls/button/image_button.h" |
| 33 #include "ui/views/controls/label.h" | 32 #include "ui/views/controls/label.h" |
| 34 #include "ui/views/controls/textfield/textfield.h" | 33 #include "ui/views/controls/textfield/textfield.h" |
| 35 #include "ui/views/widget/widget.h" | 34 #include "ui/views/widget/widget.h" |
| 36 | 35 |
| 37 // The amount of whitespace to have before the find button. | 36 // The amount of whitespace to have before the find button. |
| 38 static const int kWhiteSpaceAfterMatchCountLabel = 1; | 37 static const int kWhiteSpaceAfterMatchCountLabel = 1; |
| 39 | 38 |
| 40 // The margins around the search field and the close button. | 39 // The margins around the search field and the close button. |
| 41 static const int kMarginLeftOfCloseButton = 3; | 40 static const int kMarginLeftOfCloseButton = 3; |
| (...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 79 text_box_background_(NULL), | 78 text_box_background_(NULL), |
| 80 text_box_background_left_(NULL) { | 79 text_box_background_left_(NULL) { |
| 81 set_id(VIEW_ID_FIND_IN_PAGE); | 80 set_id(VIEW_ID_FIND_IN_PAGE); |
| 82 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 81 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| 83 | 82 |
| 84 find_text_ = new views::Textfield; | 83 find_text_ = new views::Textfield; |
| 85 find_text_->set_id(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD); | 84 find_text_->set_id(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD); |
| 86 find_text_->set_default_width_in_chars(kDefaultCharWidth); | 85 find_text_->set_default_width_in_chars(kDefaultCharWidth); |
| 87 find_text_->SetController(this); | 86 find_text_->SetController(this); |
| 88 find_text_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_FIND)); | 87 find_text_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_FIND)); |
| 89 // The find bar textfield has a background image instead of a border. | |
| 90 const gfx::Insets insets = find_text_->GetInsets(); | |
| 91 find_text_->set_border( | |
| 92 views::Border::CreateEmptyBorder(insets.top(), 0, insets.bottom(), 2)); | |
| 93 | 88 |
| 94 AddChildView(find_text_); | 89 AddChildView(find_text_); |
| 95 | 90 |
| 96 match_count_text_ = new views::Label(); | 91 match_count_text_ = new views::Label(); |
| 97 AddChildView(match_count_text_); | 92 AddChildView(match_count_text_); |
| 98 | 93 |
| 99 // Create a focus forwarder view which sends focus to find_text_. | 94 // Create a focus forwarder view which sends focus to find_text_. |
| 100 focus_forwarder_view_ = new FocusForwarderView(find_text_); | 95 focus_forwarder_view_ = new FocusForwarderView(find_text_); |
| 101 AddChildView(focus_forwarder_view_); | 96 AddChildView(focus_forwarder_view_); |
| 102 | 97 |
| (...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 337 // The focus forwarder view is a hidden view that should cover the area | 332 // The focus forwarder view is a hidden view that should cover the area |
| 338 // between the find text box and the find button so that when the user clicks | 333 // between the find text box and the find button so that when the user clicks |
| 339 // in that area we focus on the find text box. | 334 // in that area we focus on the find text box. |
| 340 int find_text_edge = find_text_->x() + find_text_->width(); | 335 int find_text_edge = find_text_->x() + find_text_->width(); |
| 341 focus_forwarder_view_->SetBounds( | 336 focus_forwarder_view_->SetBounds( |
| 342 find_text_edge, find_previous_button_->y(), | 337 find_text_edge, find_previous_button_->y(), |
| 343 find_previous_button_->x() - find_text_edge, | 338 find_previous_button_->x() - find_text_edge, |
| 344 find_previous_button_->height()); | 339 find_previous_button_->height()); |
| 345 } | 340 } |
| 346 | 341 |
| 342 void FindBarView::ViewHierarchyChanged( |
| 343 const ViewHierarchyChangedDetails& details) { |
| 344 if (details.is_add && details.child == this) { |
| 345 find_text_->SetHorizontalMargins(0, 2); // Left and Right margins. |
| 346 find_text_->RemoveBorder(); // We draw our own border (a background image). |
| 347 } |
| 348 } |
| 349 |
| 347 gfx::Size FindBarView::GetPreferredSize() { | 350 gfx::Size FindBarView::GetPreferredSize() { |
| 348 gfx::Size prefsize = find_text_->GetPreferredSize(); | 351 gfx::Size prefsize = find_text_->GetPreferredSize(); |
| 349 prefsize.set_height(preferred_height_); | 352 prefsize.set_height(preferred_height_); |
| 350 | 353 |
| 351 // Add up all the preferred sizes and margins of the rest of the controls. | 354 // Add up all the preferred sizes and margins of the rest of the controls. |
| 352 prefsize.Enlarge(kMarginLeftOfCloseButton + kMarginRightOfCloseButton + | 355 prefsize.Enlarge(kMarginLeftOfCloseButton + kMarginRightOfCloseButton + |
| 353 kMarginLeftOfFindTextfield, | 356 kMarginLeftOfFindTextfield, |
| 354 0); | 357 0); |
| 355 prefsize.Enlarge(find_previous_button_->GetPreferredSize().width(), 0); | 358 prefsize.Enlarge(find_previous_button_->GetPreferredSize().width(), 0); |
| 356 prefsize.Enlarge(find_next_button_->GetPreferredSize().width(), 0); | 359 prefsize.Enlarge(find_next_button_->GetPreferredSize().width(), 0); |
| (...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 496 | 499 |
| 497 void FindBarView::OnThemeChanged() { | 500 void FindBarView::OnThemeChanged() { |
| 498 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 501 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
| 499 if (GetThemeProvider()) { | 502 if (GetThemeProvider()) { |
| 500 close_button_->SetBackground( | 503 close_button_->SetBackground( |
| 501 GetThemeProvider()->GetColor(ThemeProperties::COLOR_TAB_TEXT), | 504 GetThemeProvider()->GetColor(ThemeProperties::COLOR_TAB_TEXT), |
| 502 rb.GetImageSkiaNamed(IDR_CLOSE_1), | 505 rb.GetImageSkiaNamed(IDR_CLOSE_1), |
| 503 rb.GetImageSkiaNamed(IDR_CLOSE_1_MASK)); | 506 rb.GetImageSkiaNamed(IDR_CLOSE_1_MASK)); |
| 504 } | 507 } |
| 505 } | 508 } |
| OLD | NEW |