Index: ui/views/view.cc |
diff --git a/ui/views/view.cc b/ui/views/view.cc |
index 0fc755972d6d57de055a7ea9d31fa11733eaf13b..7093d056850bd1c0a0f3e69c0c450192734334e5 100644 |
--- a/ui/views/view.cc |
+++ b/ui/views/view.cc |
@@ -777,7 +777,7 @@ void View::Paint(const ui::PaintContext& parent_context) { |
// If the view is backed by a layer, it should paint with itself as the origin |
// rather than relative to its parent. |
- ui::ClipTransformRecorder clip_transform_recorder(context); |
+ ui::ClipTransformRecorder clip_transform_recorder(context, size()); |
if (!layer()) { |
// Set the clip rect to the bounds of this View. Note that the X (or left) |
// position we pass to ClipRect takes into consideration whether or not the |
@@ -800,7 +800,10 @@ void View::Paint(const ui::PaintContext& parent_context) { |
clip_transform_recorder.Transform(transform_from_parent); |
} |
- if (is_invalidated || !paint_cache_.UseCache(context)) { |
+ // Note that the cache is not aware of the offset of the view |
+ // relative to the parent since painting is always done relative to |
+ // the top left of the individual view. |
+ if (is_invalidated || !paint_cache_.UseCache(context, size())) { |
ui::PaintRecorder recorder(context, size(), &paint_cache_); |
gfx::Canvas* canvas = recorder.canvas(); |