summaryrefslogtreecommitdiffstats
path: root/ui/views
diff options
context:
space:
mode:
Diffstat (limited to 'ui/views')
-rw-r--r--ui/views/controls/menu/submenu_view.cc32
-rw-r--r--ui/views/controls/menu/submenu_view.h6
2 files changed, 20 insertions, 18 deletions
diff --git a/ui/views/controls/menu/submenu_view.cc b/ui/views/controls/menu/submenu_view.cc
index 78501f9..52e2909 100644
--- a/ui/views/controls/menu/submenu_view.cc
+++ b/ui/views/controls/menu/submenu_view.cc
@@ -9,6 +9,7 @@
#include "base/compiler_specific.h"
#include "ui/accessibility/ax_view_state.h"
#include "ui/compositor/paint_context.h"
+#include "ui/compositor/paint_recorder.h"
#include "ui/events/event.h"
#include "ui/gfx/canvas.h"
#include "ui/gfx/geometry/safe_integer_conversions.h"
@@ -191,8 +192,25 @@ ui::TextInputClient* SubmenuView::GetTextInputClient() {
void SubmenuView::PaintChildren(const ui::PaintContext& context) {
View::PaintChildren(context);
- if (drop_item_ && drop_position_ != MenuDelegate::DROP_ON)
- PaintDropIndicator(context.canvas(), drop_item_, drop_position_);
+ bool paint_drop_indicator = false;
+ if (drop_item_) {
+ switch (drop_position_) {
+ case MenuDelegate::DROP_NONE:
+ case MenuDelegate::DROP_ON:
+ break;
+ case MenuDelegate::DROP_UNKNOWN:
+ case MenuDelegate::DROP_BEFORE:
+ case MenuDelegate::DROP_AFTER:
+ paint_drop_indicator = true;
+ break;
+ }
+ }
+
+ if (paint_drop_indicator) {
+ gfx::Rect bounds = CalculateDropIndicatorBounds(drop_item_, drop_position_);
+ ui::PaintRecorder recorder(context);
+ recorder.canvas()->FillRect(bounds, kDropIndicatorColor);
+ }
}
bool SubmenuView::GetDropFormats(
@@ -445,16 +463,6 @@ void SubmenuView::OnBoundsChanged(const gfx::Rect& previous_bounds) {
SchedulePaint();
}
-void SubmenuView::PaintDropIndicator(gfx::Canvas* canvas,
- MenuItemView* item,
- MenuDelegate::DropPosition position) {
- if (position == MenuDelegate::DROP_NONE)
- return;
-
- gfx::Rect bounds = CalculateDropIndicatorBounds(item, position);
- canvas->FillRect(bounds, kDropIndicatorColor);
-}
-
void SubmenuView::SchedulePaintForDropIndicator(
MenuItemView* item,
MenuDelegate::DropPosition position) {
diff --git a/ui/views/controls/menu/submenu_view.h b/ui/views/controls/menu/submenu_view.h
index 6f02d7e..d2aebf8 100644
--- a/ui/views/controls/menu/submenu_view.h
+++ b/ui/views/controls/menu/submenu_view.h
@@ -166,12 +166,6 @@ class VIEWS_EXPORT SubmenuView : public PrefixDelegate,
void ChildPreferredSizeChanged(View* child) override;
private:
- // Paints the drop indicator. This is only invoked if item is non-NULL and
- // position is not DROP_NONE.
- void PaintDropIndicator(gfx::Canvas* canvas,
- MenuItemView* item,
- MenuDelegate::DropPosition position);
-
void SchedulePaintForDropIndicator(MenuItemView* item,
MenuDelegate::DropPosition position);