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" |
31 #include "ui/views/controls/button/image_button.h" | 32 #include "ui/views/controls/button/image_button.h" |
32 #include "ui/views/controls/label.h" | 33 #include "ui/views/controls/label.h" |
33 #include "ui/views/controls/textfield/textfield.h" | 34 #include "ui/views/controls/textfield/textfield.h" |
34 #include "ui/views/widget/widget.h" | 35 #include "ui/views/widget/widget.h" |
35 | 36 |
36 // The amount of whitespace to have before the find button. | 37 // The amount of whitespace to have before the find button. |
37 static const int kWhiteSpaceAfterMatchCountLabel = 1; | 38 static const int kWhiteSpaceAfterMatchCountLabel = 1; |
38 | 39 |
39 // The margins around the search field and the close button. | 40 // The margins around the search field and the close button. |
40 static const int kMarginLeftOfCloseButton = 3; | 41 static const int kMarginLeftOfCloseButton = 3; |
(...skipping 37 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
78 text_box_background_(NULL), | 79 text_box_background_(NULL), |
79 text_box_background_left_(NULL) { | 80 text_box_background_left_(NULL) { |
80 set_id(VIEW_ID_FIND_IN_PAGE); | 81 set_id(VIEW_ID_FIND_IN_PAGE); |
81 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 82 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
82 | 83 |
83 find_text_ = new views::Textfield; | 84 find_text_ = new views::Textfield; |
84 find_text_->set_id(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD); | 85 find_text_->set_id(VIEW_ID_FIND_IN_PAGE_TEXT_FIELD); |
85 find_text_->set_default_width_in_chars(kDefaultCharWidth); | 86 find_text_->set_default_width_in_chars(kDefaultCharWidth); |
86 find_text_->SetController(this); | 87 find_text_->SetController(this); |
87 find_text_->SetAccessibleName(l10n_util::GetStringUTF16(IDS_ACCNAME_FIND)); | 88 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)); |
88 | 93 |
89 AddChildView(find_text_); | 94 AddChildView(find_text_); |
90 | 95 |
91 match_count_text_ = new views::Label(); | 96 match_count_text_ = new views::Label(); |
92 AddChildView(match_count_text_); | 97 AddChildView(match_count_text_); |
93 | 98 |
94 // Create a focus forwarder view which sends focus to find_text_. | 99 // Create a focus forwarder view which sends focus to find_text_. |
95 focus_forwarder_view_ = new FocusForwarderView(find_text_); | 100 focus_forwarder_view_ = new FocusForwarderView(find_text_); |
96 AddChildView(focus_forwarder_view_); | 101 AddChildView(focus_forwarder_view_); |
97 | 102 |
(...skipping 234 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
332 // The focus forwarder view is a hidden view that should cover the area | 337 // The focus forwarder view is a hidden view that should cover the area |
333 // between the find text box and the find button so that when the user clicks | 338 // between the find text box and the find button so that when the user clicks |
334 // in that area we focus on the find text box. | 339 // in that area we focus on the find text box. |
335 int find_text_edge = find_text_->x() + find_text_->width(); | 340 int find_text_edge = find_text_->x() + find_text_->width(); |
336 focus_forwarder_view_->SetBounds( | 341 focus_forwarder_view_->SetBounds( |
337 find_text_edge, find_previous_button_->y(), | 342 find_text_edge, find_previous_button_->y(), |
338 find_previous_button_->x() - find_text_edge, | 343 find_previous_button_->x() - find_text_edge, |
339 find_previous_button_->height()); | 344 find_previous_button_->height()); |
340 } | 345 } |
341 | 346 |
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 | |
350 gfx::Size FindBarView::GetPreferredSize() { | 347 gfx::Size FindBarView::GetPreferredSize() { |
351 gfx::Size prefsize = find_text_->GetPreferredSize(); | 348 gfx::Size prefsize = find_text_->GetPreferredSize(); |
352 prefsize.set_height(preferred_height_); | 349 prefsize.set_height(preferred_height_); |
353 | 350 |
354 // Add up all the preferred sizes and margins of the rest of the controls. | 351 // Add up all the preferred sizes and margins of the rest of the controls. |
355 prefsize.Enlarge(kMarginLeftOfCloseButton + kMarginRightOfCloseButton + | 352 prefsize.Enlarge(kMarginLeftOfCloseButton + kMarginRightOfCloseButton + |
356 kMarginLeftOfFindTextfield, | 353 kMarginLeftOfFindTextfield, |
357 0); | 354 0); |
358 prefsize.Enlarge(find_previous_button_->GetPreferredSize().width(), 0); | 355 prefsize.Enlarge(find_previous_button_->GetPreferredSize().width(), 0); |
359 prefsize.Enlarge(find_next_button_->GetPreferredSize().width(), 0); | 356 prefsize.Enlarge(find_next_button_->GetPreferredSize().width(), 0); |
(...skipping 139 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
499 | 496 |
500 void FindBarView::OnThemeChanged() { | 497 void FindBarView::OnThemeChanged() { |
501 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); | 498 ui::ResourceBundle& rb = ui::ResourceBundle::GetSharedInstance(); |
502 if (GetThemeProvider()) { | 499 if (GetThemeProvider()) { |
503 close_button_->SetBackground( | 500 close_button_->SetBackground( |
504 GetThemeProvider()->GetColor(ThemeProperties::COLOR_TAB_TEXT), | 501 GetThemeProvider()->GetColor(ThemeProperties::COLOR_TAB_TEXT), |
505 rb.GetImageSkiaNamed(IDR_CLOSE_1), | 502 rb.GetImageSkiaNamed(IDR_CLOSE_1), |
506 rb.GetImageSkiaNamed(IDR_CLOSE_1_MASK)); | 503 rb.GetImageSkiaNamed(IDR_CLOSE_1_MASK)); |
507 } | 504 } |
508 } | 505 } |
OLD | NEW |