Changeset 60479 in webkit
- Timestamp:
- Jun 1, 2010 8:47:08 AM (14 years ago)
- Location:
- trunk/WebKitTools
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/WebKitTools/ChangeLog
r60478 r60479 1 2010-06-01 Martin Robinson <mrobinson@webkit.org> 2 3 Reviewed by Xan Lopez. 4 5 [GTK] Double clicks cause three button press events 6 https://bugs.webkit.org/show_bug.cgi?id=38853 7 8 Small EventSender cleanups. Consolidate some common code. Style fixes. 9 10 * DumpRenderTree/gtk/EventSender.cpp: 11 (prepareMouseButtonEvent): Added. 12 (contextClickCallback): Use prepareMouseButtonEvent. 13 (mouseDownCallback): Use prepareMouseButtonEvent. 14 (mouseUpCallback): Use prepareMouseButtonEvent. 15 (mouseMoveToCallback): Small style fix. 16 1 17 2010-06-01 Martin Robinson <mrobinson@igalia.com> 2 18 -
trunk/WebKitTools/DumpRenderTree/gtk/EventSender.cpp
r60478 r60479 110 110 } 111 111 112 static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception)112 bool prepareMouseButtonEvent(GdkEvent* event, int button) 113 113 { 114 114 WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 115 115 if (!view) 116 return JSValueMakeUndefined(context); 117 116 return false; 117 118 memset(event, 0, sizeof(event)); 119 event->button.button = button; 120 event->button.x = lastMousePositionX; 121 event->button.y = lastMousePositionY; 122 event->button.window = GTK_WIDGET(view)->window; 123 event->button.device = gdk_device_get_core_pointer(); 124 event->button.state = getStateFlags(); 125 126 // Mouse up & down events dispatched via g_signal_emit_by_name must offset 127 // their time value, so that WebKit can detect where sequences of mouse 128 // clicks begin and end. This should not interfere with GDK or GTK+ event 129 // processing, because the event is only seen by the widget. 130 event.button.time = GDK_CURRENT_TIME + timeOffset; 131 132 int xRoot, yRoot; 133 #if GTK_CHECK_VERSION(2, 17, 3) 134 gdk_window_get_root_coords(GTK_WIDGET(view)->window, lastMousePositionX, lastMousePositionY, &xRoot, &yRoot); 135 #else 136 getRootCoords(GTK_WIDGET(view), &xRoot, &yRoot); 137 #endif 138 event->button.x_root = xRoot; 139 event->button.y_root = yRoot; 140 141 return true; 142 } 143 144 static JSValueRef contextClickCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) 145 { 118 146 GdkEvent event; 119 memset(&event, 0, sizeof(event)); 120 event.button.button = 3; 121 event.button.x = lastMousePositionX; 122 event.button.y = lastMousePositionY; 123 event.button.window = GTK_WIDGET(view)->window; 147 if (!prepareMouseButtonEvent(&event, 3)) 148 return JSValueMakeUndefined(context); 124 149 125 150 event.type = GDK_BUTTON_PRESS; … … 159 184 static JSValueRef mouseDownCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) 160 185 { 161 WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 162 if (!view) 163 return JSValueMakeUndefined(context); 186 int button = 1; 187 if (argumentCount == 1) { 188 button = static_cast<int>(JSValueToNumber(context, arguments[0], exception)) + 1; 189 g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context)); 190 } 164 191 165 192 GdkEvent event; 166 memset(&event, 0, sizeof(event)); 167 event.button.button = 1; 168 169 if (argumentCount == 1) { 170 event.button.button = (int)(JSValueToNumber(context, arguments[0], exception)) + 1; 171 g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context)); 172 } 173 174 event.button.x = lastMousePositionX; 175 event.button.y = lastMousePositionY; 176 event.button.window = GTK_WIDGET(view)->window; 177 178 // Mouse up & down events dispatched via g_signal_emit_by_name must offset 179 // their time value, so that WebKit can detect where sequences of mouse 180 // clicks begin and end. This should not interfere with GDK or GTK+ event 181 // processing, because the event is only seen by the widget. 182 event.motion.time = GDK_CURRENT_TIME + timeOffset; 183 event.button.device = gdk_device_get_core_pointer(); 184 185 int x_root, y_root; 186 #if GTK_CHECK_VERSION(2,17,3) 187 gdk_window_get_root_coords(GTK_WIDGET(view)->window, lastMousePositionX, lastMousePositionY, &x_root, &y_root); 188 #else 189 getRootCoords(GTK_WIDGET(view), &x_root, &y_root); 190 #endif 191 event.button.x_root = x_root; 192 event.button.y_root = y_root; 193 if (!prepareMouseButtonEvent(&event, button)) 194 return JSValueMakeUndefined(context); 193 195 194 196 event.type = GDK_BUTTON_PRESS; … … 218 220 static JSValueRef mouseUpCallback(JSContextRef context, JSObjectRef function, JSObjectRef thisObject, size_t argumentCount, const JSValueRef arguments[], JSValueRef* exception) 219 221 { 220 221 WebKitWebView* view = webkit_web_frame_get_web_view(mainFrame); 222 if (!view) 223 return JSValueMakeUndefined(context); 222 int button = 1; 223 if (argumentCount == 1) { 224 button = static_cast<int>(JSValueToNumber(context, arguments[0], exception)) + 1; 225 g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context)); 226 } 224 227 225 228 GdkEvent event; 226 memset(&event, 0, sizeof(event)); 227 event.button.button = 1; 228 229 if (argumentCount == 1) { 230 event.button.button = (int)JSValueToNumber(context, arguments[0], exception) + 1; 231 g_return_val_if_fail((!exception || !*exception), JSValueMakeUndefined(context)); 232 } 233 234 event.button.x = lastMousePositionX; 235 event.button.y = lastMousePositionY; 236 event.button.window = GTK_WIDGET(view)->window; 237 238 // Mouse up & down events dispatched via g_signal_emit_by_name must offset 239 // their time value, so that WebKit can detect where sequences of mouse 240 // clicks begin and end. This should not interfere with GDK or GTK+ event 241 // processing, because the event is only seen by the widget. 242 event.button.time = GDK_CURRENT_TIME + timeOffset; 243 event.button.device = gdk_device_get_core_pointer(); 244 event.button.state = getStateFlags(); 245 246 int x_root, y_root; 247 #if GTK_CHECK_VERSION(2,17,3) 248 gdk_window_get_root_coords(GTK_WIDGET(view)->window, lastMousePositionX, lastMousePositionY, &x_root, &y_root); 249 #else 250 getRootCoords(GTK_WIDGET(view), &x_root, &y_root); 251 #endif 252 253 event.button.x_root = x_root; 254 event.button.y_root = y_root; 229 if (!prepareMouseButtonEvent(&event, button)) 230 return JSValueMakeUndefined(context); 255 231 256 232 lastClickPositionX = lastMousePositionX; … … 288 264 event.motion.window = GTK_WIDGET(view)->window; 289 265 event.motion.device = gdk_device_get_core_pointer(); 290 291 int x_root, y_root; 266 event.motion.state = getStateFlags(); 267 268 int xRoot, yRoot; 292 269 #if GTK_CHECK_VERSION(2,17,3) 293 gdk_window_get_root_coords(GTK_WIDGET(view)->window, lastMousePositionX, lastMousePositionY, &x _root, &y_root);270 gdk_window_get_root_coords(GTK_WIDGET(view)->window, lastMousePositionX, lastMousePositionY, &xRoot, &yRoot); 294 271 #else 295 getRootCoords(GTK_WIDGET(view), &x _root, &y_root);272 getRootCoords(GTK_WIDGET(view), &xRoot, &yRoot); 296 273 #endif 297 event.motion.x_root = x_root; 298 event.motion.y_root = y_root; 299 300 event.motion.state = getStateFlags(); 274 event.motion.x_root = xRoot; 275 event.motion.y_root = yRoot; 301 276 302 277 sendOrQueueEvent(event);
Note: See TracChangeset
for help on using the changeset viewer.