OLD | NEW |
1 // Copyright (c) 2009 The Chromium Authors. All rights reserved. | 1 // Copyright (c) 2009 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_GTK_H_ | 5 #ifndef VIEWS_WIDGET_WIDGET_GTK_H_ |
6 #define VIEWS_WIDGET_WIDGET_GTK_H_ | 6 #define VIEWS_WIDGET_WIDGET_GTK_H_ |
7 | 7 |
8 #include <gtk/gtk.h> | 8 #include <gtk/gtk.h> |
9 | 9 |
10 #include "base/message_loop.h" | 10 #include "base/message_loop.h" |
(...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
92 virtual Widget* GetRootWidget() const; | 92 virtual Widget* GetRootWidget() const; |
93 virtual bool IsVisible() const; | 93 virtual bool IsVisible() const; |
94 virtual bool IsActive() const; | 94 virtual bool IsActive() const; |
95 virtual void GenerateMousePressedForView(View* view, | 95 virtual void GenerateMousePressedForView(View* view, |
96 const gfx::Point& point); | 96 const gfx::Point& point); |
97 virtual TooltipManager* GetTooltipManager(); | 97 virtual TooltipManager* GetTooltipManager(); |
98 virtual bool GetAccelerator(int cmd_id, Accelerator* accelerator); | 98 virtual bool GetAccelerator(int cmd_id, Accelerator* accelerator); |
99 virtual Window* GetWindow(); | 99 virtual Window* GetWindow(); |
100 virtual const Window* GetWindow() const; | 100 virtual const Window* GetWindow() const; |
101 virtual ThemeProvider* GetThemeProvider() const; | 101 virtual ThemeProvider* GetThemeProvider() const; |
| 102 virtual FocusManager* GetFocusManager(); |
102 | 103 |
103 // MessageLoopForUI::Observer. | 104 // MessageLoopForUI::Observer. |
104 virtual void WillProcessEvent(GdkEvent* event) {} | 105 virtual void WillProcessEvent(GdkEvent* event); |
105 virtual void DidProcessEvent(GdkEvent* event); | 106 virtual void DidProcessEvent(GdkEvent* event); |
106 | 107 |
| 108 // Retrieves the WindowGtk associated with |widget|. |
| 109 static WindowGtk* GetWindowForNative(GtkWidget* widget); |
| 110 |
107 protected: | 111 protected: |
108 virtual void OnSizeAllocate(GtkWidget* widget, GtkAllocation* allocation); | 112 virtual void OnSizeAllocate(GtkWidget* widget, GtkAllocation* allocation); |
109 virtual void OnPaint(GtkWidget* widget, GdkEventExpose* event); | 113 virtual void OnPaint(GtkWidget* widget, GdkEventExpose* event); |
110 virtual gboolean OnEnterNotify(GtkWidget* widget, GdkEventCrossing* event); | 114 virtual gboolean OnEnterNotify(GtkWidget* widget, GdkEventCrossing* event); |
111 virtual gboolean OnLeaveNotify(GtkWidget* widget, GdkEventCrossing* event); | 115 virtual gboolean OnLeaveNotify(GtkWidget* widget, GdkEventCrossing* event); |
112 virtual gboolean OnMotionNotify(GtkWidget* widget, GdkEventMotion* event); | 116 virtual gboolean OnMotionNotify(GtkWidget* widget, GdkEventMotion* event); |
113 virtual gboolean OnButtonPress(GtkWidget* widget, GdkEventButton* event); | 117 virtual gboolean OnButtonPress(GtkWidget* widget, GdkEventButton* event); |
114 virtual gboolean OnButtonRelease(GtkWidget* widget, GdkEventButton* event); | 118 virtual gboolean OnButtonRelease(GtkWidget* widget, GdkEventButton* event); |
115 virtual gboolean OnFocusIn(GtkWidget* widget, GdkEventFocus* event) { | 119 virtual gboolean OnFocusIn(GtkWidget* widget, GdkEventFocus* event) { |
116 return false; | 120 return false; |
(...skipping 11 matching lines...) Expand all Loading... |
128 return false; | 132 return false; |
129 } | 133 } |
130 virtual gboolean OnGrabBrokeEvent(GtkWidget* widget, GdkEvent* event); | 134 virtual gboolean OnGrabBrokeEvent(GtkWidget* widget, GdkEvent* event); |
131 virtual void OnGrabNotify(GtkWidget* widget, gboolean was_grabbed); | 135 virtual void OnGrabNotify(GtkWidget* widget, gboolean was_grabbed); |
132 virtual void OnDestroy(); | 136 virtual void OnDestroy(); |
133 | 137 |
134 // Returns whether capture should be released on mouse release. The default | 138 // Returns whether capture should be released on mouse release. The default |
135 // is true. | 139 // is true. |
136 virtual bool ReleaseCaptureOnMouseReleased() { return true; } | 140 virtual bool ReleaseCaptureOnMouseReleased() { return true; } |
137 | 141 |
138 // Sets and retrieves the WidgetGtk in the userdata section of the widget. | 142 // Sets the WindowGtk in the userdata section of the widget. |
139 static WindowGtk* GetWindowForNative(GtkWidget* widget); | |
140 static void SetWindowForNative(GtkWidget* widget, WindowGtk* window); | 143 static void SetWindowForNative(GtkWidget* widget, WindowGtk* window); |
141 | 144 |
142 // Are we a subclass of WindowGtk? | 145 // Are we a subclass of WindowGtk? |
143 bool is_window_; | 146 bool is_window_; |
144 | 147 |
145 private: | 148 private: |
146 virtual RootView* CreateRootView(); | 149 virtual RootView* CreateRootView(); |
147 | 150 |
148 void OnWindowPaint(GtkWidget* widget, GdkEventExpose* event); | 151 void OnWindowPaint(GtkWidget* widget, GdkEventExpose* event); |
149 | 152 |
(...skipping 58 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
208 // Child GtkWidgets created with no parent need to be parented to a valid top | 211 // Child GtkWidgets created with no parent need to be parented to a valid top |
209 // level window otherwise Gtk throws a fit. |null_parent_| is an invisible | 212 // level window otherwise Gtk throws a fit. |null_parent_| is an invisible |
210 // popup that such GtkWidgets are parented to. | 213 // popup that such GtkWidgets are parented to. |
211 static GtkWidget* null_parent_; | 214 static GtkWidget* null_parent_; |
212 | 215 |
213 // The TooltipManager. | 216 // The TooltipManager. |
214 // WARNING: RootView's destructor calls into the TooltipManager. As such, this | 217 // WARNING: RootView's destructor calls into the TooltipManager. As such, this |
215 // must be destroyed AFTER root_view_. | 218 // must be destroyed AFTER root_view_. |
216 scoped_ptr<TooltipManagerGtk> tooltip_manager_; | 219 scoped_ptr<TooltipManagerGtk> tooltip_manager_; |
217 | 220 |
| 221 // The focus manager keeping track of focus for this Widget and any of its |
| 222 // children. NULL for non top-level widgets. |
| 223 // WARNING: RootView's destructor calls into the FocusManager. As such, this |
| 224 // must be destroyed AFTER root_view_. |
| 225 scoped_ptr<FocusManager> focus_manager_; |
| 226 |
218 // The root of the View hierarchy attached to this window. | 227 // The root of the View hierarchy attached to this window. |
219 scoped_ptr<RootView> root_view_; | 228 scoped_ptr<RootView> root_view_; |
220 | 229 |
221 // If true, the mouse is currently down. | 230 // If true, the mouse is currently down. |
222 bool is_mouse_down_; | 231 bool is_mouse_down_; |
223 | 232 |
224 // Have we done a mouse grab? | 233 // Have we done a mouse grab? |
225 bool has_capture_; | 234 bool has_capture_; |
226 | 235 |
227 // The following are used to detect duplicate mouse move events and not | 236 // The following are used to detect duplicate mouse move events and not |
(...skipping 17 matching lines...) Expand all Loading... |
245 bool transparent_; | 254 bool transparent_; |
246 | 255 |
247 scoped_ptr<DefaultThemeProvider> default_theme_provider_; | 256 scoped_ptr<DefaultThemeProvider> default_theme_provider_; |
248 | 257 |
249 DISALLOW_COPY_AND_ASSIGN(WidgetGtk); | 258 DISALLOW_COPY_AND_ASSIGN(WidgetGtk); |
250 }; | 259 }; |
251 | 260 |
252 } // namespace views | 261 } // namespace views |
253 | 262 |
254 #endif // VIEWS_WIDGET_WIDGET_GTK_H_ | 263 #endif // VIEWS_WIDGET_WIDGET_GTK_H_ |
OLD | NEW |