]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-view.c
Fixes documentatoin build
[evince.git] / shell / ev-view.c
index 750ee5e4d3c5c5b26a2a92500914329b1edf1d76..41efa337be8426d89b608865e8631595f01fe2cb 100644 (file)
 #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))
@@ -124,7 +120,7 @@ static void       set_scroll_adjustment                      (EvView
 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);
@@ -574,25 +570,25 @@ static void
 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;
@@ -603,12 +599,12 @@ ev_view_scroll (EvView        *view,
 
        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:
@@ -629,7 +625,7 @@ ev_view_scroll (EvView        *view,
                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 */
@@ -642,7 +638,7 @@ ev_view_scroll (EvView        *view,
                                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 */
@@ -655,16 +651,16 @@ ev_view_scroll (EvView        *view,
                                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:
@@ -1526,33 +1522,8 @@ ev_view_handle_cursor_over_xy (EvView *view, gint x, gint y)
        }
        
        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) {
@@ -2589,7 +2560,6 @@ ev_view_popup_menu (GtkWidget *widget)
        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,
@@ -2641,7 +2611,6 @@ ev_view_query_tooltip (GtkWidget         *widget,
 
        return TRUE;
 }
-#endif /* GTK_CHECK_VERSION (2, 11, 7) */
 
 static void
 start_selection_for_event (EvView         *view,
@@ -3038,15 +3007,20 @@ ev_view_motion_notify_event (GtkWidget      *widget,
                }
        }
        
-       /* For the Evince 0.4.x release, we limit selection to un-rotated
-        * documents only.
-        */
-       if (view->pressed_button == 1 && view->rotation == 0) {
+       switch (view->pressed_button) {
+       case 1:
+               /* For the Evince 0.4.x release, we limit selection to un-rotated
+                * documents only.
+                */
+               if (view->rotation != 0)
+                       return FALSE;
 
                /* Schedule timeout to scroll during selection and additionally 
                 * scroll once to allow arbitrary speed. */
                if (!view->selection_scroll_id)
-                   view->selection_scroll_id = g_timeout_add (SCROLL_TIME, (GSourceFunc)selection_scroll_timeout_cb, view);
+                   view->selection_scroll_id = g_timeout_add (SCROLL_TIME,
+                                                              (GSourceFunc)selection_scroll_timeout_cb,
+                                                              view);
                else 
                    selection_scroll_timeout_cb (view);
 
@@ -3063,7 +3037,7 @@ ev_view_motion_notify_event (GtkWidget      *widget,
                        view->selection_update_id = g_idle_add ((GSourceFunc)selection_update_idle_cb, view);
 
                return TRUE;
-       } else if (view->pressed_button == 2) {
+       case 2:
                if (!view->drag_info.in_drag) {
                        gboolean start;
                        int i;
@@ -3113,10 +3087,11 @@ ev_view_motion_notify_event (GtkWidget      *widget,
 
                        return TRUE;
                }
-       } else if (view->pressed_button <= 0) {
+
+               break;
+       default:
                ev_view_handle_cursor_over_xy (view, x, y);
-               return TRUE;
-       }
+       } 
 
        return FALSE;
 }
@@ -3522,13 +3497,6 @@ ev_view_leave_notify_event (GtkWidget *widget, GdkEventCrossing   *event)
        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;
 }
 
@@ -3840,12 +3808,6 @@ ev_view_destroy (GtkObject *object)
                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;
@@ -4026,9 +3988,7 @@ ev_view_class_init (EvViewClass *class)
        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;
 
@@ -4146,22 +4106,22 @@ ev_view_class_init (EvViewClass *class)
 
        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);
        
 }
 
@@ -4205,14 +4165,15 @@ ev_view_init (EvView *view)
 
 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);
@@ -4227,7 +4188,24 @@ ev_view_transition_animation_finish (EvTransitionAnimation *animation,
 {
        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
@@ -4290,7 +4268,7 @@ page_changed_cb (EvPageCache *page_cache,
                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));
        }
@@ -4660,7 +4638,7 @@ ev_view_set_presentation (EvView   *view,
 
                if (view->animation) {
                        /* stop any running animation */
-                       ev_view_transition_animation_finish (view->animation, view);
+                       ev_view_transition_animation_cancel (view->animation, view);
                }
        }
 
@@ -5384,6 +5362,7 @@ merge_selection_region (EvView *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");
@@ -5492,6 +5471,7 @@ merge_selection_region (EvView *view,
 
        /* 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
@@ -5523,6 +5503,7 @@ 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)
@@ -5815,8 +5796,7 @@ ev_view_next_page (EvView *view)
        }
 
        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);
@@ -5869,8 +5849,7 @@ ev_view_previous_page (EvView *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);
@@ -5911,25 +5890,6 @@ ev_sizing_mode_get_type (void)
   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)
 {