OLD | NEW |
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. |
2 // Use of this source code is governed by a BSD-style license that can be | 2 // Use of this source code is governed by a BSD-style license that can be |
3 // found in the LICENSE file. | 3 // found in the LICENSE file. |
4 | 4 |
5 #ifndef VIEWS_WIDGET_WIDGET_H_ | 5 #ifndef VIEWS_WIDGET_WIDGET_H_ |
6 #define VIEWS_WIDGET_WIDGET_H_ | 6 #define VIEWS_WIDGET_WIDGET_H_ |
7 #pragma once | 7 #pragma once |
8 | 8 |
9 #include <vector> | 9 #include <vector> |
10 | 10 |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
49 // | 49 // |
50 // Encapsulates the platform-specific rendering, event receiving and widget | 50 // Encapsulates the platform-specific rendering, event receiving and widget |
51 // management aspects of the UI framework. | 51 // management aspects of the UI framework. |
52 // | 52 // |
53 // Owns a RootView and thus a View hierarchy. Can contain child Widgets. | 53 // Owns a RootView and thus a View hierarchy. Can contain child Widgets. |
54 // Widget is a platform-independent type that communicates with a platform or | 54 // Widget is a platform-independent type that communicates with a platform or |
55 // context specific NativeWidget implementation. | 55 // context specific NativeWidget implementation. |
56 // | 56 // |
57 // A special note on ownership: | 57 // A special note on ownership: |
58 // | 58 // |
59 // Depending on the value of "delete_on_destroy", the Widget either owns or | 59 // Depending on the value of the InitParams' ownership field, the Widget |
60 // is owned by its NativeWidget: | 60 // either owns or is owned by its NativeWidget: |
61 // | 61 // |
62 // delete_on_destroy = true (default) | 62 // ownership = NATIVE_WIDGET_OWNS_WIDGET (default) |
63 // The Widget instance is owned by its NativeWidget. When the NativeWidget | 63 // The Widget instance is owned by its NativeWidget. When the NativeWidget |
64 // is destroyed (in response to a native destruction message), it deletes | 64 // is destroyed (in response to a native destruction message), it deletes |
65 // the Widget from its destructor. | 65 // the Widget from its destructor. |
66 // delete_on_destroy = false (non-default) | 66 // ownership = WIDGET_OWNS_NATIVE_WIDGET (non-default) |
67 // The Widget instance owns its NativeWidget. This state implies someone | 67 // The Widget instance owns its NativeWidget. This state implies someone |
68 // else wants to control the lifetime of this object. When they destroy | 68 // else wants to control the lifetime of this object. When they destroy |
69 // the Widget it is responsible for destroying the NativeWidget (from its | 69 // the Widget it is responsible for destroying the NativeWidget (from its |
70 // destructor). | 70 // destructor). |
71 // | 71 // |
72 class Widget : public internal::NativeWidgetDelegate, | 72 class Widget : public internal::NativeWidgetDelegate, |
73 public FocusTraversable { | 73 public FocusTraversable { |
74 public: | 74 public: |
75 struct InitParams { | 75 struct InitParams { |
76 enum Type { | 76 enum Type { |
77 TYPE_WINDOW, // A Window, like a frame window. | 77 TYPE_WINDOW, // A Window, like a frame window. |
78 TYPE_CONTROL, // A control, like a button. | 78 TYPE_CONTROL, // A control, like a button. |
79 TYPE_POPUP, // An undecorated Window, with transient properties. | 79 TYPE_POPUP, // An undecorated Window, with transient properties. |
80 TYPE_MENU // An undecorated Window, with transient properties | 80 TYPE_MENU // An undecorated Window, with transient properties |
81 // specialized to menus. | 81 // specialized to menus. |
82 }; | 82 }; |
| 83 enum Ownership { |
| 84 // Default. Creator is not responsible for managing the lifetime of the |
| 85 // Widget, it is destroyed when the corresponding NativeWidget is |
| 86 // destroyed. |
| 87 NATIVE_WIDGET_OWNS_WIDGET, |
| 88 // Used when the Widget is owned by someone other than the NativeWidget, |
| 89 // e.g. a scoped_ptr in tests. |
| 90 WIDGET_OWNS_NATIVE_WIDGET |
| 91 }; |
83 | 92 |
84 InitParams(); | 93 InitParams(); |
85 explicit InitParams(Type type); | 94 explicit InitParams(Type type); |
86 | 95 |
87 Type type; | 96 Type type; |
88 bool child; | 97 bool child; |
89 bool transient; | 98 bool transient; |
90 bool transparent; | 99 bool transparent; |
91 bool accept_events; | 100 bool accept_events; |
92 bool can_activate; | 101 bool can_activate; |
93 bool keep_on_top; | 102 bool keep_on_top; |
94 bool delete_on_destroy; | 103 Ownership ownership; |
95 bool mirror_origin_in_rtl; | 104 bool mirror_origin_in_rtl; |
96 bool has_dropshadow; | 105 bool has_dropshadow; |
97 // Should the widget be double buffered? Default is false. | 106 // Should the widget be double buffered? Default is false. |
98 bool double_buffer; | 107 bool double_buffer; |
99 gfx::NativeView parent; | 108 gfx::NativeView parent; |
100 Widget* parent_widget; | 109 Widget* parent_widget; |
101 gfx::Rect bounds; | 110 gfx::Rect bounds; |
102 NativeWidget* native_widget; | 111 NativeWidget* native_widget; |
103 }; | 112 }; |
104 static InitParams WindowInitParams(); | 113 static InitParams WindowInitParams(); |
(...skipping 288 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
393 scoped_ptr<DefaultThemeProvider> default_theme_provider_; | 402 scoped_ptr<DefaultThemeProvider> default_theme_provider_; |
394 | 403 |
395 // Valid for the lifetime of RunShellDrag(), indicates the view the drag | 404 // Valid for the lifetime of RunShellDrag(), indicates the view the drag |
396 // started from. | 405 // started from. |
397 View* dragged_view_; | 406 View* dragged_view_; |
398 | 407 |
399 // The compositor for accelerated drawing. | 408 // The compositor for accelerated drawing. |
400 scoped_refptr<ui::Compositor> compositor_; | 409 scoped_refptr<ui::Compositor> compositor_; |
401 | 410 |
402 // See class documentation for Widget above for a note about ownership. | 411 // See class documentation for Widget above for a note about ownership. |
403 bool delete_on_destroy_; | 412 InitParams::Ownership ownership_; |
404 | 413 |
405 // See set_is_secondary_widget(). | 414 // See set_is_secondary_widget(). |
406 bool is_secondary_widget_; | 415 bool is_secondary_widget_; |
407 | 416 |
408 DISALLOW_COPY_AND_ASSIGN(Widget); | 417 DISALLOW_COPY_AND_ASSIGN(Widget); |
409 }; | 418 }; |
410 | 419 |
411 } // namespace views | 420 } // namespace views |
412 | 421 |
413 #endif // VIEWS_WIDGET_WIDGET_H_ | 422 #endif // VIEWS_WIDGET_WIDGET_H_ |
OLD | NEW |