- entry = gtk_entry_new ();
- g_signal_connect (entry, "size_request",
- G_CALLBACK (entry_size_request_cb),
- action);
- g_object_set_data (G_OBJECT (item), "entry", entry);
- gtk_widget_show (entry);
+static void
+update_page_cache (EvPageAction *page, GParamSpec *pspec, EvPageActionWidget *proxy)
+{
+ EvPageCache *page_cache;
+ guint signal_id;
+
+ page_cache = page->priv->page_cache;
+
+ /* clear the old signal */
+ if (proxy->signal_id > 0 && proxy->page_cache)
+ g_signal_handler_disconnect (proxy->page_cache, proxy->signal_id);
+
+ if (page_cache != NULL) {
+ signal_id = g_signal_connect_object (page_cache,
+ "page-changed",
+ G_CALLBACK (page_changed_cb),
+ proxy, 0);
+ /* Set the initial value */
+ page_changed_cb (page_cache,
+ ev_page_cache_get_current_page (page_cache),
+ proxy);
+ } else {
+ /* Or clear the entry */
+ signal_id = 0;
+ page_changed_cb (NULL, 0, proxy);
+ }
+ ev_page_action_widget_set_page_cache (proxy, page_cache);
+ proxy->signal_id = signal_id;
+}