Title: [107088] trunk/Tools
- Revision
- 107088
- Author
- carlo...@webkit.org
- Date
- 2012-02-08 07:51:08 -0800 (Wed, 08 Feb 2012)
Log Message
[GTK] Open links in a new window when clicking with the middle button in MiniBrowser
https://bugs.webkit.org/show_bug.cgi?id=78099
Reviewed by Martin Robinson.
* MiniBrowser/gtk/BrowserWindow.c:
(webViewDecidePolicy): Check whether it's a link clicked with the
middle mouse button and load the request in a new window.
(browserWindowConstructed): Connect to
WebKitWebView::decide-policy signal.
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (107087 => 107088)
--- trunk/Tools/ChangeLog 2012-02-08 15:48:51 UTC (rev 107087)
+++ trunk/Tools/ChangeLog 2012-02-08 15:51:08 UTC (rev 107088)
@@ -1,3 +1,16 @@
+2012-02-08 Carlos Garcia Campos <cgar...@igalia.com>
+
+ [GTK] Open links in a new window when clicking with the middle button in MiniBrowser
+ https://bugs.webkit.org/show_bug.cgi?id=78099
+
+ Reviewed by Martin Robinson.
+
+ * MiniBrowser/gtk/BrowserWindow.c:
+ (webViewDecidePolicy): Check whether it's a link clicked with the
+ middle mouse button and load the request in a new window.
+ (browserWindowConstructed): Connect to
+ WebKitWebView::decide-policy signal.
+
2012-02-08 Ryosuke Niwa <rn...@webkit.org>
Revert a part of the change in r106687 as a build fix.
Modified: trunk/Tools/MiniBrowser/gtk/BrowserWindow.c (107087 => 107088)
--- trunk/Tools/MiniBrowser/gtk/BrowserWindow.c 2012-02-08 15:48:51 UTC (rev 107087)
+++ trunk/Tools/MiniBrowser/gtk/BrowserWindow.c 2012-02-08 15:51:08 UTC (rev 107088)
@@ -235,6 +235,26 @@
return FALSE;
}
+static gboolean webViewDecidePolicy(WebKitWebView *webView, WebKitPolicyDecision *decision, WebKitPolicyDecisionType decisionType, BrowserWindow *window)
+{
+ if (decisionType != WEBKIT_POLICY_DECISION_TYPE_NAVIGATION_ACTION)
+ return FALSE;
+
+ WebKitNavigationPolicyDecision *navigationDecision = WEBKIT_NAVIGATION_POLICY_DECISION(decision);
+ if (webkit_navigation_policy_decision_get_navigation_type(navigationDecision) != WEBKIT_NAVIGATION_TYPE_LINK_CLICKED
+ || webkit_navigation_policy_decision_get_mouse_button(navigationDecision) != 2)
+ return FALSE;
+
+ WebKitWebView *newWebView = WEBKIT_WEB_VIEW(webkit_web_view_new_with_context(webkit_web_view_get_context(webView)));
+ webkit_web_view_set_settings(newWebView, webkit_web_view_get_settings(webView));
+ GtkWidget *newWindow = browser_window_new(newWebView);
+ webkit_web_view_load_request(newWebView, webkit_navigation_policy_decision_get_request(navigationDecision));
+ gtk_widget_show(newWindow);
+
+ webkit_policy_decision_ignore(decision);
+ return TRUE;
+}
+
static void browserWindowFinalize(GObject *gObject)
{
G_OBJECT_CLASS(browser_window_parent_class)->finalize(gObject);
@@ -333,6 +353,7 @@
g_signal_connect(window->webView, "notify::title", G_CALLBACK(webViewTitleChanged), window);
g_signal_connect(window->webView, "create", G_CALLBACK(webViewCreate), window);
g_signal_connect(window->webView, "load-failed", G_CALLBACK(webViewLoadFailed), window);
+ g_signal_connect(window->webView, "decide-policy", G_CALLBACK(webViewDecidePolicy), window);
WebKitBackForwardList *backForwadlist = webkit_web_view_get_back_forward_list(window->webView);
g_signal_connect(backForwadlist, "changed", G_CALLBACK(backForwadlistChanged), window);
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes