| 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 76 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 87 EventsParam accept_events, | 87 EventsParam accept_events, |
| 88 DeleteParam delete_on_destroy, | 88 DeleteParam delete_on_destroy, |
| 89 MirroringParam mirror_in_rtl); | 89 MirroringParam mirror_in_rtl); |
| 90 | 90 |
| 91 // Enumerates all windows pertaining to us and notifies their | 91 // Enumerates all windows pertaining to us and notifies their |
| 92 // view hierarchies that the locale has changed. | 92 // view hierarchies that the locale has changed. |
| 93 static void NotifyLocaleChanged(); | 93 static void NotifyLocaleChanged(); |
| 94 | 94 |
| 95 Widget(); | 95 Widget(); |
| 96 | 96 |
| 97 // Unconverted methods ------------------------------------------------------- |
| 98 |
| 99 // TODO(beng): |
| 100 // Widget subclasses are still implementing these methods by overriding from |
| 101 // here rather than by implementing NativeWidget. |
| 102 |
| 97 // Initialize the Widget with a parent and an initial desired size. | 103 // Initialize the Widget with a parent and an initial desired size. |
| 98 // |contents_view| is the view that will be the single child of RootView | 104 // |contents_view| is the view that will be the single child of RootView |
| 99 // within this Widget. As contents_view is inserted into RootView's tree, | 105 // within this Widget. As contents_view is inserted into RootView's tree, |
| 100 // RootView assumes ownership of this view and cleaning it up. If you remove | 106 // RootView assumes ownership of this view and cleaning it up. If you remove |
| 101 // this view, you are responsible for its destruction. If this value is NULL, | 107 // this view, you are responsible for its destruction. If this value is NULL, |
| 102 // the caller is responsible for populating the RootView, and sizing its | 108 // the caller is responsible for populating the RootView, and sizing its |
| 103 // contents as the window is sized. | 109 // contents as the window is sized. |
| 104 virtual void Init(gfx::NativeView parent, const gfx::Rect& bounds); | 110 virtual void Init(gfx::NativeView parent, const gfx::Rect& bounds); |
| 105 virtual void InitWithWidget(Widget* parent, const gfx::Rect& bounds); | 111 virtual void InitWithWidget(Widget* parent, const gfx::Rect& bounds); |
| 106 | 112 |
| 113 // Returns the gfx::NativeView associated with this Widget. |
| 114 virtual gfx::NativeView GetNativeView() const; |
| 115 |
| 116 // Starts a drag operation for the specified view. |point| is a position in |
| 117 // |view| coordinates that the drag was initiated from. |
| 118 virtual void GenerateMousePressedForView(View* view, |
| 119 const gfx::Point& point); |
| 120 |
| 121 // Returns the accelerator given a command id. Returns false if there is |
| 122 // no accelerator associated with a given id, which is a common condition. |
| 123 virtual bool GetAccelerator(int cmd_id, ui::Accelerator* accelerator); |
| 124 |
| 125 // Returns the Window containing this Widget, or NULL if not contained in a |
| 126 // window. |
| 127 virtual Window* GetWindow(); |
| 128 virtual const Window* GetWindow() const; |
| 129 |
| 130 // Forwarded from the RootView so that the widget can do any cleanup. |
| 131 virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child); |
| 132 |
| 133 // Converted methods --------------------------------------------------------- |
| 134 |
| 135 // TODO(beng): |
| 136 // Widget subclasses are implementing these methods by implementing |
| 137 // NativeWidget. Remove this comment once complete. |
| 138 |
| 107 // Returns the topmost Widget in a hierarchy. Will return NULL if called | 139 // Returns the topmost Widget in a hierarchy. Will return NULL if called |
| 108 // before the underlying Native Widget has been initialized. | 140 // before the underlying Native Widget has been initialized. |
| 109 Widget* GetTopLevelWidget(); | 141 Widget* GetTopLevelWidget(); |
| 110 const Widget* GetTopLevelWidget() const; | 142 const Widget* GetTopLevelWidget() const; |
| 111 | 143 |
| 112 // Gets/Sets the WidgetDelegate. | 144 // Gets/Sets the WidgetDelegate. |
| 113 WidgetDelegate* widget_delegate() const { return widget_delegate_; } | 145 WidgetDelegate* widget_delegate() const { return widget_delegate_; } |
| 114 void set_widget_delegate(WidgetDelegate* widget_delegate) { | 146 void set_widget_delegate(WidgetDelegate* widget_delegate) { |
| 115 widget_delegate_ = widget_delegate; | 147 widget_delegate_ = widget_delegate; |
| 116 } | 148 } |
| 117 | 149 |
| 118 // Sets the specified view as the contents of this Widget. There can only | 150 // Sets the specified view as the contents of this Widget. There can only |
| 119 // be one contents view child of this Widget's RootView. This view is sized to | 151 // be one contents view child of this Widget's RootView. This view is sized to |
| 120 // fit the entire size of the RootView. The RootView takes ownership of this | 152 // fit the entire size of the RootView. The RootView takes ownership of this |
| 121 // View, unless it is set as not being parent-owned. | 153 // View, unless it is set as not being parent-owned. |
| 122 void SetContentsView(View* view); | 154 void SetContentsView(View* view); |
| 123 | 155 |
| 124 // Returns the bounds of the Widget in screen coordinates. | 156 // Returns the bounds of the Widget in screen coordinates. |
| 125 gfx::Rect GetWindowScreenBounds() const; | 157 gfx::Rect GetWindowScreenBounds() const; |
| 126 | 158 |
| 127 // Returns the bounds of the Widget's client area in screen coordinates. | 159 // Returns the bounds of the Widget's client area in screen coordinates. |
| 128 gfx::Rect GetClientAreaScreenBounds() const; | 160 gfx::Rect GetClientAreaScreenBounds() const; |
| 129 | 161 |
| 130 // Sizes and/or places the widget to the specified bounds, size or position. | 162 // Sizes and/or places the widget to the specified bounds, size or position. |
| 131 virtual void SetBounds(const gfx::Rect& bounds); | 163 void SetBounds(const gfx::Rect& bounds); |
| 132 | 164 |
| 133 // Places the widget in front of the specified widget in z-order. | 165 // Places the widget in front of the specified widget in z-order. |
| 134 virtual void MoveAbove(Widget* widget); | 166 void MoveAbove(Widget* widget); |
| 135 | 167 |
| 136 // Sets a shape on the widget. This takes ownership of shape. | 168 // Sets a shape on the widget. This takes ownership of shape. |
| 137 virtual void SetShape(gfx::NativeRegion shape); | 169 void SetShape(gfx::NativeRegion shape); |
| 138 | 170 |
| 139 // Hides the widget then closes it after a return to the message loop. | 171 // Hides the widget then closes it after a return to the message loop. |
| 140 virtual void Close(); | 172 void Close(); |
| 141 | 173 |
| 174 // TODO(beng): Move off public API. |
| 142 // Closes the widget immediately. Compare to |Close|. This will destroy the | 175 // Closes the widget immediately. Compare to |Close|. This will destroy the |
| 143 // window handle associated with this Widget, so should not be called from | 176 // window handle associated with this Widget, so should not be called from |
| 144 // any code that expects it to be valid beyond this call. | 177 // any code that expects it to be valid beyond this call. |
| 145 virtual void CloseNow(); | 178 void CloseNow(); |
| 146 | 179 |
| 147 // Shows or hides the widget, without changing activation state. | 180 // Shows or hides the widget, without changing activation state. |
| 148 virtual void Show(); | 181 void Show(); |
| 149 virtual void Hide(); | 182 void Hide(); |
| 150 | |
| 151 // Returns the gfx::NativeView associated with this Widget. | |
| 152 virtual gfx::NativeView GetNativeView() const; | |
| 153 | 183 |
| 154 // Sets the opacity of the widget. This may allow widgets behind the widget | 184 // Sets the opacity of the widget. This may allow widgets behind the widget |
| 155 // in the Z-order to become visible, depending on the capabilities of the | 185 // in the Z-order to become visible, depending on the capabilities of the |
| 156 // underlying windowing system. Note that the caller must then schedule a | 186 // underlying windowing system. Note that the caller must then schedule a |
| 157 // repaint to allow this change to take effect. | 187 // repaint to allow this change to take effect. |
| 158 virtual void SetOpacity(unsigned char opacity); | 188 void SetOpacity(unsigned char opacity); |
| 159 | 189 |
| 160 // Sets the widget to be on top of all other widgets in the windowing system. | 190 // Sets the widget to be on top of all other widgets in the windowing system. |
| 161 virtual void SetAlwaysOnTop(bool on_top); | 191 void SetAlwaysOnTop(bool on_top); |
| 162 | 192 |
| 163 // Returns the RootView contained by this Widget. | 193 // Returns the RootView contained by this Widget. |
| 164 virtual RootView* GetRootView(); | 194 RootView* GetRootView(); |
| 165 | 195 |
| 166 // Returns whether the Widget is visible to the user. | 196 // Returns whether the Widget is visible to the user. |
| 167 virtual bool IsVisible() const; | 197 bool IsVisible() const; |
| 168 | 198 |
| 169 // Returns whether the Widget is the currently active window. | 199 // Returns whether the Widget is the currently active window. |
| 170 virtual bool IsActive() const; | 200 bool IsActive() const; |
| 171 | 201 |
| 172 // Returns whether the Widget is customized for accessibility. | 202 // Returns whether the Widget is customized for accessibility. |
| 173 virtual bool IsAccessibleWidget() const; | 203 bool IsAccessibleWidget() const; |
| 174 | |
| 175 // Starts a drag operation for the specified view. |point| is a position in | |
| 176 // |view| coordinates that the drag was initiated from. | |
| 177 virtual void GenerateMousePressedForView(View* view, | |
| 178 const gfx::Point& point); | |
| 179 | |
| 180 // Returns the accelerator given a command id. Returns false if there is | |
| 181 // no accelerator associated with a given id, which is a common condition. | |
| 182 virtual bool GetAccelerator(int cmd_id, ui::Accelerator* accelerator); | |
| 183 | |
| 184 // Returns the Window containing this Widget, or NULL if not contained in a | |
| 185 // window. | |
| 186 virtual Window* GetWindow(); | |
| 187 virtual const Window* GetWindow() const; | |
| 188 | 204 |
| 189 // Returns the ThemeProvider that provides theme resources for this Widget. | 205 // Returns the ThemeProvider that provides theme resources for this Widget. |
| 190 virtual ThemeProvider* GetThemeProvider() const; | 206 virtual ThemeProvider* GetThemeProvider() const; |
| 191 | 207 |
| 192 // Returns the FocusManager for this widget. | 208 // Returns the FocusManager for this widget. |
| 193 // Note that all widgets in a widget hierarchy share the same focus manager. | 209 // Note that all widgets in a widget hierarchy share the same focus manager. |
| 210 // TODO(beng): remove virtual. |
| 194 virtual FocusManager* GetFocusManager(); | 211 virtual FocusManager* GetFocusManager(); |
| 195 | 212 |
| 196 // Forwarded from the RootView so that the widget can do any cleanup. | |
| 197 virtual void ViewHierarchyChanged(bool is_add, View* parent, View* child); | |
| 198 | |
| 199 // Returns true if the native view |native_view| is contained in the | 213 // Returns true if the native view |native_view| is contained in the |
| 200 // views::View hierarchy rooted at this widget. | 214 // views::View hierarchy rooted at this widget. |
| 201 // TODO(beng): const. | 215 // TODO(beng): const. |
| 202 bool ContainsNativeView(gfx::NativeView native_view); | 216 bool ContainsNativeView(gfx::NativeView native_view); |
| 203 | 217 |
| 204 // Starts a drag operation for the specified view. This blocks until the drag | 218 // Starts a drag operation for the specified view. This blocks until the drag |
| 205 // operation completes. |view| can be NULL. | 219 // operation completes. |view| can be NULL. |
| 206 // If the view is non-NULL it can be accessed during the drag by calling | 220 // If the view is non-NULL it can be accessed during the drag by calling |
| 207 // dragged_view(). If the view has not been deleted during the drag, | 221 // dragged_view(). If the view has not been deleted during the drag, |
| 208 // OnDragDone() is called on it. | 222 // OnDragDone() is called on it. |
| 209 void RunShellDrag(View* view, const ui::OSExchangeData& data, int operation); | 223 void RunShellDrag(View* view, const ui::OSExchangeData& data, int operation); |
| 210 | 224 |
| 211 // Returns the view that requested the current drag operation via | 225 // Returns the view that requested the current drag operation via |
| 212 // RunShellDrag(), or NULL if there is no such view or drag operation. | 226 // RunShellDrag(), or NULL if there is no such view or drag operation. |
| 213 View* dragged_view() { return dragged_view_; } | 227 View* dragged_view() { return dragged_view_; } |
| 214 | 228 |
| 215 // Adds the specified |rect| in client area coordinates to the rectangle to be | 229 // Adds the specified |rect| in client area coordinates to the rectangle to be |
| 216 // redrawn. | 230 // redrawn. |
| 217 void SchedulePaintInRect(const gfx::Rect& rect); | 231 void SchedulePaintInRect(const gfx::Rect& rect); |
| 218 | 232 |
| 219 // Sets the currently visible cursor. If |cursor| is NULL, the cursor used | 233 // Sets the currently visible cursor. If |cursor| is NULL, the cursor used |
| 220 // before the current is restored. | 234 // before the current is restored. |
| 221 void SetCursor(gfx::NativeCursor cursor); | 235 void SetCursor(gfx::NativeCursor cursor); |
| 222 | 236 |
| 223 // Retrieves the focus traversable for this widget. | 237 // Retrieves the focus traversable for this widget. |
| 224 virtual FocusTraversable* GetFocusTraversable(); | 238 FocusTraversable* GetFocusTraversable(); |
| 225 | 239 |
| 226 // Notifies the view hierarchy contained in this widget that theme resources | 240 // Notifies the view hierarchy contained in this widget that theme resources |
| 227 // changed. | 241 // changed. |
| 228 void ThemeChanged(); | 242 void ThemeChanged(); |
| 229 | 243 |
| 230 // Notifies the view hierarchy contained in this widget that locale resources | 244 // Notifies the view hierarchy contained in this widget that locale resources |
| 231 // changed. | 245 // changed. |
| 232 void LocaleChanged(); | 246 void LocaleChanged(); |
| 233 | 247 |
| 234 void SetFocusTraversableParent(FocusTraversable* parent); | 248 void SetFocusTraversableParent(FocusTraversable* parent); |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 292 // Valid for the lifetime of RunShellDrag(), indicates the view the drag | 306 // Valid for the lifetime of RunShellDrag(), indicates the view the drag |
| 293 // started from. | 307 // started from. |
| 294 View* dragged_view_; | 308 View* dragged_view_; |
| 295 | 309 |
| 296 DISALLOW_COPY_AND_ASSIGN(Widget); | 310 DISALLOW_COPY_AND_ASSIGN(Widget); |
| 297 }; | 311 }; |
| 298 | 312 |
| 299 } // namespace views | 313 } // namespace views |
| 300 | 314 |
| 301 #endif // VIEWS_WIDGET_WIDGET_H_ | 315 #endif // VIEWS_WIDGET_WIDGET_H_ |
| OLD | NEW |