From: Gustavo Noronha Silva Date: Thu, 27 Aug 2009 18:39:42 +0000 (-0300) Subject: Fix assumption about navigation-request not being called for HTML string load X-Git-Url: https://git.0d.be/?p=empathy.git;a=commitdiff_plain;h=2099caae0f5a46fc9ababbbb1749886863b9592f 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. --- diff --git a/libempathy-gtk/empathy-theme-adium.c b/libempathy-gtk/empathy-theme-adium.c index 66d91460..34c06adf 100644 --- a/libempathy-gtk/empathy-theme-adium.c +++ b/libempathy-gtk/empathy-theme-adium.c @@ -24,7 +24,7 @@ #include #include -#include +#include #include #include @@ -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),