aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGustavo Noronha Silva <gustavo.noronha@collabora.co.uk>2009-08-28 02:39:42 +0800
committerGustavo Noronha Silva <gustavo.noronha@collabora.co.uk>2009-08-28 02:39:42 +0800
commit2099caae0f5a46fc9ababbbb1749886863b9592f (patch)
tree5b8d51b87ce5e5639cdbe89ced097a341875562c
parent461d3fa83d2608eccc5013e3af5669fa6b11e33c (diff)
downloadgsoc2013-empathy-2099caae0f5a46fc9ababbbb1749886863b9592f.tar
gsoc2013-empathy-2099caae0f5a46fc9ababbbb1749886863b9592f.tar.gz
gsoc2013-empathy-2099caae0f5a46fc9ababbbb1749886863b9592f.tar.bz2
gsoc2013-empathy-2099caae0f5a46fc9ababbbb1749886863b9592f.tar.lz
gsoc2013-empathy-2099caae0f5a46fc9ababbbb1749886863b9592f.tar.xz
gsoc2013-empathy-2099caae0f5a46fc9ababbbb1749886863b9592f.tar.zst
gsoc2013-empathy-2099caae0f5a46fc9ababbbb1749886863b9592f.zip
Fix assumption about navigation-request not being called for HTML string load
This bug was exposed by the WebKitGTK+ bug that prevented navigation-request from being emitted in various situations being fixed.
-rw-r--r--libempathy-gtk/empathy-theme-adium.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c
index 66d914607..34c06adfd 100644
--- a/libempathy-gtk/empathy-theme-adium.c
+++ b/libempathy-gtk/empathy-theme-adium.c
@@ -24,7 +24,7 @@
#include <string.h>
#include <glib/gi18n.h>
-#include <webkit/webkitnetworkrequest.h>
+#include <webkit/webkit.h>
#include <telepathy-glib/dbus.h>
#include <telepathy-glib/util.h>
@@ -128,18 +128,28 @@ theme_adium_notify_enable_webkit_developer_tools_cb (EmpathyConf *conf,
theme_adium_update_enable_webkit_developer_tools (theme);
}
-static WebKitNavigationResponse
-theme_adium_navigation_requested_cb (WebKitWebView *view,
- WebKitWebFrame *frame,
- WebKitNetworkRequest *request,
- gpointer user_data)
+static gboolean
+theme_adium_navigation_policy_decision_requested_cb (WebKitWebView *view,
+ WebKitWebFrame *web_frame,
+ WebKitNetworkRequest *request,
+ WebKitWebNavigationAction *action,
+ WebKitWebPolicyDecision *decision,
+ gpointer data)
{
const gchar *uri;
+ /* Only call url_show on clicks */
+ if (webkit_web_navigation_action_get_reason (action) !=
+ WEBKIT_WEB_NAVIGATION_REASON_LINK_CLICKED) {
+ webkit_web_policy_decision_use (decision);
+ return TRUE;
+ }
+
uri = webkit_network_request_get_uri (request);
empathy_url_show (GTK_WIDGET (view), uri);
- return WEBKIT_NAVIGATION_RESPONSE_IGNORE;
+ webkit_web_policy_decision_ignore (decision);
+ return TRUE;
}
static void
@@ -1072,8 +1082,8 @@ empathy_theme_adium_init (EmpathyThemeAdium *theme)
g_signal_connect (theme, "load-finished",
G_CALLBACK (theme_adium_load_finished_cb),
NULL);
- g_signal_connect (theme, "navigation-requested",
- G_CALLBACK (theme_adium_navigation_requested_cb),
+ g_signal_connect (theme, "navigation-policy-decision-requested",
+ G_CALLBACK (theme_adium_navigation_policy_decision_requested_cb),
NULL);
g_signal_connect (theme, "populate-popup",
G_CALLBACK (theme_adium_populate_popup_cb),