*
*/
+#ifdef HAVE_CONFIG_H
#include "config.h"
+#endif
+
+#include <string.h>
+#include <stdlib.h>
+
+#include <glib/gi18n.h>
+#include <gtk/gtk.h>
#include "ev-page-action.h"
#include "ev-page-cache.h"
#include "ev-page-action-widget.h"
#include "ev-marshal.h"
-#include <glib/gi18n.h>
-#include <gtk/gtkentry.h>
-#include <gtk/gtktoolitem.h>
-#include <gtk/gtklabel.h>
-#include <gtk/gtkhbox.h>
-#include <string.h>
-#include <stdlib.h>
-
struct _EvPageActionPrivate
{
EvPageCache *page_cache;
EvLinkDest *link_dest;
EvLinkAction *link_action;
EvLink *link;
+ gchar *link_text;
text = gtk_entry_get_text (GTK_ENTRY (entry));
page_cache = page->priv->page_cache;
link_dest = ev_link_dest_new_page_label (text);
link_action = ev_link_action_new_dest (link_dest);
- link = ev_link_new (text, link_action);
+ link_text = g_strdup_printf ("Page: %s", text);
+ link = ev_link_new (link_text, link_action);
g_signal_emit (action, signals[ACTIVATE_LINK], 0, link);
g_object_unref (link);
+ g_free (link_text);
/* rest the entry to the current page if we were unable to
* change it */
g_free (page_label);
}
+static gboolean page_scroll_cb(GtkWidget *widget, GdkEventScroll *event, EvPageAction* action)
+{
+ gint pageno;
+
+ pageno = ev_page_cache_get_current_page (action->priv->page_cache);
+ if ((event->direction == GDK_SCROLL_DOWN) &&
+ (pageno < ev_page_cache_get_n_pages(action->priv->page_cache) - 1))
+ pageno++;
+ if ((event->direction == GDK_SCROLL_UP) && (pageno > 0))
+ pageno--;
+ ev_page_cache_set_current_page (action->priv->page_cache, pageno);
+
+ return TRUE;
+}
+
static GtkWidget *
create_tool_item (GtkAction *action)
{
EvPageActionWidget *proxy;
GtkWidget *hbox;
+ AtkObject *obj;
proxy = g_object_new (ev_page_action_widget_get_type (), NULL);
gtk_container_set_border_width (GTK_CONTAINER (proxy), 6);
gtk_box_set_spacing (GTK_BOX (hbox), 6);
proxy->entry = gtk_entry_new ();
+ obj = gtk_widget_get_accessible (proxy->entry);
+ atk_object_set_name (obj, "page-label-entry");
+
+ g_signal_connect(proxy->entry, "scroll-event",G_CALLBACK(page_scroll_cb),action);
+ gtk_widget_add_events(GTK_WIDGET(proxy->entry),GDK_BUTTON_MOTION_MASK);
gtk_entry_set_width_chars (GTK_ENTRY (proxy->entry), 5);
gtk_box_pack_start (GTK_BOX (hbox), proxy->entry, FALSE, FALSE, 0);
gtk_widget_show (proxy->entry);
EvPageActionWidget *proxy;
proxy = EV_PAGE_ACTION_WIDGET (proxies->data);
- gtk_widget_grab_focus (proxy->entry);
+
+ if (GTK_WIDGET_MAPPED (GTK_WIDGET (proxy)))
+ gtk_widget_grab_focus (proxy->entry);
}
}