X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-sidebar-links.c;h=4107063ad2310fd8049df3a1bb0adc0931f3ca32;hb=6aff12024a5c291d0eaf0dd3ab601b2a4b30d521;hp=55f2ddb341d787c29835781fea65e270e41708e4;hpb=bb5ea194600d5ae09b18a147420f4fc42c0808df;p=evince.git diff --git a/shell/ev-sidebar-links.c b/shell/ev-sidebar-links.c index 55f2ddb3..4107063a 100644 --- a/shell/ev-sidebar-links.c +++ b/shell/ev-sidebar-links.c @@ -55,6 +55,10 @@ enum { PROP_WIDGET, }; +enum { + LINK_ACTIVATED, + N_SIGNALS +}; static void links_page_num_func (GtkTreeViewColumn *tree_column, GtkCellRenderer *cell, @@ -77,6 +81,7 @@ static gboolean ev_sidebar_links_support_document (EvSidebarPage *sidebar_page, EvDocument *document); static const gchar* ev_sidebar_links_get_label (EvSidebarPage *sidebar_page); +static guint signals[N_SIGNALS]; G_DEFINE_TYPE_EXTENDED (EvSidebarLinks, ev_sidebar_links, @@ -177,6 +182,14 @@ ev_sidebar_links_class_init (EvSidebarLinksClass *ev_sidebar_links_class) g_object_class->get_property = ev_sidebar_links_get_property; g_object_class->dispose = ev_sidebar_links_dispose; + signals[LINK_ACTIVATED] = g_signal_new ("link-activated", + G_TYPE_FROM_CLASS (g_object_class), + G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, + G_STRUCT_OFFSET (EvSidebarLinksClass, link_activated), + NULL, NULL, + g_cclosure_marshal_VOID__OBJECT, + G_TYPE_NONE, 1, G_TYPE_OBJECT); + g_object_class_install_property (g_object_class, PROP_MODEL, g_param_spec_object ("model", @@ -216,8 +229,7 @@ selection_changed_callback (GtkTreeSelection *selection, g_signal_handler_block (ev_sidebar_links->priv->page_cache, ev_sidebar_links->priv->page_changed_id); - /* FIXME: we should handle this better. This breaks w/ URLs */ - ev_page_cache_set_link (ev_sidebar_links->priv->page_cache, link); + g_signal_emit (ev_sidebar_links, signals[LINK_ACTIVATED], 0, link); g_signal_handler_unblock (ev_sidebar_links->priv->page_cache, ev_sidebar_links->priv->page_changed_id); @@ -578,11 +590,12 @@ job_finished_callback (EvJobLinks *job, GtkTreeSelection *selection; priv = sidebar_links->priv; - - priv->model = g_object_ref (job->model); + + priv->model = job->model; g_object_notify (G_OBJECT (sidebar_links), "model"); gtk_tree_view_set_model (GTK_TREE_VIEW (priv->tree_view), job->model); + g_object_unref (job); priv->job = NULL;