#include "ev-view.h"
#include "ev-view-private.h"
-#if !GTK_CHECK_VERSION (2, 11, 7)
-#include "ev-tooltip.h"
-#endif
-
#define EV_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_CAST ((klass), EV_TYPE_VIEW, EvViewClass))
#define EV_IS_VIEW_CLASS(klass) (G_TYPE_CHECK_CLASS_TYPE ((klass), EV_TYPE_VIEW))
#define EV_VIEW_GET_CLASS(obj) (G_TYPE_INSTANCE_GET_CLASS ((obj), EV_TYPE_VIEW, EvViewClass))
}
link = ev_view_get_link_at_location (view, x, y);
-
-#if !GTK_CHECK_VERSION (2, 11, 7)
- if (view->link_tooltip == NULL) {
- view->link_tooltip = ev_tooltip_new (GTK_WIDGET (view));
- }
-
- if (view->hovered_link != link) {
- view->hovered_link = link;
- ev_tooltip_deactivate (EV_TOOLTIP (view->link_tooltip));
- }
-#endif
-
if (link) {
-#if GTK_CHECK_VERSION (2, 11, 7)
g_object_set (view, "has-tooltip", TRUE, NULL);
-#else
- char *msg = tip_from_link (view, link);
-
- if (msg && g_utf8_validate (msg, -1, NULL)) {
- EvTooltip *tooltip = EV_TOOLTIP (view->link_tooltip);
-
- ev_tooltip_set_position (tooltip, x, y);
- ev_tooltip_set_text (tooltip, msg);
- ev_tooltip_activate (tooltip);
- }
- g_free (msg);
-#endif
ev_view_set_cursor (view, EV_VIEW_CURSOR_LINK);
} else if ((field = ev_view_get_form_field_at_location (view, x, y))) {
if (field->is_read_only) {
return ev_view_do_popup_menu (EV_VIEW (widget), x, y);
}
-#if GTK_CHECK_VERSION (2, 11, 7)
static void
get_link_area (EvView *view,
gint x,
return TRUE;
}
-#endif /* GTK_CHECK_VERSION (2, 11, 7) */
static void
start_selection_for_event (EvView *view,
if (view->cursor != EV_VIEW_CURSOR_NORMAL)
ev_view_set_cursor (view, EV_VIEW_CURSOR_NORMAL);
-#if !GTK_CHECK_VERSION (2, 11, 7)
- if (view->link_tooltip) {
- view->hovered_link = NULL;
- ev_tooltip_deactivate (EV_TOOLTIP (view->link_tooltip));
- }
-#endif
-
return FALSE;
}
view->pixbuf_cache = NULL;
}
-#if !GTK_CHECK_VERSION (2, 11, 7)
- if (view->link_tooltip) {
- gtk_widget_destroy (view->link_tooltip);
- view->link_tooltip = NULL;
- }
-#endif
if (view->goto_window) {
gtk_widget_destroy (view->goto_window);
view->goto_window = NULL;
widget_class->drag_motion = ev_view_drag_motion;
widget_class->drag_data_received = ev_view_drag_data_received;
widget_class->popup_menu = ev_view_popup_menu;
-#if GTK_CHECK_VERSION (2, 11, 7)
widget_class->query_tooltip = ev_view_query_tooltip;
-#endif
gtk_object_class->destroy = ev_view_destroy;
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);