[SCM] WebKit Debian packaging branch, webkit-1.2, updated. upstream/1.1.90-6072-g9a69373

eric at webkit.org eric at webkit.org
Wed Apr 7 23:55:58 UTC 2010


The following commit has been merged in the webkit-1.2 branch:
commit 3ce8dadbe5692c631fe698b3767a67c9f544d5b2
Author: eric at webkit.org <eric at webkit.org@268f45cc-cd09-0410-ab3c-d52691b4dbfc>
Date:   Tue Nov 24 23:46:21 2009 +0000

    2009-11-24  Evan Stade  <estade at chromium.org>
    
            Reviewed by David Levin.
    
            Linux Chromium sends too many click events
            https://bugs.webkit.org/show_bug.cgi?id=31841
    
            Manually count number of clicks for double/triple click events. This
            makes us match Firefox on http://www.quirksmode.org/js/events_mouse.html
            Chromium side of this patch is here:
            http://codereview.chromium.org/431031/show
    
            * src/gtk/WebInputEventFactory.cpp:
            (WebKit::WebInputEventFactory::mouseEvent):
    
    git-svn-id: http://svn.webkit.org/repository/webkit/trunk@51364 268f45cc-cd09-0410-ab3c-d52691b4dbfc

diff --git a/WebKit/chromium/ChangeLog b/WebKit/chromium/ChangeLog
index 80dceaf..fe771d7 100644
--- a/WebKit/chromium/ChangeLog
+++ b/WebKit/chromium/ChangeLog
@@ -1,3 +1,18 @@
+2009-11-24  Evan Stade  <estade at chromium.org>
+
+        Reviewed by David Levin.
+
+        Linux Chromium sends too many click events
+        https://bugs.webkit.org/show_bug.cgi?id=31841
+
+        Manually count number of clicks for double/triple click events. This
+        makes us match Firefox on http://www.quirksmode.org/js/events_mouse.html
+        Chromium side of this patch is here:
+        http://codereview.chromium.org/431031/show
+
+        * src/gtk/WebInputEventFactory.cpp:
+        (WebKit::WebInputEventFactory::mouseEvent):
+
 2009-11-24  Darin Fisher  <darin at chromium.org>
 
         Reviewed by Adam Barth.
diff --git a/WebKit/chromium/src/gtk/WebInputEventFactory.cpp b/WebKit/chromium/src/gtk/WebInputEventFactory.cpp
index 890767c..449dee1 100644
--- a/WebKit/chromium/src/gtk/WebInputEventFactory.cpp
+++ b/WebKit/chromium/src/gtk/WebInputEventFactory.cpp
@@ -38,10 +38,23 @@
 
 #include <gdk/gdk.h>
 #include <gdk/gdkkeysyms.h>
+#include <gtk/gtk.h>
 #include <gtk/gtkversion.h>
 
 #include <wtf/Assertions.h>
 
+namespace {
+
+gint getDoubleClickTime()
+{
+    static GtkSettings* settings = gtk_settings_get_default();
+    gint doubleClickTime = 250;
+    g_object_get(G_OBJECT(settings), "gtk-double-click-time", &doubleClickTime, 0);
+    return doubleClickTime;
+}
+
+}  // namespace
+
 namespace WebKit {
 
 static double gdkEventTimeToWebEventTime(guint32 time)
@@ -321,24 +334,34 @@ WebMouseEvent WebInputEventFactory::mouseEvent(const GdkEventButton* event)
     result.clickCount = 0;
 
     switch (event->type) {
-    case GDK_3BUTTON_PRESS:
-        ++result.clickCount;
-        // fallthrough
-    case GDK_2BUTTON_PRESS:
-        ++result.clickCount;
-        // fallthrough
     case GDK_BUTTON_PRESS:
         result.type = WebInputEvent::MouseDown;
-        ++result.clickCount;
         break;
     case GDK_BUTTON_RELEASE:
         result.type = WebInputEvent::MouseUp;
         break;
-
+    case GDK_3BUTTON_PRESS:
+    case GDK_2BUTTON_PRESS:
     default:
         ASSERT_NOT_REACHED();
     };
 
+    if (GDK_BUTTON_PRESS == event->type) {
+        static int numClicks = 0;
+        static GdkWindow* eventWindow = 0;
+        static gint lastLeftClickTime = 0;
+
+        gint time_diff = event->time - lastLeftClickTime;
+        if (eventWindow == event->window && time_diff < getDoubleClickTime())
+            numClicks++;
+        else
+            numClicks = 1;
+
+        result.clickCount = numClicks;
+        eventWindow = event->window;
+        lastLeftClickTime = event->time;
+    }
+
     result.button = WebMouseEvent::ButtonNone;
     if (event->button == 1)
         result.button = WebMouseEvent::ButtonLeft;

-- 
WebKit Debian packaging



More information about the Pkg-webkit-commits mailing list