diff options
author | Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | 2009-08-28 02:39:42 +0800 |
---|---|---|
committer | Gustavo Noronha Silva <gustavo.noronha@collabora.co.uk> | 2009-08-28 02:39:42 +0800 |
commit | 2099caae0f5a46fc9ababbbb1749886863b9592f (patch) | |
tree | 5b8d51b87ce5e5639cdbe89ced097a341875562c /libempathy-gtk/empathy-theme-adium.c | |
parent | 461d3fa83d2608eccc5013e3af5669fa6b11e33c (diff) | |
download | gsoc2013-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.
Diffstat (limited to 'libempathy-gtk/empathy-theme-adium.c')
-rw-r--r-- | libempathy-gtk/empathy-theme-adium.c | 28 |
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), |