Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(64)

Side by Side Diff: views/controls/menu/menu_host_gtk.cc

Issue 6756043: Consolidate Widget Event code, other cleanup. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: Sync and merge. Created 9 years, 8 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch | Annotate | Revision Log
« no previous file with comments | « views/controls/menu/menu_host_gtk.h ('k') | views/controls/menu/menu_host_win.h » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
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 #include "views/controls/menu/menu_host_gtk.h" 5 #include "views/controls/menu/menu_host_gtk.h"
6 6
7 #include <gdk/gdk.h> 7 #include <gdk/gdk.h>
8 8
9 #if defined(HAVE_XINPUT2) && defined(TOUCH_UI) 9 #if defined(HAVE_XINPUT2) && defined(TOUCH_UI)
10 #include <gdk/gdkx.h> 10 #include <gdk/gdkx.h>
(...skipping 71 matching lines...) Expand 10 before | Expand all | Expand 10 after
82 // window now, it means AcceleratorHandler attempts to use a window that has 82 // window now, it means AcceleratorHandler attempts to use a window that has
83 // been destroyed. 83 // been destroyed.
84 Close(); 84 Close();
85 } 85 }
86 86
87 void MenuHostGtk::SetMenuHostBounds(const gfx::Rect& bounds) { 87 void MenuHostGtk::SetMenuHostBounds(const gfx::Rect& bounds) {
88 SetBounds(bounds); 88 SetBounds(bounds);
89 } 89 }
90 90
91 void MenuHostGtk::ReleaseMenuHostCapture() { 91 void MenuHostGtk::ReleaseMenuHostCapture() {
92 ReleaseNativeCapture(); 92 ReleaseMouseCapture();
93 } 93 }
94 94
95 gfx::NativeWindow MenuHostGtk::GetMenuHostWindow() { 95 gfx::NativeWindow MenuHostGtk::GetMenuHostWindow() {
96 return GTK_WINDOW(GetNativeView()); 96 return GTK_WINDOW(GetNativeView());
97 } 97 }
98 98
99 //////////////////////////////////////////////////////////////////////////////// 99 ////////////////////////////////////////////////////////////////////////////////
100 // MenuHostGtk, WidgetGtk overrides: 100 // MenuHostGtk, WidgetGtk overrides:
101 101
102 RootView* MenuHostGtk::CreateRootView() { 102 RootView* MenuHostGtk::CreateRootView() {
103 return new MenuHostRootView(this, submenu_); 103 return new MenuHostRootView(this, submenu_);
104 } 104 }
105 105
106 bool MenuHostGtk::ReleaseCaptureOnMouseReleased() { 106 bool MenuHostGtk::ShouldReleaseCaptureOnMouseReleased() const {
107 return false; 107 return false;
108 } 108 }
109 109
110 void MenuHostGtk::ReleaseNativeCapture() { 110 void MenuHostGtk::ReleaseMouseCapture() {
111 WidgetGtk::ReleaseNativeCapture(); 111 WidgetGtk::ReleaseMouseCapture();
112 if (did_input_grab_) { 112 if (did_input_grab_) {
113 did_input_grab_ = false; 113 did_input_grab_ = false;
114 gdk_pointer_ungrab(GDK_CURRENT_TIME); 114 gdk_pointer_ungrab(GDK_CURRENT_TIME);
115 gdk_keyboard_ungrab(GDK_CURRENT_TIME); 115 gdk_keyboard_ungrab(GDK_CURRENT_TIME);
116 #if defined(HAVE_XINPUT2) && defined(TOUCH_UI) 116 #if defined(HAVE_XINPUT2) && defined(TOUCH_UI)
117 TouchFactory::GetInstance()->UngrabTouchDevices( 117 TouchFactory::GetInstance()->UngrabTouchDevices(
118 GDK_WINDOW_XDISPLAY(window_contents()->window)); 118 GDK_WINDOW_XDISPLAY(window_contents()->window));
119 #endif 119 #endif
120 } 120 }
121 } 121 }
(...skipping 13 matching lines...) Expand all
135 if (did_input_grab_ && !destroying_) { 135 if (did_input_grab_ && !destroying_) {
136 did_input_grab_ = false; 136 did_input_grab_ = false;
137 CancelAllIfNoDrag(); 137 CancelAllIfNoDrag();
138 } 138 }
139 WidgetGtk::HandleXGrabBroke(); 139 WidgetGtk::HandleXGrabBroke();
140 } 140 }
141 141
142 void MenuHostGtk::HandleGtkGrabBroke() { 142 void MenuHostGtk::HandleGtkGrabBroke() {
143 // Grab can be broken by drag & drop, other menu or screen locker. 143 // Grab can be broken by drag & drop, other menu or screen locker.
144 if (did_input_grab_ && !destroying_) { 144 if (did_input_grab_ && !destroying_) {
145 ReleaseNativeCapture(); 145 ReleaseMouseCapture();
146 CancelAllIfNoDrag(); 146 CancelAllIfNoDrag();
147 } 147 }
148 WidgetGtk::HandleGtkGrabBroke(); 148 WidgetGtk::HandleGtkGrabBroke();
149 } 149 }
150 150
151 //////////////////////////////////////////////////////////////////////////////// 151 ////////////////////////////////////////////////////////////////////////////////
152 // MenuHostGtk, private: 152 // MenuHostGtk, private:
153 153
154 void MenuHostGtk::DoCapture() { 154 void MenuHostGtk::DoCapture() {
155 DCHECK(!did_input_grab_); 155 DCHECK(!did_input_grab_);
156 156
157 // Release the current grab. 157 // Release the current grab.
158 GtkWidget* current_grab_window = gtk_grab_get_current(); 158 GtkWidget* current_grab_window = gtk_grab_get_current();
159 if (current_grab_window) 159 if (current_grab_window)
160 gtk_grab_remove(current_grab_window); 160 gtk_grab_remove(current_grab_window);
161 161
162 // Make sure all app mouse/keyboard events are targetted at us only. 162 // Make sure all app mouse/keyboard events are targetted at us only.
163 SetNativeCapture(); 163 SetMouseCapture();
164 164
165 // And do a grab. NOTE: we do this to ensure we get mouse/keyboard 165 // And do a grab. NOTE: we do this to ensure we get mouse/keyboard
166 // events from other apps, a grab done with gtk_grab_add doesn't get 166 // events from other apps, a grab done with gtk_grab_add doesn't get
167 // events from other apps. 167 // events from other apps.
168 GdkGrabStatus pointer_grab_status = 168 GdkGrabStatus pointer_grab_status =
169 gdk_pointer_grab(window_contents()->window, FALSE, 169 gdk_pointer_grab(window_contents()->window, FALSE,
170 static_cast<GdkEventMask>( 170 static_cast<GdkEventMask>(
171 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK | 171 GDK_BUTTON_PRESS_MASK | GDK_BUTTON_RELEASE_MASK |
172 GDK_POINTER_MOTION_MASK), 172 GDK_POINTER_MOTION_MASK),
173 NULL, NULL, GDK_CURRENT_TIME); 173 NULL, NULL, GDK_CURRENT_TIME);
(...skipping 28 matching lines...) Expand all
202 202
203 //////////////////////////////////////////////////////////////////////////////// 203 ////////////////////////////////////////////////////////////////////////////////
204 // NativeMenuHost, public: 204 // NativeMenuHost, public:
205 205
206 // static 206 // static
207 NativeMenuHost* NativeMenuHost::CreateNativeMenuHost(SubmenuView* submenu) { 207 NativeMenuHost* NativeMenuHost::CreateNativeMenuHost(SubmenuView* submenu) {
208 return new MenuHostGtk(submenu); 208 return new MenuHostGtk(submenu);
209 } 209 }
210 210
211 } // namespace views 211 } // namespace views
OLDNEW
« no previous file with comments | « views/controls/menu/menu_host_gtk.h ('k') | views/controls/menu/menu_host_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698