summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPeter Hofmann <scm@uninformativ.de>2014-06-15 11:42:17 +0200
committerPeter Hofmann <scm@uninformativ.de>2014-06-15 11:55:52 +0200
commit13d1b01164a3a6bc3ad3629985edc47e335a9d35 (patch)
tree4432ba88df19a3b843409db42d2205efd49f2a44
parent515de82be93fdf258d6bed8eaa93ac8d29cec749 (diff)
downloadlariza-13d1b01164a3a6bc3ad3629985edc47e335a9d35.tar.gz
Open new windows on middle click
-rw-r--r--browser.c17
1 files changed, 17 insertions, 0 deletions
diff --git a/browser.c b/browser.c
index 6a1d49e..cd60440 100644
--- a/browser.c
+++ b/browser.c
@@ -467,6 +467,9 @@ gboolean
key_web_view(GtkWidget *widget, GdkEvent *event, gpointer data)
{
struct Client *c = (struct Client *)data;
+ WebKitHitTestResultContext ht_context;
+ WebKitHitTestResult *ht_result = NULL;
+ char *ht_uri = NULL;
(void)widget;
@@ -526,6 +529,20 @@ key_web_view(GtkWidget *widget, GdkEvent *event, gpointer data)
{
switch (((GdkEventButton *)event)->button)
{
+ case 2:
+ ht_result = webkit_web_view_get_hit_test_result(
+ WEBKIT_WEB_VIEW(c->web_view),
+ (GdkEventButton *)event);
+ g_object_get(ht_result, "context", &ht_context, NULL);
+ if (ht_context & WEBKIT_HIT_TEST_RESULT_CONTEXT_LINK)
+ {
+ g_object_get(ht_result, "link-uri", &ht_uri, NULL);
+ client_new(ht_uri);
+ g_object_unref(ht_result);
+ return TRUE;
+ }
+ g_object_unref(ht_result);
+ return FALSE;
case 8:
webkit_web_view_go_back(WEBKIT_WEB_VIEW(c->web_view));
return TRUE;