Index: ui/views/style/platform_style.cc |
diff --git a/ui/views/style/platform_style.cc b/ui/views/style/platform_style.cc |
index c2179df3f4a5f0209bc28227ece5941e9639471a..520ececb549a22bf780c8f313808b4ec5b40ba85 100644 |
--- a/ui/views/style/platform_style.cc |
+++ b/ui/views/style/platform_style.cc |
@@ -4,16 +4,39 @@ |
#include "ui/views/style/platform_style.h" |
+#include "ui/base/resource/material_design/material_design_controller.h" |
#include "ui/views/controls/button/label_button.h" |
#include "ui/views/controls/button/label_button_border.h" |
namespace views { |
-#if !defined(OS_MACOSX) |
+#if defined(OS_CHROMEOS) |
// static |
scoped_ptr<LabelButtonBorder> PlatformStyle::CreateLabelButtonBorder( |
Button::ButtonStyle style) { |
- return make_scoped_ptr(new LabelButtonAssetBorder(style)); |
+ if (!ui::MaterialDesignController::IsModeMaterial() || |
+ style != Button::STYLE_TEXTBUTTON) { |
+ return make_scoped_ptr(new LabelButtonAssetBorder(style)); |
+ } |
+ |
+ // The material design spec for Chrome OS includes no visual effects for |
+ // button states, so a non-asset border with insets is used. |
+ scoped_ptr<LabelButtonBorder> border(new views::LabelButtonBorder()); |
+ border->set_insets(views::LabelButtonAssetBorder::GetDefaultInsetsForStyle( |
+ Button::STYLE_TEXTBUTTON)); |
+ return border.Pass(); |
+} |
+#elif !defined(OS_MACOSX) |
+// static |
+scoped_ptr<LabelButtonBorder> PlatformStyle::CreateLabelButtonBorder( |
+ Button::ButtonStyle style) { |
+ scoped_ptr<LabelButtonAssetBorder> border(new LabelButtonAssetBorder(style)); |
+ // The material design spec does not include a visual effect for the |
+ // STATE_HOVERED button state so we have to remove the default one added by |
+ // LabelButtonAssetBorder. |
+ if (ui::MaterialDesignController::IsModeMaterial()) |
+ border->SetPainter(false, Button::STATE_HOVERED, nullptr); |
+ return border.Pass(); |
} |
#endif |