Title: [122835] trunk/Source/WebKit2
Revision
122835
Author
carlo...@webkit.org
Date
2012-07-17 04:11:55 -0700 (Tue, 17 Jul 2012)

Log Message

[GTK] Paste primary selection when middle clicking in X11 WebKit2
https://bugs.webkit.org/show_bug.cgi?id=91411

Reviewed by Xan Lopez.

Handle middle click events to paste primary selection as expected
in any X11 application.

* WebProcess/WebPage/WebPage.cpp:
(WebKit::handleMouseEvent): Call handleMousePressedEvent() for GTK+
platform.
* WebProcess/WebPage/WebPage.h:
(WebPage): Add handleMousePressedEvent() for GTK+ platform.
* WebProcess/WebPage/gtk/WebPageGtk.cpp:
(WebKit::WebPage::handleMousePressedEvent): Handle middle click
events to paste primary selection like we do in WebKit1.

Modified Paths

Diff

Modified: trunk/Source/WebKit2/ChangeLog (122834 => 122835)


--- trunk/Source/WebKit2/ChangeLog	2012-07-17 10:58:50 UTC (rev 122834)
+++ trunk/Source/WebKit2/ChangeLog	2012-07-17 11:11:55 UTC (rev 122835)
@@ -1,3 +1,22 @@
+2012-07-17  Carlos Garcia Campos  <cgar...@igalia.com>
+
+        [GTK] Paste primary selection when middle clicking in X11 WebKit2
+        https://bugs.webkit.org/show_bug.cgi?id=91411
+
+        Reviewed by Xan Lopez.
+
+        Handle middle click events to paste primary selection as expected
+        in any X11 application.
+
+        * WebProcess/WebPage/WebPage.cpp:
+        (WebKit::handleMouseEvent): Call handleMousePressedEvent() for GTK+
+        platform.
+        * WebProcess/WebPage/WebPage.h:
+        (WebPage): Add handleMousePressedEvent() for GTK+ platform.
+        * WebProcess/WebPage/gtk/WebPageGtk.cpp:
+        (WebKit::WebPage::handleMousePressedEvent): Handle middle click
+        events to paste primary selection like we do in WebKit1.
+
 2012-07-17  Ryuan Choi  <ryuan.c...@samsung.com>
 
         [EFL] Move codes related to theme setting from Widget to RenderTheme

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp (122834 => 122835)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2012-07-17 10:58:50 UTC (rev 122834)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.cpp	2012-07-17 11:11:55 UTC (rev 122835)
@@ -1339,6 +1339,10 @@
             if (isContextClick(platformMouseEvent))
                 handled = handleContextMenuEvent(platformMouseEvent, page);
 #endif
+#if PLATFORM(GTK)
+            bool gtkMouseButtonPressHandled = page->handleMousePressedEvent(platformMouseEvent);
+            handled = handled || gtkMouseButtonPressHandled;
+#endif
 
             return handled;
         }

Modified: trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h (122834 => 122835)


--- trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2012-07-17 10:58:50 UTC (rev 122834)
+++ trunk/Source/WebKit2/WebProcess/WebPage/WebPage.h	2012-07-17 11:11:55 UTC (rev 122835)
@@ -449,6 +449,7 @@
 
 #elif PLATFORM(GTK)
     void updateAccessibilityTree();
+    bool handleMousePressedEvent(const WebCore::PlatformMouseEvent&);
 #if USE(TEXTURE_MAPPER_GL)
     void widgetMapped(int64_t nativeWindowHandle);
 #endif

Modified: trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp (122834 => 122835)


--- trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp	2012-07-17 10:58:50 UTC (rev 122834)
+++ trunk/Source/WebKit2/WebProcess/WebPage/gtk/WebPageGtk.cpp	2012-07-17 11:11:55 UTC (rev 122835)
@@ -37,6 +37,7 @@
 #include <WebCore/Frame.h>
 #include <WebCore/KeyboardEvent.h>
 #include <WebCore/Page.h>
+#include <WebCore/PasteboardHelper.h>
 #include <WebCore/PlatformKeyboardEvent.h>
 #include <WebCore/Settings.h>
 #include <wtf/gobject/GOwnPtr.h>
@@ -159,7 +160,31 @@
 {
     m_nativeWindowHandle = nativeWindowHandle;
 }
+#endif
 
+bool WebPage::handleMousePressedEvent(const PlatformMouseEvent& platformMouseEvent)
+{
+    bool returnValue = false;
+    if (platformMouseEvent.button() != WebCore::MiddleButton)
+        return returnValue;
+
+#if PLATFORM(X11)
+    Frame* frame = m_page->focusController()->focusedOrMainFrame();
+    if (!frame)
+        return returnValue;
+
+    PasteboardHelper* pasteboardHelper = PasteboardHelper::defaultPasteboardHelper();
+    bool wasUsingPrimary = pasteboardHelper->usePrimarySelectionClipboard();
+    pasteboardHelper->setUsePrimarySelectionClipboard(true);
+
+    Editor* editor = frame->editor();
+    returnValue = editor->canPaste() || editor->canDHTMLPaste();
+    editor->paste();
+
+    pasteboardHelper->setUsePrimarySelectionClipboard(wasUsingPrimary);
 #endif
 
+    return returnValue;
+}
+
 } // namespace WebKit
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to