Title: [90551] trunk/Tools
- Revision
- 90551
- Author
- carlo...@webkit.org
- Date
- 2011-07-07 03:29:19 -0700 (Thu, 07 Jul 2011)
Log Message
2011-07-07 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=63988
Reviewed by Martin Robinson.
* MiniBrowser/gtk/BrowserWindow.c:
(browserWindowConstructed):
(decidePolicyForNavigationAction): Ignore the action if a link is
clicked with the middle buttonm and open the link in a new window.
(browserWindowPolicyClientInit):
Modified Paths
Diff
Modified: trunk/Tools/ChangeLog (90550 => 90551)
--- trunk/Tools/ChangeLog 2011-07-07 09:06:37 UTC (rev 90550)
+++ trunk/Tools/ChangeLog 2011-07-07 10:29:19 UTC (rev 90551)
@@ -1,3 +1,16 @@
+2011-07-07 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=63988
+
+ Reviewed by Martin Robinson.
+
+ * MiniBrowser/gtk/BrowserWindow.c:
+ (browserWindowConstructed):
+ (decidePolicyForNavigationAction): Ignore the action if a link is
+ clicked with the middle buttonm and open the link in a new window.
+ (browserWindowPolicyClientInit):
+
2011-07-07 Adam Barth <aba...@webkit.org>
Remove style_references.py
Modified: trunk/Tools/MiniBrowser/gtk/BrowserWindow.c (90550 => 90551)
--- trunk/Tools/MiniBrowser/gtk/BrowserWindow.c 2011-07-07 09:06:37 UTC (rev 90550)
+++ trunk/Tools/MiniBrowser/gtk/BrowserWindow.c 2011-07-07 10:29:19 UTC (rev 90551)
@@ -56,6 +56,7 @@
static void browserWindowLoaderClientInit(BrowserWindow*);
static void browserWindowUIClientInit(BrowserWindow*);
+static void browserWindowPolicyClientInit(BrowserWindow*);
static gint windowCount = 0;
@@ -183,6 +184,7 @@
browserWindowLoaderClientInit(window);
browserWindowUIClientInit(window);
+ browserWindowPolicyClientInit(window);
}
static void browser_window_class_init(BrowserWindowClass* klass)
@@ -654,6 +656,37 @@
WKPageSetPageUIClient(WKViewGetPage(window->webView), &uiClient);
}
+static void decidePolicyForNavigationAction(WKPageRef page, WKFrameRef frame, WKFrameNavigationType navigationType, WKEventModifiers modifiers, WKEventMouseButton mouseButton, WKURLRequestRef request, WKFramePolicyListenerRef listener, WKTypeRef userData, const void* clientInfo)
+{
+ if (navigationType != kWKFrameNavigationTypeLinkClicked || mouseButton != kWKEventMouseButtonMiddleButton) {
+ WKFramePolicyListenerUse(listener);
+ return;
+ }
+
+ WKViewRef webView = WKViewCreate(WKPageGetContext(page), 0);
+ GtkWidget *window = browser_window_new(webView);
+ WKURLRef url = ""
+ WKPageLoadURL(WKViewGetPage(webView), url);
+ WKRelease(url);
+ gtk_widget_grab_focus(GTK_WIDGET(webView));
+ gtk_widget_show(window);
+
+ WKFramePolicyListenerIgnore(listener);
+}
+
+static void browserWindowPolicyClientInit(BrowserWindow* window)
+{
+ WKPagePolicyClient policyClient = {
+ kWKPagePolicyClientCurrentVersion,
+ window, /* clientInfo */
+ decidePolicyForNavigationAction,
+ 0, /* decidePolicyForNewWindowAction */
+ 0, /* decidePolicyForResponse */
+ 0 /* unableToImplementPolicy */
+ };
+ WKPageSetPagePolicyClient(WKViewGetPage(window->webView), &policyClient);
+}
+
// Public API.
GtkWidget* browser_window_new(WKViewRef view)
{
_______________________________________________
webkit-changes mailing list
webkit-changes@lists.webkit.org
http://lists.webkit.org/mailman/listinfo.cgi/webkit-changes