]> www.fi.muni.cz Git - evince.git/blobdiff - shell/ev-view-private.h
Fixes bug #542924. Makes enums static to fix Solaris build.
[evince.git] / shell / ev-view-private.h
index 9cd4a74e6e1a743dfc4e3fbee2556f8d929047b3..3e72e82af6482a783cdc285ce76c31b5e39ea619 100644 (file)
 #include "ev-view.h"
 #include "ev-pixbuf-cache.h"
 #include "ev-page-cache.h"
+#include "ev-image.h"
+#include "ev-form-field.h"
+#include "ev-selection.h"
+#include "ev-transition-animation.h"
+
+#define DRAG_HISTORY 10
 
 /* Information for middle clicking and moving around the doc */
 typedef struct {
@@ -31,20 +37,41 @@ typedef struct {
        GdkPoint start;
        gdouble hadj;
        gdouble vadj;
+       guint drag_timeout_id;
+       guint release_timeout_id;
+       GdkPoint buffer[DRAG_HISTORY];
+       GdkPoint momentum;
 } DragInfo;
 
+/* Autoscrolling */
+typedef struct {
+       gboolean autoscrolling;
+       guint last_y;
+       guint start_y;
+       guint timeout_id;       
+} AutoScrollInfo;
+
 /* Information for handling selection */
 typedef struct {
-       gboolean in_selection;
        gboolean in_drag;
        GdkPoint start;
+       gboolean in_selection;
        GList *selections;
+       EvSelectionStyle style;
 } SelectionInfo;
 
+/* Information for handling images DND */
+typedef struct {
+       gboolean in_drag;
+       GdkPoint start;
+       EvImage *image;
+} ImageDNDInfo;
+
 typedef enum {
        SCROLL_TO_KEEP_POSITION,
-       SCROLL_TO_CURRENT_PAGE,
-       SCROLL_TO_CENTER
+       SCROLL_TO_PAGE_POSITION,
+       SCROLL_TO_CENTER,
+       SCROLL_TO_FIND_LOCATION,
 } PendingScroll;
 
 typedef enum {
@@ -53,77 +80,118 @@ typedef enum {
        EV_VIEW_CURSOR_LINK,
        EV_VIEW_CURSOR_WAIT,
        EV_VIEW_CURSOR_HIDDEN,
-       EV_VIEW_CURSOR_DRAG
+       EV_VIEW_CURSOR_DRAG,
+       EV_VIEW_CURSOR_AUTOSCROLL,
 } EvViewCursor;
 
+typedef enum {
+       EV_PRESENTATION_NORMAL,
+       EV_PRESENTATION_BLACK,
+       EV_PRESENTATION_WHITE,
+       EV_PRESENTATION_END
+} EvPresentationState;
+
 struct _EvView {
-       GtkWidget parent_instance;
+       GtkLayout layout;
 
        EvDocument *document;
 
-       char *status;
        char *find_status;
+       int find_result;
+       gboolean jump_to_find_result;
+       gboolean highlight_find_results;
+       
+       EvPageCache *page_cache;
+       EvPixbufCache *pixbuf_cache;
+       EvViewCursor cursor;
+       EvJobRender *current_job;
 
        /* Scrolling */
        GtkAdjustment *hadjustment;
        GtkAdjustment *vadjustment;
 
        gint scroll_x;
-       gint scroll_y;
+       gint scroll_y;  
+
+       PendingScroll pending_scroll;
+       gboolean      pending_resize;
+       EvPoint       pending_point;
+
+       /* Current geometry */
+    
+       gint start_page;
+       gint end_page;
+       gint current_page;
+
+       gint rotation;
+       gdouble scale;
+       gint spacing;
+       gdouble dpi;
+       gdouble max_scale;
+       gdouble min_scale;
+
+       gboolean loading;
+       gboolean continuous;
+       gboolean dual_page;
+       gboolean fullscreen;
+       gboolean presentation;
+       EvSizingMode sizing_mode;
+       cairo_surface_t *loading_text;
+
+       /* Presentation */
+       EvPresentationState presentation_state;
+       EvSizingMode sizing_mode_saved;
+       double scale_saved;
+       guint  trans_timeout_id;
+
+       /* Common for button press handling */
+       int pressed_button;
 
        /* Information for middle clicking and dragging around. */
        DragInfo drag_info;
+       
+       /* Autoscrolling */
+       AutoScrollInfo scroll_info;
 
        /* Selection */
-       gint motion_x;
-       gint motion_y;
+       GdkPoint motion;
        guint selection_update_id;
+       guint selection_scroll_id;
 
        EvViewSelectionMode selection_mode;
        SelectionInfo selection_info;
 
-       int pressed_button;
-       EvViewCursor cursor;
-       GtkWidget *link_tooltip;
-       EvLink *hovered_link;
-
-       EvPageCache *page_cache;
-       EvPixbufCache *pixbuf_cache;
+       /* Copy link address selection */
+       EvLinkAction *link_selected;
 
-       gint start_page;
-       gint end_page;
-       gint current_page;
+       /* Image DND */
+       ImageDNDInfo image_dnd_info;
 
-       EvJobRender *current_job;
-
-       int find_page;
-       int find_result;
-       int spacing;
+#if !GTK_CHECK_VERSION (2, 11, 7)
+       /* Links */
+       GtkWidget *link_tooltip;
+       EvLink *hovered_link;
+#endif
 
-       int rotation;
-       double scale;
+       /* Goto Popup */
+       GtkWidget *goto_window;
+       GtkWidget *goto_entry;
 
-       gboolean continuous;
-       gboolean dual_page;
-       gboolean fullscreen;
-       gboolean presentation;
-       EvSizingMode sizing_mode;
-
-       PendingScroll pending_scroll;
-       gboolean pending_resize;
+       EvTransitionAnimation *animation;
 };
 
 struct _EvViewClass {
-       GtkWidgetClass parent_class;
+       GtkLayoutClass parent_class;
 
-       void    (*set_scroll_adjustments) (EvView         *view,
-                                          GtkAdjustment  *hadjustment,
-                                          GtkAdjustment  *vadjustment);
        void    (*binding_activated)      (EvView         *view,
-                                          GtkScrollType   scroll,
+                                          EvScrollType   scroll,
                                           gboolean        horizontal);
        void    (*zoom_invalid)           (EvView         *view);
+       void    (*handle_link)            (EvView         *view,
+                                          EvLink         *link);
        void    (*external_link)          (EvView         *view,
+                                          EvLinkAction   *action);
+       void    (*popup_menu)             (EvView         *view,
                                           EvLink         *link);
 };