1 // Copyright 2014 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
5 #include "chrome/browser/ui/views/location_bar/search_button.h"
7 #include "grit/theme_resources.h"
8 #include "ui/base/theme_provider.h"
9 #include "ui/views/controls/button/label_button_border.h"
11 SearchButton::SearchButton(views::ButtonListener
* listener
)
12 : views::LabelButton(listener
, base::string16()) {
13 EnableCanvasFlippingForRTLUI(true);
14 set_triggerable_event_flags(
15 ui::EF_LEFT_MOUSE_BUTTON
| ui::EF_MIDDLE_MOUSE_BUTTON
);
16 SetStyle(views::Button::STYLE_BUTTON
);
18 SetMinSize(gfx::Size());
19 scoped_ptr
<views::LabelButtonBorder
> border(
20 new views::LabelButtonBorder(style()));
21 border
->set_insets(gfx::Insets());
22 const int kSearchButtonNormalImages
[] = IMAGE_GRID(IDR_OMNIBOX_SEARCH_BUTTON
);
24 false, views::Button::STATE_NORMAL
,
25 views::Painter::CreateImageGridPainter(kSearchButtonNormalImages
));
26 const int kSearchButtonHoveredImages
[] =
27 IMAGE_GRID(IDR_OMNIBOX_SEARCH_BUTTON_HOVER
);
29 false, views::Button::STATE_HOVERED
,
30 views::Painter::CreateImageGridPainter(kSearchButtonHoveredImages
));
31 const int kSearchButtonPressedImages
[] =
32 IMAGE_GRID(IDR_OMNIBOX_SEARCH_BUTTON_PRESSED
);
34 false, views::Button::STATE_PRESSED
,
35 views::Painter::CreateImageGridPainter(kSearchButtonPressedImages
));
36 border
->SetPainter(false, views::Button::STATE_DISABLED
, NULL
);
37 border
->SetPainter(true, views::Button::STATE_NORMAL
, NULL
);
38 border
->SetPainter(true, views::Button::STATE_HOVERED
, NULL
);
39 border
->SetPainter(true, views::Button::STATE_PRESSED
, NULL
);
40 border
->SetPainter(true, views::Button::STATE_DISABLED
, NULL
);
41 SetBorder(border
.Pass());
42 const int kSearchButtonWidth
= 56;
43 SetMinSize(gfx::Size(kSearchButtonWidth
, 0));
46 SearchButton::~SearchButton() {
49 void SearchButton::UpdateIcon(bool is_search
) {
51 views::Button::STATE_NORMAL
,
52 *GetThemeProvider()->GetImageSkiaNamed(is_search
?
53 IDR_OMNIBOX_SEARCH_BUTTON_LOUPE
: IDR_OMNIBOX_SEARCH_BUTTON_ARROW
));
54 // Flip the arrow for RTL, but not the loupe.
55 image()->EnableCanvasFlippingForRTLUI(!is_search
);