diff --git controls/button/menu_button.cc controls/button/menu_button.cc index 4d1a1b9..7854bb0 100644 --- controls/button/menu_button.cc +++ controls/button/menu_button.cc @@ -199,7 +199,7 @@ void MenuButton::OnPaint(gfx::Canvas* canvas) { gfx::Size MenuButton::GetPreferredSize() const { gfx::Size prefsize = LabelButton::GetPreferredSize(); if (show_menu_marker_) { - prefsize.Enlarge(menu_marker_->width() + kMenuMarkerPaddingLeft + + prefsize.Enlarge(menu_marker_->width() + GetMarkerPaddingLeft() + kMenuMarkerPaddingRight, 0); } @@ -329,7 +329,7 @@ gfx::Rect MenuButton::GetChildAreaBounds() { gfx::Size s = size(); if (show_menu_marker_) { - s.set_width(s.width() - menu_marker_->width() - kMenuMarkerPaddingLeft - + s.set_width(s.width() - menu_marker_->width() - GetMarkerPaddingLeft() - kMenuMarkerPaddingRight); } @@ -415,4 +415,10 @@ int MenuButton::GetMaximumScreenXCoordinate() { return monitor_bounds.right() - 1; } +int MenuButton::GetMarkerPaddingLeft() const { + if (!image()->GetImage().isNull() || !label()->text().empty()) + return kMenuMarkerPaddingLeft; + return kMenuMarkerPaddingRight; +} + } // namespace views diff --git controls/button/menu_button.h controls/button/menu_button.h index 696a941..ce5abcd 100644 --- controls/button/menu_button.h +++ controls/button/menu_button.h @@ -54,6 +54,9 @@ class VIEWS_EXPORT MenuButton : public LabelButton { ~MenuButton() override; bool show_menu_marker() const { return show_menu_marker_; } + void set_show_menu_marker(bool show_menu_marker) { + show_menu_marker_ = show_menu_marker; + } void set_menu_marker(const gfx::ImageSkia* menu_marker) { menu_marker_ = menu_marker; } @@ -116,6 +119,9 @@ class VIEWS_EXPORT MenuButton : public LabelButton { // use this to make sure a menu is never shown off screen. int GetMaximumScreenXCoordinate(); + // Only apply left padding if there's an image or label. + int GetMarkerPaddingLeft() const; + // We use a time object in order to keep track of when the menu was closed. // The time is used for simulating menu behavior for the menu button; that // is, if the menu is shown and the button is pressed, we need to close the diff --git view.h view.h index a85ef3d..42bd451 100644 --- view.h +++ view.h @@ -18,6 +18,7 @@ #include "base/logging.h" #include "base/macros.h" #include "base/memory/scoped_ptr.h" +#include "base/supports_user_data.h" #include "build/build_config.h" #include "ui/accessibility/ax_enums.h" #include "ui/base/accelerators/accelerator.h" @@ -112,7 +113,8 @@ class VIEWS_EXPORT View : public ui::LayerDelegate, public ui::LayerOwner, public ui::AcceleratorTarget, public ui::EventTarget, - public ui::EventHandler { + public ui::EventHandler, + public base::SupportsUserData { public: typedef std::vector Views;