• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright (c) 2013 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 #ifndef UI_V2_PUBLIC_VIEW_OBSERVER_H_
6 #define UI_V2_PUBLIC_VIEW_OBSERVER_H_
7 
8 #include "ui/v2/public/v2_export.h"
9 
10 namespace gfx {
11 class Rect;
12 }
13 
14 namespace v2 {
15 
16 class View;
17 
18 // Observe View disposition changes. -ing methods are called before the change
19 // is committed, -ed methods are called after.
20 class V2_EXPORT ViewObserver {
21  public:
22   // Whether a notification is being sent before or after some property has
23   // changed.
24   enum DispositionChangePhase {
25     DISPOSITION_CHANGING,
26     DISPOSITION_CHANGED
27   };
28 
29   // Tree.
30   struct TreeChangeParams {
31     TreeChangeParams();
32     View* target;
33     View* old_parent;
34     View* new_parent;
35     View* receiver;
36     DispositionChangePhase phase;
37   };
38 
39   // Called when a node is added or removed. Notifications are sent to the
40   // following hierarchies in this order:
41   // 1. |target|.
42   // 2. |target|'s child hierarchy.
43   // 3. |target|'s parent hierarchy in its |old_parent|
44   //        (only for Changing notifications).
45   // 3. |target|'s parent hierarchy in its |new_parent|.
46   //        (only for Changed notifications).
47   // This sequence is performed via the OnTreeChange notification below before
48   // and after the change is committed.
OnViewTreeChange(const TreeChangeParams & params)49   virtual void OnViewTreeChange(const TreeChangeParams& params) {}
50 
51   // Disposition.
OnViewDestroy(View * view,DispositionChangePhase phase)52   virtual void OnViewDestroy(View* view, DispositionChangePhase phase) {}
OnViewBoundsChanged(View * view,const gfx::Rect & old_bounds,const gfx::Rect & new_bounds)53   virtual void OnViewBoundsChanged(View* view,
54                                    const gfx::Rect& old_bounds,
55                                    const gfx::Rect& new_bounds) {}
OnViewVisibilityChange(View * view,DispositionChangePhase phase)56   virtual void OnViewVisibilityChange(View* view,
57                                       DispositionChangePhase phase) {}
58 
59  protected:
~ViewObserver()60   virtual ~ViewObserver() {}
61 };
62 
63 }  // namespace v2
64 
65 #endif  // UI_V2_PUBLIC_VIEW_OBSERVER_H_
66