From eeecca69d007750b58830b21f67788270ec4dcfb Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 28 Sep 2016 15:02:45 -0700 Subject: [PATCH 1/3] Add ink drop to menu bar buttons --- atom/browser/ui/views/submenu_button.cc | 33 +++++++++++++++++++++++++ atom/browser/ui/views/submenu_button.h | 7 ++++++ 2 files changed, 40 insertions(+) diff --git a/atom/browser/ui/views/submenu_button.cc b/atom/browser/ui/views/submenu_button.cc index ca06d7d627ef4..d2c0431d1da7d 100644 --- a/atom/browser/ui/views/submenu_button.cc +++ b/atom/browser/ui/views/submenu_button.cc @@ -7,7 +7,10 @@ #include "base/strings/string_util.h" #include "base/strings/utf_string_conversions.h" #include "ui/gfx/canvas.h" +#include "ui/gfx/color_utils.h" #include "ui/gfx/text_utils.h" +#include "ui/views/animation/ink_drop_host_view.h" +#include "ui/views/animation/flood_fill_ink_drop_ripple.h" #include "ui/views/controls/button/label_button_border.h" namespace atom { @@ -44,11 +47,41 @@ SubmenuButton::SubmenuButton(views::ButtonListener* listener, &underline_end_)) gfx::Canvas::SizeStringInt(GetText(), GetFontList(), &text_width_, &text_height_, 0, 0); + + SetHasInkDrop(true); + set_ink_drop_base_color(color_utils::BlendTowardOppositeLuma( + color_utils::GetSysSkColor(COLOR_MENUBAR), 0x61)); } SubmenuButton::~SubmenuButton() { } +std::unique_ptr SubmenuButton::CreateInkDropRipple() + const { + return base::MakeUnique( + GetLocalBounds(), + GetInkDropCenterBasedOnLastEvent(), + GetInkDropBaseColor() + ink_drop_visible_opacity()); +} + +std::unique_ptr + SubmenuButton::CreateInkDropHighlight() const { + if (!ShouldShowInkDropHighlight()) + return nullptr; + + gfx::Size size = GetLocalBounds().size(); + return base::MakeUnique( + size, + kInkDropSmallCornerRadius, + gfx::RectF(gfx::SizeF(size)).CenterPoint(), + GetInkDropBaseColor()); +} + +bool SubmenuButton::ShouldShowInkDropForFocus() const { + return false; +} + void SubmenuButton::SetAcceleratorVisibility(bool visible) { if (visible == show_underline_) return; diff --git a/atom/browser/ui/views/submenu_button.h b/atom/browser/ui/views/submenu_button.h index 3f72a60c10b49..6a87aa10b540d 100644 --- a/atom/browser/ui/views/submenu_button.h +++ b/atom/browser/ui/views/submenu_button.h @@ -6,6 +6,7 @@ #define ATOM_BROWSER_UI_VIEWS_SUBMENU_BUTTON_H_ #include "ui/views/controls/button/menu_button.h" +#include "ui/views/animation/ink_drop_highlight.h" namespace atom { @@ -28,6 +29,12 @@ class SubmenuButton : public views::MenuButton { // views::MenuButton: void OnPaint(gfx::Canvas* canvas) override; + // views::InkDropHostView: + std::unique_ptr CreateInkDropRipple() const override; + std::unique_ptr CreateInkDropHighlight() + const override; + bool ShouldShowInkDropForFocus() const override; + private: bool GetUnderlinePosition(const base::string16& text, base::char16* accelerator, From ed1c10fe32696760cc819a87dd4e9ec8284fed83 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Wed, 28 Sep 2016 15:08:12 -0700 Subject: [PATCH 2/3] Pass background color to submenu button --- atom/browser/ui/views/menu_bar.cc | 5 ++++- atom/browser/ui/views/submenu_button.cc | 12 +++++++----- atom/browser/ui/views/submenu_button.h | 4 +++- 3 files changed, 14 insertions(+), 7 deletions(-) diff --git a/atom/browser/ui/views/menu_bar.cc b/atom/browser/ui/views/menu_bar.cc index cb7af509cc8a0..0530ec6d4010c 100644 --- a/atom/browser/ui/views/menu_bar.cc +++ b/atom/browser/ui/views/menu_bar.cc @@ -63,7 +63,10 @@ void MenuBar::SetMenu(AtomMenuModel* model) { RemoveAllChildViews(true); for (int i = 0; i < model->GetItemCount(); ++i) { - SubmenuButton* button = new SubmenuButton(this, model->GetLabelAt(i), this); + SubmenuButton* button = new SubmenuButton(this, + model->GetLabelAt(i), + this, + background_color_); button->set_tag(i); #if defined(USE_X11) diff --git a/atom/browser/ui/views/submenu_button.cc b/atom/browser/ui/views/submenu_button.cc index d2c0431d1da7d..be3cbafe99626 100644 --- a/atom/browser/ui/views/submenu_button.cc +++ b/atom/browser/ui/views/submenu_button.cc @@ -28,7 +28,8 @@ base::string16 FilterAccelerator(const base::string16& label) { SubmenuButton::SubmenuButton(views::ButtonListener* listener, const base::string16& title, - views::MenuButtonListener* menu_button_listener) + views::MenuButtonListener* menu_button_listener, + const SkColor& background_color) : views::MenuButton(FilterAccelerator(title), menu_button_listener, false), accelerator_(0), @@ -37,7 +38,8 @@ SubmenuButton::SubmenuButton(views::ButtonListener* listener, underline_end_(-1), text_width_(0), text_height_(0), - underline_color_(SK_ColorBLACK) { + underline_color_(SK_ColorBLACK), + background_color_(background_color) { #if defined(OS_LINUX) // Dont' use native style border. SetBorder(std::move(CreateDefaultBorder())); @@ -49,8 +51,8 @@ SubmenuButton::SubmenuButton(views::ButtonListener* listener, &text_height_, 0, 0); SetHasInkDrop(true); - set_ink_drop_base_color(color_utils::BlendTowardOppositeLuma( - color_utils::GetSysSkColor(COLOR_MENUBAR), 0x61)); + set_ink_drop_base_color( + color_utils::BlendTowardOppositeLuma(background_color_, 0x61)); } SubmenuButton::~SubmenuButton() { @@ -61,7 +63,7 @@ std::unique_ptr SubmenuButton::CreateInkDropRipple() return base::MakeUnique( GetLocalBounds(), GetInkDropCenterBasedOnLastEvent(), - GetInkDropBaseColor() + GetInkDropBaseColor(), ink_drop_visible_opacity()); } diff --git a/atom/browser/ui/views/submenu_button.h b/atom/browser/ui/views/submenu_button.h index 6a87aa10b540d..d5402d3c9d485 100644 --- a/atom/browser/ui/views/submenu_button.h +++ b/atom/browser/ui/views/submenu_button.h @@ -15,7 +15,8 @@ class SubmenuButton : public views::MenuButton { public: SubmenuButton(views::ButtonListener* listener, const base::string16& title, - views::MenuButtonListener* menu_button_listener); + views::MenuButtonListener* menu_button_listener, + const SkColor& background_color); virtual ~SubmenuButton(); void SetAcceleratorVisibility(bool visible); @@ -51,6 +52,7 @@ class SubmenuButton : public views::MenuButton { int text_width_; int text_height_; SkColor underline_color_; + SkColor background_color_; DISALLOW_COPY_AND_ASSIGN(SubmenuButton); }; From 8e2f35e36b8a07dc85bd353fbb3ed7f20cb65669 Mon Sep 17 00:00:00 2001 From: Kevin Sawicki Date: Thu, 29 Sep 2016 08:40:18 -0700 Subject: [PATCH 3/3] Sort includes --- atom/browser/ui/views/submenu_button.cc | 2 +- atom/browser/ui/views/submenu_button.h | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/atom/browser/ui/views/submenu_button.cc b/atom/browser/ui/views/submenu_button.cc index be3cbafe99626..49a678a035848 100644 --- a/atom/browser/ui/views/submenu_button.cc +++ b/atom/browser/ui/views/submenu_button.cc @@ -9,8 +9,8 @@ #include "ui/gfx/canvas.h" #include "ui/gfx/color_utils.h" #include "ui/gfx/text_utils.h" -#include "ui/views/animation/ink_drop_host_view.h" #include "ui/views/animation/flood_fill_ink_drop_ripple.h" +#include "ui/views/animation/ink_drop_host_view.h" #include "ui/views/controls/button/label_button_border.h" namespace atom { diff --git a/atom/browser/ui/views/submenu_button.h b/atom/browser/ui/views/submenu_button.h index d5402d3c9d485..c798b02c8d938 100644 --- a/atom/browser/ui/views/submenu_button.h +++ b/atom/browser/ui/views/submenu_button.h @@ -5,8 +5,8 @@ #ifndef ATOM_BROWSER_UI_VIEWS_SUBMENU_BUTTON_H_ #define ATOM_BROWSER_UI_VIEWS_SUBMENU_BUTTON_H_ -#include "ui/views/controls/button/menu_button.h" #include "ui/views/animation/ink_drop_highlight.h" +#include "ui/views/controls/button/menu_button.h" namespace atom { @@ -33,7 +33,7 @@ class SubmenuButton : public views::MenuButton { // views::InkDropHostView: std::unique_ptr CreateInkDropRipple() const override; std::unique_ptr CreateInkDropHighlight() - const override; + const override; bool ShouldShowInkDropForFocus() const override; private: