Chromium Code Reviews| Index: chrome/browser/ui/views/toolbar/wrench_toolbar_button.cc |
| diff --git a/chrome/browser/ui/views/toolbar/wrench_toolbar_button.cc b/chrome/browser/ui/views/toolbar/wrench_toolbar_button.cc |
| index 1aeca46e55880e38d6731f9fdf889c2996c21430..35b104d13b3e1e705c31e32207a29fcf2e1f21e7 100644 |
| --- a/chrome/browser/ui/views/toolbar/wrench_toolbar_button.cc |
| +++ b/chrome/browser/ui/views/toolbar/wrench_toolbar_button.cc |
| @@ -8,11 +8,13 @@ |
| #include "base/single_thread_task_runner.h" |
| #include "base/thread_task_runner_handle.h" |
| #include "base/time/time.h" |
| +#include "chrome/browser/themes/theme_properties.h" |
| #include "chrome/browser/ui/browser.h" |
| #include "chrome/browser/ui/views/extensions/browser_action_drag_data.h" |
| #include "chrome/browser/ui/views/toolbar/toolbar_view.h" |
| #include "extensions/common/feature_switch.h" |
| #include "grit/theme_resources.h" |
| +#include "ui/base/resource/material_design/material_design_controller.h" |
| #include "ui/base/resource/resource_bundle.h" |
| #include "ui/base/theme_provider.h" |
| #include "ui/views/controls/button/label_button_border.h" |
| @@ -24,11 +26,14 @@ bool WrenchToolbarButton::g_open_wrench_immediately_for_testing = false; |
| WrenchToolbarButton::WrenchToolbarButton(ToolbarView* toolbar_view) |
| : views::MenuButton(NULL, base::string16(), toolbar_view, false), |
| - wrench_icon_painter_(new WrenchIconPainter(this)), |
| + wrench_icon_painter_(nullptr), |
| toolbar_view_(toolbar_view), |
| allow_extension_dragging_( |
| - extensions::FeatureSwitch::extension_action_redesign()->IsEnabled()), |
| + extensions::FeatureSwitch::extension_action_redesign() |
| + ->IsEnabled()), |
| weak_factory_(this) { |
| + if (!ui::MaterialDesignController::IsModeMaterial()) |
| + wrench_icon_painter_.reset(new WrenchIconPainter(this)); |
| } |
| WrenchToolbarButton::~WrenchToolbarButton() { |
| @@ -36,11 +41,25 @@ WrenchToolbarButton::~WrenchToolbarButton() { |
| void WrenchToolbarButton::SetSeverity(WrenchIconPainter::Severity severity, |
| bool animate) { |
| + if (!wrench_icon_painter_) |
|
bruthig
2015/08/07 16:43:15
Consider using "if (ui::MaterialDesignController::
jonross
2015/08/07 17:33:46
Done.
|
| + return; |
| + |
| wrench_icon_painter_->SetSeverity(severity, animate); |
| SchedulePaint(); |
| } |
| gfx::Size WrenchToolbarButton::GetPreferredSize() const { |
| + if (ui::MaterialDesignController::IsModeMaterial()) { |
| + gfx::Size size(image()->GetPreferredSize()); |
| + ui::ThemeProvider* provider = GetThemeProvider(); |
| + if (provider && provider->UsingSystemTheme()) { |
| + int inset = provider->GetDisplayProperty( |
| + ThemeProperties::PROPERTY_TOOLBAR_BUTTON_BORDER_INSET); |
| + size.Enlarge(2 * inset, 2 * inset); |
| + } |
| + return size; |
| + } |
| + |
| return ResourceBundle::GetSharedInstance(). |
| GetImageSkiaNamed(IDR_TOOLBAR_BEZEL_HOVER)->size(); |
| } |
| @@ -101,6 +120,8 @@ int WrenchToolbarButton::OnPerformDrop(const ui::DropTargetEvent& event) { |
| void WrenchToolbarButton::OnPaint(gfx::Canvas* canvas) { |
| views::MenuButton::OnPaint(canvas); |
| + if (!wrench_icon_painter_) |
| + return; |
| wrench_icon_painter_->Paint(canvas, |
| GetThemeProvider(), |
| gfx::Rect(size()), |