Index: ui/views/view.cc |
diff --git a/ui/views/view.cc b/ui/views/view.cc |
index e085544e1a524354f2a09cfd51a9e5e5b6ac5266..59281e3d68e33c9bb62d96e2cced3ad9b8574438 100644 |
--- a/ui/views/view.cc |
+++ b/ui/views/view.cc |
@@ -1767,6 +1767,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, |
@@ -2080,6 +2088,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() { |