- entry = GTK_WIDGET (g_object_get_data (G_OBJECT (proxy), ENTRY_DATA));
- if (page_cache != NULL) {
- gchar *page_label = ev_page_cache_get_page_label (page_cache, page);
- gtk_entry_set_text (GTK_ENTRY (entry), page_label);
- gtk_editable_set_position (GTK_EDITABLE (entry), -1);
+ n_pages = page_cache ? ev_page_cache_get_n_pages (page_cache) : 0;
+ if (page_cache && ev_page_cache_has_nonnumeric_page_labels (page_cache)) {
+ label_text = g_strdup_printf (_("(%d of %d)"), page + 1, n_pages);
+ } else {
+ label_text = g_strdup_printf (_("of %d"), n_pages);
+ }
+ gtk_label_set_text (GTK_LABEL (proxy->label), label_text);
+ g_free (label_text);
+}
+
+static void
+page_changed_cb (EvPageCache *page_cache,
+ gint page,
+ EvPageActionWidget *proxy)
+{
+ g_assert (proxy);
+
+ if (page_cache != NULL && page >= 0) {
+ 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);