diff options
author | Peter Hofmann <scm@uninformativ.de> | 2014-06-15 11:42:17 +0200 |
---|---|---|
committer | Peter Hofmann <scm@uninformativ.de> | 2014-06-15 11:55:52 +0200 |
commit | 13d1b01164a3a6bc3ad3629985edc47e335a9d35 (patch) | |
tree | 4432ba88df19a3b843409db42d2205efd49f2a44 | |
parent | 515de82be93fdf258d6bed8eaa93ac8d29cec749 (diff) | |
download | lariza-13d1b01164a3a6bc3ad3629985edc47e335a9d35.tar.gz |
Open new windows on middle click
-rw-r--r-- | browser.c | 17 |
1 files changed, 17 insertions, 0 deletions
@@ -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; |