Index: ui/views/view.cc |
diff --git a/ui/views/view.cc b/ui/views/view.cc |
index 04c5f2fae25957c3ca3b706654e263fc8b3c6638..529867365d987c4c8bce6daa0c0734ef272aecf0 100644 |
--- a/ui/views/view.cc |
+++ b/ui/views/view.cc |
@@ -1516,6 +1516,10 @@ void View::NativeViewHierarchyChanged() { |
} |
} |
+void View::AddedToWidget() {} |
+ |
+void View::RemovedFromWidget() {} |
+ |
// Painting -------------------------------------------------------------------- |
void View::PaintChildren(const ui::PaintContext& context) { |
@@ -2012,6 +2016,20 @@ void View::ViewHierarchyChangedImpl( |
} |
ViewHierarchyChanged(details); |
+ |
+ if (details.is_add) { |
+ const auto widget = GetWidget(); |
+ if (widget != nullptr && widget != attached_widget_) { |
+ attached_widget_ = widget; |
+ AddedToWidget(); |
+ } |
+ } else if (details.child == this) { |
+ if (attached_widget_) { |
+ RemovedFromWidget(); |
+ attached_widget_ = nullptr; |
+ } |
+ } |
+ |
details.parent->needs_layout_ = true; |
} |