80 lines
3.0 KiB
Diff
80 lines
3.0 KiB
Diff
diff --git controls/button/menu_button.cc controls/button/menu_button.cc
|
|
index 173194b..8bb4f6e 100644
|
|
--- controls/button/menu_button.cc
|
|
+++ controls/button/menu_button.cc
|
|
@@ -193,7 +193,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);
|
|
}
|
|
@@ -323,7 +323,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);
|
|
}
|
|
|
|
@@ -412,4 +412,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 b0ddf331..4d573ed 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 fcbee85..8ba4fd0 100644
|
|
--- view.h
|
|
+++ view.h
|
|
@@ -18,6 +18,7 @@
|
|
#include "base/i18n/rtl.h"
|
|
#include "base/logging.h"
|
|
#include "base/macros.h"
|
|
+#include "base/supports_user_data.h"
|
|
#include "build/build_config.h"
|
|
#include "ui/accessibility/ax_enums.h"
|
|
#include "ui/base/accelerators/accelerator.h"
|
|
@@ -114,7 +115,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:
|
|
using Views = std::vector<View*>;
|
|
|