From 08f6274a49e4eaf478dfb6d50463f69ff67c62d7 Mon Sep 17 00:00:00 2001 From: Matthew Barnes Date: Sat, 27 Jul 2013 17:41:45 -0400 Subject: EPreviewPane: Handle "new-activity" signals from EWebView. Configures the EActivity to submit alerts to the EPreviewPane. --- e-util/e-preview-pane.c | 25 +++++++++++++++++++++++++ 1 file changed, 25 insertions(+) (limited to 'e-util') diff --git a/e-util/e-preview-pane.c b/e-util/e-preview-pane.c index ae13a8b118..929f392cdc 100644 --- a/e-util/e-preview-pane.c +++ b/e-util/e-preview-pane.c @@ -32,6 +32,8 @@ struct _EPreviewPanePrivate { GtkWidget *alert_bar; GtkWidget *web_view; GtkWidget *search_bar; + + gulong web_view_new_activity_handler_id; }; enum { @@ -59,14 +61,30 @@ G_DEFINE_TYPE_WITH_CODE ( E_TYPE_ALERT_SINK, e_preview_pane_alert_sink_init)) +static void +preview_pane_web_view_new_activity_cb (EWebView *web_view, + EActivity *activity, + EPreviewPane *preview_pane) +{ + e_activity_set_alert_sink (activity, E_ALERT_SINK (preview_pane)); +} + static void preview_pane_set_web_view (EPreviewPane *preview_pane, EWebView *web_view) { + gulong handler_id; + g_return_if_fail (E_IS_WEB_VIEW (web_view)); g_return_if_fail (preview_pane->priv->web_view == NULL); preview_pane->priv->web_view = g_object_ref_sink (web_view); + + handler_id = g_signal_connect ( + web_view, "new-activity", + G_CALLBACK (preview_pane_web_view_new_activity_cb), + preview_pane); + preview_pane->priv->web_view_new_activity_handler_id = handler_id; } static void @@ -116,6 +134,13 @@ preview_pane_dispose (GObject *object) priv = E_PREVIEW_PANE_GET_PRIVATE (object); + if (priv->web_view_new_activity_handler_id > 0) { + g_signal_handler_disconnect ( + priv->web_view, + priv->web_view_new_activity_handler_id); + priv->web_view_new_activity_handler_id = 0; + } + g_clear_object (&priv->alert_bar); g_clear_object (&priv->search_bar); g_clear_object (&priv->web_view); -- cgit v1.2.3