X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=shell%2Fev-page-action.c;h=97abd1a7870a6dfdfc4a39074a11e4d4bb53f2d8;hb=e47828bd9933f9a44cdfb009fdfcddfcec2748dd;hp=864e5e39654b5a543e87f453bacb218cb78a2fe3;hpb=39d906d93b5e9e0929fec8d3ef322f9597adee78;p=evince.git diff --git a/shell/ev-page-action.c b/shell/ev-page-action.c index 864e5e39..97abd1a7 100644 --- a/shell/ev-page-action.c +++ b/shell/ev-page-action.c @@ -22,6 +22,7 @@ #include "config.h" #include "ev-page-action.h" +#include "ev-page-cache.h" #include "ev-window.h" #include "ev-document-links.h" #include "ev-marshal.h" @@ -180,10 +181,17 @@ page_changed_cb (EvPageCache *page_cache, g_assert (proxy); if (page_cache != NULL && page >= 0) { - gchar *page_label = ev_page_cache_get_page_label (page_cache, page); + gchar *page_label; + + gtk_entry_set_width_chars (GTK_ENTRY (proxy->entry), + CLAMP (ev_page_cache_get_max_label_chars (page_cache), + 6, 12)); + + page_label = ev_page_cache_get_page_label (page_cache, page); gtk_entry_set_text (GTK_ENTRY (proxy->entry), page_label); gtk_editable_set_position (GTK_EDITABLE (proxy->entry), -1); g_free (page_label); + } else { gtk_entry_set_text (GTK_ENTRY (proxy->entry), ""); } @@ -285,12 +293,25 @@ build_new_tree_cb (GtkTreeModel *model, { GtkTreeModel *filter_model = GTK_TREE_MODEL (data); EvLink *link; + EvLinkAction *action; + EvLinkActionType type; gtk_tree_model_get (model, iter, EV_DOCUMENT_LINKS_COLUMN_LINK, &link, -1); - if (link && ev_link_get_link_type (link) == EV_LINK_TYPE_PAGE) { + if (!link) + return FALSE; + + action = ev_link_get_action (link); + if (!action) { + g_object_unref (link); + return FALSE; + } + + type = ev_link_action_get_action_type (action); + + if (type == EV_LINK_ACTION_TYPE_GOTO_DEST) { GtkTreeIter filter_iter; gtk_list_store_append (GTK_LIST_STORE (filter_model), &filter_iter); @@ -299,6 +320,8 @@ build_new_tree_cb (GtkTreeModel *model, -1); } + g_object_unref (link); + return FALSE; } @@ -337,7 +360,12 @@ match_selected_cb (GtkEntryCompletion *completion, EV_DOCUMENT_LINKS_COLUMN_LINK, &link, -1); - g_signal_emit (proxy, signals[ACTIVATE_LINK], 0, link); + g_signal_emit (proxy, widget_signals[WIDGET_ACTIVATE_LINK], 0, link); + + if (link) + g_object_unref (link); + + gtk_tree_iter_free (iter); return TRUE; } @@ -361,6 +389,11 @@ display_completion_text (GtkCellLayout *cell_layout, -1); g_object_set (renderer, "text", ev_link_get_title (link), NULL); + + if (link) + g_object_unref (link); + + gtk_tree_iter_free (iter); } static gboolean @@ -382,10 +415,14 @@ match_completion (GtkEntryCompletion *completion, -1); - if (link) + if (link) { text = ev_link_get_title (link); + g_object_unref (link); + } + + gtk_tree_iter_free (iter); - if (text && key ) { + if (text && key) { gchar *normalized_text; gchar *normalized_key; gchar *case_normalized_text; @@ -454,6 +491,9 @@ update_model (EvPageAction *page, GParamSpec *pspec, EvPageActionWidget *proxy) (GtkCellLayoutDataFunc) display_completion_text, proxy, NULL); gtk_entry_set_completion (GTK_ENTRY (proxy->entry), completion); + + g_object_unref (completion); + g_object_unref (model); } } @@ -563,7 +603,7 @@ ev_page_action_set_document (EvPageAction *page, EvDocument *document) EvPageCache *page_cache = NULL; if (document) - page_cache = ev_document_get_page_cache (document); + page_cache = ev_page_cache_get (document); g_object_set (page, "page-cache", page_cache, @@ -625,7 +665,7 @@ ev_page_action_class_init (EvPageActionClass *class) signals[ACTIVATE_LABEL] = g_signal_new ("activate_label", G_OBJECT_CLASS_TYPE (object_class), G_SIGNAL_RUN_LAST | G_SIGNAL_ACTION, - G_STRUCT_OFFSET (EvPageActionClass, activate_link), + G_STRUCT_OFFSET (EvPageActionClass, activate_label), NULL, NULL, ev_marshal_BOOLEAN__STRING, G_TYPE_BOOLEAN, 1,