X-Git-Url: https://www.fi.muni.cz/~kas/git//home/kas/public_html/git/?a=blobdiff_plain;ds=inline;f=shell%2Fev-view-private.h;h=3e72e82af6482a783cdc285ce76c31b5e39ea619;hb=f343927df4325959193353c52cff1ea4b20b2286;hp=9cd4a74e6e1a743dfc4e3fbee2556f8d929047b3;hpb=a0af7b2e9d42e05aa0108ae6dc9c34deb9723404;p=evince.git diff --git a/shell/ev-view-private.h b/shell/ev-view-private.h index 9cd4a74e..3e72e82a 100644 --- a/shell/ev-view-private.h +++ b/shell/ev-view-private.h @@ -24,6 +24,12 @@ #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); };