diff options
author | danakj <danakj@chromium.org> | 2015-04-07 11:55:15 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2015-04-07 18:57:17 +0000 |
commit | d2d3689d1c73e1573ce951e50510078f04c4efc0 (patch) | |
tree | 917cc6731b75176a9ae6cc12181255defd20f58c /ui | |
parent | 900997341ee5c7076b345ce35c6644226a507f6d (diff) | |
download | chromium_src-d2d3689d1c73e1573ce951e50510078f04c4efc0.zip chromium_src-d2d3689d1c73e1573ce951e50510078f04c4efc0.tar.gz chromium_src-d2d3689d1c73e1573ce951e50510078f04c4efc0.tar.bz2 |
views: Make SubmenuView::PaintChildren use the canvas via PaintRecorder
This uses a PaintRecorder to get at the canvas() for painting, instead
of grabbing it directly off PaintContext. This will allow PaintContext
to be backed by a DisplayItemList instead of a Canvas.
R=sadrul, sky
BUG=466426
Review URL: https://codereview.chromium.org/1064763002
Cr-Commit-Position: refs/heads/master@{#324080}
Diffstat (limited to 'ui')
-rw-r--r-- | ui/views/controls/menu/submenu_view.cc | 32 | ||||
-rw-r--r-- | ui/views/controls/menu/submenu_view.h | 6 |
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); |