static void add_scroll_binding_keypad (GtkBindingSet *binding_set,
guint keyval,
GdkModifierType modifiers,
- EvScrollType scroll,
+ GtkScrollType scroll,
gboolean horizontal);
static void ensure_rectangle_is_visible (EvView *view,
GdkRectangle *rect);
add_scroll_binding_keypad (GtkBindingSet *binding_set,
guint keyval,
GdkModifierType modifiers,
- EvScrollType scroll,
+ GtkScrollType scroll,
gboolean horizontal)
{
guint keypad_keyval = keyval - GDK_Left + GDK_KP_Left;
gtk_binding_entry_add_signal (binding_set, keyval, modifiers,
"binding_activated", 2,
- EV_TYPE_SCROLL_TYPE, scroll,
+ GTK_TYPE_SCROLL_TYPE, scroll,
G_TYPE_BOOLEAN, horizontal);
gtk_binding_entry_add_signal (binding_set, keypad_keyval, modifiers,
"binding_activated", 2,
- EV_TYPE_SCROLL_TYPE, scroll,
+ GTK_TYPE_SCROLL_TYPE, scroll,
G_TYPE_BOOLEAN, horizontal);
}
void
ev_view_scroll (EvView *view,
- EvScrollType scroll,
- gboolean horizontal)
+ GtkScrollType scroll,
+ gboolean horizontal)
{
GtkAdjustment *adjustment;
double value, increment;
if (view->presentation || view->sizing_mode == EV_SIZING_BEST_FIT) {
switch (scroll) {
- case EV_SCROLL_PAGE_BACKWARD:
- case EV_SCROLL_STEP_BACKWARD:
+ case GTK_SCROLL_PAGE_BACKWARD:
+ case GTK_SCROLL_STEP_BACKWARD:
ev_view_previous_page (view);
break;
- case EV_SCROLL_PAGE_FORWARD:
- case EV_SCROLL_STEP_FORWARD:
+ case GTK_SCROLL_PAGE_FORWARD:
+ case GTK_SCROLL_STEP_FORWARD:
ev_view_next_page (view);
break;
default:
last_page = TRUE;
switch (scroll) {
- case EV_SCROLL_PAGE_BACKWARD:
+ case GTK_SCROLL_PAGE_BACKWARD:
/* Do not jump backwards if at the first page */
if (value == (adjustment->lower) && first_page) {
/* Do nothing */
value = MAX (value - increment, adjustment->lower);
}
break;
- case EV_SCROLL_PAGE_FORWARD:
+ case GTK_SCROLL_PAGE_FORWARD:
/* Do not jump forward if at the last page */
if (value == (adjustment->upper - adjustment->page_size) && last_page) {
/* Do nothing */
value = MIN (value + increment, adjustment->upper - adjustment->page_size);
}
break;
- case EV_SCROLL_STEP_BACKWARD:
+ case GTK_SCROLL_STEP_BACKWARD:
value -= adjustment->step_increment;
break;
- case EV_SCROLL_STEP_FORWARD:
+ case GTK_SCROLL_STEP_FORWARD:
value += adjustment->step_increment;
break;
- case EV_SCROLL_STEP_DOWN:
+ case GTK_SCROLL_STEP_DOWN:
value -= adjustment->step_increment / 10;
break;
- case EV_SCROLL_STEP_UP:
+ case GTK_SCROLL_STEP_UP:
value += adjustment->step_increment / 10;
break;
default:
binding_set = gtk_binding_set_by_class (class);
- add_scroll_binding_keypad (binding_set, GDK_Left, 0, EV_SCROLL_STEP_BACKWARD, TRUE);
- add_scroll_binding_keypad (binding_set, GDK_Right, 0, EV_SCROLL_STEP_FORWARD, TRUE);
- add_scroll_binding_keypad (binding_set, GDK_Left, GDK_MOD1_MASK, EV_SCROLL_STEP_DOWN, TRUE);
- add_scroll_binding_keypad (binding_set, GDK_Right, GDK_MOD1_MASK, EV_SCROLL_STEP_UP, TRUE);
- add_scroll_binding_keypad (binding_set, GDK_Up, 0, EV_SCROLL_STEP_BACKWARD, FALSE);
- add_scroll_binding_keypad (binding_set, GDK_Down, 0, EV_SCROLL_STEP_FORWARD, FALSE);
- add_scroll_binding_keypad (binding_set, GDK_Up, GDK_MOD1_MASK, EV_SCROLL_STEP_DOWN, FALSE);
- add_scroll_binding_keypad (binding_set, GDK_Down, GDK_MOD1_MASK, EV_SCROLL_STEP_UP, FALSE);
- gtk_binding_entry_add_signal (binding_set, GDK_H, 0, "binding_activated", 2, EV_TYPE_SCROLL_TYPE,
- EV_SCROLL_STEP_BACKWARD, G_TYPE_BOOLEAN, TRUE);
- gtk_binding_entry_add_signal (binding_set, GDK_J, 0, "binding_activated", 2, EV_TYPE_SCROLL_TYPE,
- EV_SCROLL_STEP_FORWARD, G_TYPE_BOOLEAN, FALSE);
- gtk_binding_entry_add_signal (binding_set, GDK_K, 0, "binding_activated", 2, EV_TYPE_SCROLL_TYPE,
- EV_SCROLL_STEP_BACKWARD, G_TYPE_BOOLEAN, FALSE);
- gtk_binding_entry_add_signal (binding_set, GDK_L, 0, "binding_activated", 2, EV_TYPE_SCROLL_TYPE,
- EV_SCROLL_STEP_FORWARD, G_TYPE_BOOLEAN, TRUE);
+ add_scroll_binding_keypad (binding_set, GDK_Left, 0, GTK_SCROLL_STEP_BACKWARD, TRUE);
+ add_scroll_binding_keypad (binding_set, GDK_Right, 0, GTK_SCROLL_STEP_FORWARD, TRUE);
+ add_scroll_binding_keypad (binding_set, GDK_Left, GDK_MOD1_MASK, GTK_SCROLL_STEP_DOWN, TRUE);
+ add_scroll_binding_keypad (binding_set, GDK_Right, GDK_MOD1_MASK, GTK_SCROLL_STEP_UP, TRUE);
+ add_scroll_binding_keypad (binding_set, GDK_Up, 0, GTK_SCROLL_STEP_BACKWARD, FALSE);
+ add_scroll_binding_keypad (binding_set, GDK_Down, 0, GTK_SCROLL_STEP_FORWARD, FALSE);
+ add_scroll_binding_keypad (binding_set, GDK_Up, GDK_MOD1_MASK, GTK_SCROLL_STEP_DOWN, FALSE);
+ add_scroll_binding_keypad (binding_set, GDK_Down, GDK_MOD1_MASK, GTK_SCROLL_STEP_UP, FALSE);
+ gtk_binding_entry_add_signal (binding_set, GDK_H, 0, "binding_activated", 2, GTK_TYPE_SCROLL_TYPE,
+ GTK_SCROLL_STEP_BACKWARD, G_TYPE_BOOLEAN, TRUE);
+ gtk_binding_entry_add_signal (binding_set, GDK_J, 0, "binding_activated", 2, GTK_TYPE_SCROLL_TYPE,
+ GTK_SCROLL_STEP_FORWARD, G_TYPE_BOOLEAN, FALSE);
+ gtk_binding_entry_add_signal (binding_set, GDK_K, 0, "binding_activated", 2, GTK_TYPE_SCROLL_TYPE,
+ GTK_SCROLL_STEP_BACKWARD, G_TYPE_BOOLEAN, FALSE);
+ gtk_binding_entry_add_signal (binding_set, GDK_L, 0, "binding_activated", 2, GTK_TYPE_SCROLL_TYPE,
+ GTK_SCROLL_STEP_FORWARD, G_TYPE_BOOLEAN, TRUE);
}
static void
ev_view_change_page (EvView *view,
- gint new_page)
+ gint new_page,
+ gboolean start_transition)
{
gint x, y;
view->current_page = new_page;
view->pending_scroll = SCROLL_TO_PAGE_POSITION;
- if (view->presentation)
+ if (view->presentation && start_transition)
ev_view_presentation_transition_start (view);
gtk_widget_get_pointer (GTK_WIDGET (view), &x, &y);
{
g_object_unref (view->animation);
view->animation = NULL;
- ev_view_change_page (view, view->current_page);
+ ev_view_change_page (view, view->current_page, TRUE);
+}
+
+/**
+ * ev_view_transition_animation_cancel:
+ * @animation: Animation to finish
+ * @view: An EvView
+ *
+ * Does almost the same as cancel, but without scheduling the transition.
+ */
+
+static void
+ev_view_transition_animation_cancel (EvTransitionAnimation *animation,
+ EvView *view)
+{
+ g_object_unref (view->animation);
+ view->animation = NULL;
+ ev_view_change_page (view, view->current_page, FALSE);
}
static void
if (view->presentation)
ev_view_presentation_animation_start (view, new_page);
- ev_view_change_page (view, new_page);
+ ev_view_change_page (view, new_page, TRUE);
} else {
gtk_widget_queue_draw (GTK_WIDGET (view));
}
if (view->animation) {
/* stop any running animation */
- ev_view_transition_animation_finish (view->animation, view);
+ ev_view_transition_animation_cancel (view->animation, view);
}
}
/* Update the selection */
old_list = ev_pixbuf_cache_get_selection_list (view->pixbuf_cache);
g_list_foreach (view->selection_info.selections, (GFunc)selection_free, NULL);
+ g_list_free (view->selection_info.selections);
view->selection_info.selections = new_list;
ev_pixbuf_cache_set_selection_list (view->pixbuf_cache, new_list);
g_object_notify (G_OBJECT (view), "has-selection");
/* Free the old list, now that we're done with it. */
g_list_foreach (old_list, (GFunc) selection_free, NULL);
+ g_list_free (old_list);
}
static void
clear_selection (EvView *view)
{
g_list_foreach (view->selection_info.selections, (GFunc)selection_free, NULL);
+ g_list_free (view->selection_info.selections);
view->selection_info.selections = NULL;
view->selection_info.in_selection = FALSE;
if (view->pixbuf_cache)
}
if (view->animation) {
- ev_view_transition_animation_finish (view->animation, view);
- return TRUE;
+ ev_view_transition_animation_cancel (view->animation, view);
}
ev_view_presentation_transition_stop (view);
}
if (view->animation) {
- ev_view_transition_animation_finish (view->animation, view);
- return TRUE;
+ ev_view_transition_animation_cancel (view->animation, view);
}
ev_view_reset_presentation_state (view);
return etype;
}
-GType
-ev_scroll_type_get_type (void)
-{
- static GType etype = 0;
- if (etype == 0) {
- static const GEnumValue values[] = {
- { EV_SCROLL_PAGE_FORWARD, "EV_SCROLL_PAGE_FORWARD", "scroll-page-forward" },
- { EV_SCROLL_PAGE_BACKWARD, "EV_SCROLL_PAGE_BACKWARD", "scroll-page-backward" },
- { EV_SCROLL_STEP_FORWARD, "EV_SCROLL_STEP_FORWARD", "scroll-step-forward" },
- { EV_SCROLL_STEP_FORWARD, "EV_SCROLL_STEP_FORWARD", "scroll-step-forward" },
- { EV_SCROLL_STEP_UP, "EV_SCROLL_STEP_UP", "scroll-step-up" },
- { EV_SCROLL_STEP_DOWN, "EV_SCROLL_STEP_DOWN", "scroll-step-down" },
- { 0, NULL, NULL }
- };
- etype = g_enum_register_static ("EvScrollType", values);
- }
- return etype;
-}
-
void
ev_view_update_view_size (EvView *view, GtkScrolledWindow * scrolled_window)
{