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);