Title: [240843] trunk/Tools
Revision
240843
Author
carlo...@webkit.org
Date
2019-02-01 06:27:35 -0800 (Fri, 01 Feb 2019)

Log Message

[WPE] MiniBrowser: add ky bindings for back/forward navigation
https://bugs.webkit.org/show_bug.cgi?id=194151

Reviewed by Žan Doberšek.

ALT + <- go back
ALT + -> go forward

* MiniBrowser/wpe/main.cpp:
(main):

Modified Paths

Diff

Modified: trunk/Tools/ChangeLog (240842 => 240843)


--- trunk/Tools/ChangeLog	2019-02-01 14:15:09 UTC (rev 240842)
+++ trunk/Tools/ChangeLog	2019-02-01 14:27:35 UTC (rev 240843)
@@ -1,3 +1,16 @@
+2019-02-01  Carlos Garcia Campos  <cgar...@igalia.com>
+
+        [WPE] MiniBrowser: add ky bindings for back/forward navigation
+        https://bugs.webkit.org/show_bug.cgi?id=194151
+
+        Reviewed by Žan Doberšek.
+
+        ALT + <- go back
+        ALT + -> go forward
+
+        * MiniBrowser/wpe/main.cpp:
+        (main):
+
 2019-02-01  Zalan Bujtas  <za...@apple.com>
 
         [LFC] Set intrinsic size on Layout::Replaced

Modified: trunk/Tools/MiniBrowser/wpe/main.cpp (240842 => 240843)


--- trunk/Tools/MiniBrowser/wpe/main.cpp	2019-02-01 14:15:09 UTC (rev 240842)
+++ trunk/Tools/MiniBrowser/wpe/main.cpp	2019-02-01 14:27:35 UTC (rev 240843)
@@ -59,23 +59,40 @@
 
 class InputClient final : public WPEToolingBackends::ViewBackend::InputClient {
 public:
-    InputClient(GMainLoop* loop)
+    InputClient(GMainLoop* loop, WebKitWebView* webView)
         : m_loop(loop)
+        , m_webView(webView)
     {
     }
 
     bool dispatchKeyboardEvent(struct wpe_input_keyboard_event* event) override
     {
-        if (event->pressed && event->modifiers & wpe_input_keyboard_modifier_control && event->key_code == WPE_KEY_q) {
+        if (!event->pressed)
+            return false;
+
+        if (event->modifiers & wpe_input_keyboard_modifier_control && event->key_code == WPE_KEY_q) {
             g_main_loop_quit(m_loop);
             return true;
         }
 
+        if (event->modifiers & wpe_input_keyboard_modifier_alt) {
+            if ((event->key_code == WPE_KEY_Left || event->key_code == WPE_KEY_KP_Left) && webkit_web_view_can_go_back(m_webView)) {
+                webkit_web_view_go_back(m_webView);
+                return true;
+            }
+
+            if ((event->key_code == WPE_KEY_Right || event->key_code == WPE_KEY_KP_Right) && webkit_web_view_can_go_forward(m_webView)) {
+                webkit_web_view_go_forward(m_webView);
+                return true;
+            }
+        }
+
         return false;
     }
 
 private:
     GMainLoop* m_loop { nullptr };
+    WebKitWebView* m_webView { nullptr };
 };
 
 static WebKitWebView* createWebViewForAutomationCallback(WebKitAutomationSession*, WebKitWebView* view)
@@ -140,12 +157,6 @@
         return 1;
     }
 
-    backend->setInputClient(std::make_unique<InputClient>(loop));
-
-    auto* viewBackend = webkit_web_view_backend_new(wpeBackend, [](gpointer data) {
-        delete static_cast<WPEToolingBackends::ViewBackend*>(data);
-    }, backend.release());
-
     auto* webContext = (privateMode || automationMode) ? webkit_web_context_new_ephemeral() : webkit_web_context_get_default();
 
     if (cookiesPolicy) {
@@ -180,6 +191,11 @@
         "enable-encrypted-media", TRUE,
         nullptr);
 
+    auto* backendPtr = backend.get();
+    auto* viewBackend = webkit_web_view_backend_new(wpeBackend, [](gpointer data) {
+        delete static_cast<WPEToolingBackends::ViewBackend*>(data);
+    }, backend.release());
+
     auto* webView = WEBKIT_WEB_VIEW(g_object_new(WEBKIT_TYPE_WEB_VIEW,
         "backend", viewBackend,
         "web-context", webContext,
@@ -188,6 +204,8 @@
         nullptr));
     g_object_unref(settings);
 
+    backendPtr->setInputClient(std::make_unique<InputClient>(loop, webView));
+
     webkit_web_context_set_automation_allowed(webContext, automationMode);
     g_signal_connect(webContext, "automation-started", G_CALLBACK(automationStartedCallback), webView);
     g_signal_connect(webView, "permission-request", G_CALLBACK(decidePermissionRequest), NULL);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
https://lists.webkit.org/mailman/listinfo/webkit-changes

Reply via email to