summaryrefslogtreecommitdiffstats
path: root/ui
diff options
context:
space:
mode:
authordanakj <danakj@chromium.org>2015-04-07 11:55:15 -0700
committerCommit bot <commit-bot@chromium.org>2015-04-07 18:57:17 +0000
commitd2d3689d1c73e1573ce951e50510078f04c4efc0 (patch)
tree917cc6731b75176a9ae6cc12181255defd20f58c /ui
parent900997341ee5c7076b345ce35c6644226a507f6d (diff)
downloadchromium_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.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);