Index: ui/views/view.cc |
diff --git a/ui/views/view.cc b/ui/views/view.cc |
index fc2d03ec6d3fcf8c6f51c2165c2311a8c2b35da1..375cff4a2ca640a14dbf42c59b3b04411e253b28 100644 |
--- a/ui/views/view.cc |
+++ b/ui/views/view.cc |
@@ -1769,6 +1769,14 @@ void View::SchedulePaintBoundsChanged(SchedulePaintType type) { |
} |
} |
+void View::SchedulePaintOnParent() { |
+ if (parent_) { |
+ // Translate the requested paint rect to the parent's coordinate system |
+ // then pass this notification up to the parent. |
+ parent_->SchedulePaintInRect(ConvertRectToParent(GetLocalBounds())); |
+ } |
+} |
+ |
// Tree operations ------------------------------------------------------------- |
void View::DoRemoveChildView(View* view, |
@@ -2082,6 +2090,12 @@ void View::CreateLayer() { |
Widget* widget = GetWidget(); |
if (widget) |
widget->UpdateRootLayers(); |
+ |
+ // Before having its own Layer, this View may have painted in to a Layer owned |
+ // by an ancestor View. Scheduling a paint on the parent View will erase this |
+ // View's painting effects on the ancestor View's Layer. |
+ // (See crbug.com/551492) |
+ SchedulePaintOnParent(); |
} |
void View::UpdateParentLayers() { |