X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;f=shell%2Fev-view-private.h;h=c89444038f7f977bef73a3e7aae3086591f7998d;hb=81c134286178c1b09b7505c1a9e8fba0c612fe1f;hp=ec1fa020f16bc8a3ea384011ae0a5ecebc4a14ae;hpb=6b9aeb5d0b86d0002db107ad79af550a4e39f07a;p=evince.git diff --git a/shell/ev-view-private.h b/shell/ev-view-private.h index ec1fa020..c8944403 100644 --- a/shell/ev-view-private.h +++ b/shell/ev-view-private.h @@ -24,7 +24,13 @@ #include "ev-view.h" #include "ev-pixbuf-cache.h" #include "ev-page-cache.h" +#include "ev-jobs.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 { @@ -32,14 +38,27 @@ 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_drag; GdkPoint start; gboolean in_selection; GList *selections; + EvSelectionStyle style; } SelectionInfo; /* Information for handling images DND */ @@ -62,7 +81,8 @@ 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 { @@ -73,14 +93,15 @@ typedef enum { } EvPresentationState; struct _EvView { - GtkWidget parent_instance; + GtkLayout layout; EvDocument *document; - char *status; - char *find_status; - int find_result; + /* Find */ + GList **find_pages; + gint find_result; gboolean jump_to_find_result; + gboolean highlight_find_results; EvPageCache *page_cache; EvPixbufCache *pixbuf_cache; @@ -104,9 +125,12 @@ struct _EvView { gint end_page; gint current_page; - int rotation; - double scale; - int spacing; + gint rotation; + gdouble scale; + gint spacing; + gdouble dpi; + gdouble max_scale; + gdouble min_scale; gboolean loading; gboolean continuous; @@ -114,6 +138,7 @@ struct _EvView { gboolean fullscreen; gboolean presentation; EvSizingMode sizing_mode; + cairo_surface_t *loading_text; /* Presentation */ EvPresentationState presentation_state; @@ -126,6 +151,9 @@ struct _EvView { /* Information for middle clicking and dragging around. */ DragInfo drag_info; + + /* Autoscrolling */ + AutoScrollInfo scroll_info; /* Selection */ GdkPoint motion; @@ -135,28 +163,28 @@ struct _EvView { EvViewSelectionMode selection_mode; SelectionInfo selection_info; + /* Copy link address selection */ + EvLinkAction *link_selected; + /* Image DND */ ImageDNDInfo image_dnd_info; - /* Links */ - GtkWidget *link_tooltip; - EvLink *hovered_link; - /* Goto Popup */ GtkWidget *goto_window; GtkWidget *goto_entry; + + 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, - EvScrollType scroll, + GtkScrollType 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,