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

Side by Side Diff: chrome/browser/automation/ui_controls_gtk.cc

Issue 8625001: GTK: Part 1 of removing GtkWidget->window to close up GSEALs. (Closed) Base URL: http://git.chromium.org/chromium/src.git@master
Patch Set: Ignore chromeos Created 9 years 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
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 "chrome/browser/automation/ui_controls.h" 5 #include "chrome/browser/automation/ui_controls.h"
6 6
7 #include <gdk/gdkkeysyms.h> 7 #include <gdk/gdkkeysyms.h>
8 #include <gtk/gtk.h> 8 #include <gtk/gtk.h>
9 9
10 #include "base/bind.h" 10 #include "base/bind.h"
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 void FakeAMouseMotionEvent(gint x, gint y) { 81 void FakeAMouseMotionEvent(gint x, gint y) {
82 GdkEvent* event = gdk_event_new(GDK_MOTION_NOTIFY); 82 GdkEvent* event = gdk_event_new(GDK_MOTION_NOTIFY);
83 83
84 event->motion.send_event = false; 84 event->motion.send_event = false;
85 event->motion.time = XTimeNow(); 85 event->motion.time = XTimeNow();
86 86
87 GtkWidget* grab_widget = gtk_grab_get_current(); 87 GtkWidget* grab_widget = gtk_grab_get_current();
88 if (grab_widget) { 88 if (grab_widget) {
89 // If there is a grab, we need to target all events at it regardless of 89 // If there is a grab, we need to target all events at it regardless of
90 // what widget the mouse is over. 90 // what widget the mouse is over.
91 event->motion.window = grab_widget->window; 91 event->motion.window = gtk_widget_get_window(grab_widget);
92 } else { 92 } else {
93 event->motion.window = gdk_window_at_pointer(&x, &y); 93 event->motion.window = gdk_window_at_pointer(&x, &y);
94 } 94 }
95 g_object_ref(event->motion.window); 95 g_object_ref(event->motion.window);
96 gint window_x, window_y; 96 gint window_x, window_y;
97 gdk_window_get_origin(event->motion.window, &window_x, &window_y); 97 gdk_window_get_origin(event->motion.window, &window_x, &window_y);
98 event->motion.x = x - window_x; 98 event->motion.x = x - window_x;
99 event->motion.y = y - window_y; 99 event->motion.y = y - window_y;
100 event->motion.x_root = x; 100 event->motion.x_root = x;
101 event->motion.y_root = y; 101 event->motion.y_root = y;
(...skipping 13 matching lines...) Expand all
115 ui::KeyboardCode key, 115 ui::KeyboardCode key,
116 bool control, 116 bool control,
117 bool shift, 117 bool shift,
118 bool alt, 118 bool alt,
119 bool command) { 119 bool command) {
120 DCHECK(!command); // No command key on Linux 120 DCHECK(!command); // No command key on Linux
121 GdkWindow* event_window = NULL; 121 GdkWindow* event_window = NULL;
122 GtkWidget* grab_widget = gtk_grab_get_current(); 122 GtkWidget* grab_widget = gtk_grab_get_current();
123 if (grab_widget) { 123 if (grab_widget) {
124 // If there is a grab, send all events to the grabbed widget. 124 // If there is a grab, send all events to the grabbed widget.
125 event_window = grab_widget->window; 125 event_window = gtk_widget_get_window(grab_widget);
126 } else if (window) { 126 } else if (window) {
127 event_window = GTK_WIDGET(window)->window; 127 event_window = gtk_widget_get_window(GTK_WIDGET(window));
128 } else { 128 } else {
129 // No target was specified. Send the events to the active toplevel. 129 // No target was specified. Send the events to the active toplevel.
130 GList* windows = gtk_window_list_toplevels(); 130 GList* windows = gtk_window_list_toplevels();
131 for (GList* element = windows; element; element = g_list_next(element)) { 131 for (GList* element = windows; element; element = g_list_next(element)) {
132 GtkWindow* this_window = GTK_WINDOW(element->data); 132 GtkWindow* this_window = GTK_WINDOW(element->data);
133 if (gtk_window_is_active(this_window)) { 133 if (gtk_window_is_active(this_window)) {
134 event_window = GTK_WIDGET(this_window)->window; 134 event_window = gtk_widget_get_window(GTK_WIDGET(this_window));
135 break; 135 break;
136 } 136 }
137 } 137 }
138 g_list_free(windows); 138 g_list_free(windows);
139 } 139 }
140 if (!event_window) { 140 if (!event_window) {
141 NOTREACHED() << "Window not specified and none is active"; 141 NOTREACHED() << "Window not specified and none is active";
142 return false; 142 return false;
143 } 143 }
144 144
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after
194 GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS); 194 GdkEvent* event = gdk_event_new(GDK_BUTTON_PRESS);
195 195
196 event->button.send_event = false; 196 event->button.send_event = false;
197 event->button.time = XTimeNow(); 197 event->button.time = XTimeNow();
198 198
199 gint x, y; 199 gint x, y;
200 GtkWidget* grab_widget = gtk_grab_get_current(); 200 GtkWidget* grab_widget = gtk_grab_get_current();
201 if (grab_widget) { 201 if (grab_widget) {
202 // If there is a grab, we need to target all events at it regardless of 202 // If there is a grab, we need to target all events at it regardless of
203 // what widget the mouse is over. 203 // what widget the mouse is over.
204 event->button.window = grab_widget->window; 204 event->button.window = gtk_widget_get_window(grab_widget);
205 gdk_window_get_pointer(event->button.window, &x, &y, NULL); 205 gdk_window_get_pointer(event->button.window, &x, &y, NULL);
206 } else { 206 } else {
207 event->button.window = gdk_window_at_pointer(&x, &y); 207 event->button.window = gdk_window_at_pointer(&x, &y);
208 CHECK(event->button.window); 208 CHECK(event->button.window);
209 } 209 }
210 210
211 g_object_ref(event->button.window); 211 g_object_ref(event->button.window);
212 event->button.x = x; 212 event->button.x = x;
213 event->button.y = y; 213 event->button.y = y;
214 gint origin_x, origin_y; 214 gint origin_x, origin_y;
(...skipping 96 matching lines...) Expand 10 before | Expand all | Expand 10 after
311 const base::Closure& task) { 311 const base::Closure& task) {
312 gfx::Rect bounds = gtk_util::GetWidgetScreenBounds(widget); 312 gfx::Rect bounds = gtk_util::GetWidgetScreenBounds(widget);
313 SendMouseMoveNotifyWhenDone( 313 SendMouseMoveNotifyWhenDone(
314 bounds.x() + bounds.width() / 2, 314 bounds.x() + bounds.width() / 2,
315 bounds.y() + bounds.height() / 2, 315 bounds.y() + bounds.height() / 2,
316 base::Bind(&ui_controls::ClickTask, button, state, task)); 316 base::Bind(&ui_controls::ClickTask, button, state, task));
317 } 317 }
318 #endif 318 #endif
319 319
320 } // namespace ui_controls 320 } // namespace ui_controls
OLDNEW
« no previous file with comments | « chrome/browser/automation/automation_provider_gtk.cc ('k') | chrome/browser/tab_contents/tab_contents_view_gtk.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698