Index: ui/views/view.h |
diff --git a/ui/views/view.h b/ui/views/view.h |
index bfa107c7eb59451d32fd8c211537fb1c21eda3d0..d1f69707fda4a74ca022439077464b8205df2fb0 100644 |
--- a/ui/views/view.h |
+++ b/ui/views/view.h |
@@ -340,9 +340,8 @@ class VIEWS_EXPORT View : public ui::LayerDelegate, |
// Compositor. |
void SetPaintToLayer(ui::LayerType layer_type = ui::LAYER_TEXTURED); |
- // Destroys the layer associated with this view, and reparents any descendants |
- // to the destroyed layer's parent. If the view does not currently have a |
- // layer, this has no effect. |
+ // Please refer to the comments above the DestroyLayerImpl() function for |
+ // details. |
void DestroyLayer(); |
// Overridden from ui::LayerOwner: |
@@ -1189,6 +1188,11 @@ class VIEWS_EXPORT View : public ui::LayerDelegate, |
// below layers owned by a view. |
virtual void ReorderChildLayers(ui::Layer* parent_layer); |
+ // Notifies parents about a layer being created or destroyed in a child. An |
+ // example where a subclass may override this method is when it wants to clip |
+ // the child by adding its own layer. |
+ virtual void OnChildLayerChanged(View* child); |
+ |
// Input --------------------------------------------------------------------- |
virtual DragInfo* GetDragInfo(); |
@@ -1448,6 +1452,25 @@ class VIEWS_EXPORT View : public ui::LayerDelegate, |
void UpdateLayerVisibility(); |
void UpdateChildLayerVisibility(bool visible); |
+ enum class LayerChangeNotifyBehavior { |
+ // Notify the parent chain about the layer change. |
+ NOTIFY, |
+ // Don't notify the parent chain about the layer change. |
+ DONT_NOTIFY |
+ }; |
+ |
+ // Destroys the layer associated with this view, and reparents any descendants |
+ // to the destroyed layer's parent. If the view does not currently have a |
+ // layer, this has no effect. |
+ // The |notify_parents| enum controls whether a notification about the layer |
+ // change is sent to the parents. |
+ void DestroyLayerImpl(LayerChangeNotifyBehavior notify_parents); |
+ |
+ // Notifies parents about layering changes in the view. This includes layer |
+ // creation and destruction. |
+ void NotifyParentsOfLayerChange(); |
+ |
+ |
// Orphans the layers in this subtree that are parented to layers outside of |
// this subtree. |
void OrphanLayers(); |