#include <stdlib.h>
#include <math.h>
#include <string.h>
+
#include <glib/gi18n.h>
#include <gtk/gtk.h>
#include <gdk/gdkkeysyms.h>
-#include "ev-marshal.h"
-#include "ev-view.h"
-#include "ev-view-private.h"
-#include "ev-utils.h"
-#include "ev-document-links.h"
-#include "ev-document-images.h"
-#include "ev-document-find.h"
-#include "ev-document-transition.h"
+#include "ev-application.h"
#include "ev-document-forms.h"
+#include "ev-document-images.h"
+#include "ev-document-links.h"
#include "ev-document-misc.h"
+#include "ev-document-transition.h"
+#include "ev-marshal.h"
#include "ev-page-cache.h"
#include "ev-pixbuf-cache.h"
#include "ev-transition-animation.h"
-#if !GTK_CHECK_VERSION (2, 11, 7)
-#include "ev-tooltip.h"
-#endif
-#include "ev-application.h"
+#include "ev-utils.h"
+#include "ev-view.h"
+#include "ev-view-private.h"
#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))
-
enum {
PROP_0,
- PROP_FIND_STATUS,
PROP_CONTINUOUS,
PROP_DUAL_PAGE,
PROP_FULLSCREEN,
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);
GdkRectangle *expose_area);
/*** Callbacks ***/
-static void find_changed_cb (EvDocument *document,
- int page,
- EvView *view);
static void job_finished_cb (EvPixbufCache *pixbuf_cache,
GdkRegion *region,
EvView *view);
gint y);
/*** Find ***/
-static void update_find_status_message (EvView *view,
- gboolean this_page);
-static void ev_view_set_find_status (EvView *view,
- const char *message);
+static gint ev_view_find_get_n_results (EvView *view,
+ gint page);
+static EvRectangle *ev_view_find_get_result (EvView *view,
+ gint page,
+ gint result);
static void jump_to_find_result (EvView *view);
static void jump_to_find_page (EvView *view,
EvViewFindDirection direction,
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;
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:
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 */
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 */
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:
}
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) {
draw_one_page (view, i, cr, &page_area, &border, &(event->area), &page_ready);
- if (page_ready && EV_IS_DOCUMENT_FIND (view->document) && view->highlight_find_results)
+ if (page_ready && view->find_pages && view->highlight_find_results)
highlight_find_results (view, i);
}
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,
}
}
- /* 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);
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;
return TRUE;
}
- } else if (view->pressed_button <= 0) {
+
+ break;
+ default:
ev_view_handle_cursor_over_xy (view, x, y);
- return TRUE;
- }
+ }
return FALSE;
}
g_signal_connect (view->goto_entry, "activate",
G_CALLBACK (ev_view_goto_entry_activate),
view);
- gtk_box_pack_start_defaults (GTK_BOX (hbox), view->goto_entry);
+ gtk_box_pack_start (GTK_BOX (hbox), view->goto_entry, TRUE, TRUE, 0);
gtk_widget_show (view->goto_entry);
gtk_widget_realize (view->goto_entry);
}
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;
}
static void
highlight_find_results (EvView *view, int page)
{
- EvDocumentFind *find;
- int i, results = 0;
+ gint i, n_results = 0;
- find = EV_DOCUMENT_FIND (view->document);
+ n_results = ev_view_find_get_n_results (view, page);
- results = ev_document_find_get_n_results (find, page);
-
- for (i = 0; i < results; i++) {
- EvRectangle rectangle;
+ for (i = 0; i < n_results; i++) {
+ EvRectangle *rectangle;
GdkRectangle view_rectangle;
guchar alpha;
alpha = 0x20;
}
- ev_document_find_get_result (find, page, i, &rectangle);
- doc_rect_to_view_rect (view, page, &rectangle, &view_rectangle);
+ rectangle = ev_view_find_get_result (view, page, i);
+ doc_rect_to_view_rect (view, page, rectangle, &view_rectangle);
draw_rubberband (GTK_WIDGET (view), view->layout.bin_window,
&view_rectangle, alpha);
}
{
EvView *view = EV_VIEW (object);
- g_free (view->find_status);
-
clear_selection (view);
clear_link_selected (view);
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;
EvView *view = EV_VIEW (object);
switch (prop_id) {
- case PROP_FIND_STATUS:
- g_value_set_string (value, view->find_status);
- break;
case PROP_CONTINUOUS:
g_value_set_boolean (value, view->continuous);
break;
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;
G_TYPE_OBJECT);
- g_object_class_install_property (object_class,
- PROP_FIND_STATUS,
- g_param_spec_string ("find-status",
- "Find Status Message",
- "The find status message",
- NULL,
- G_PARAM_READABLE));
-
g_object_class_install_property (object_class,
PROP_CONTINUOUS,
g_param_spec_boolean ("continuous",
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);
}
/*** Callbacks ***/
-static void
-find_changed_cb (EvDocument *document, int page, EvView *view)
-{
- double percent;
- int n_pages;
-
- percent = ev_document_find_get_progress
- (EV_DOCUMENT_FIND (view->document));
- n_pages = ev_page_cache_get_n_pages (view->page_cache);
-
- if (view->jump_to_find_result == TRUE) {
- jump_to_find_page (view, EV_VIEW_FIND_NEXT, 0);
- jump_to_find_result (view);
- }
- update_find_status_message (view, percent * n_pages >= n_pages - 1 );
- if (view->current_page == page)
- gtk_widget_queue_draw (GTK_WIDGET (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);
{
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 (EV_IS_DOCUMENT_FIND (view->document)) {
- view->find_result = 0;
- update_find_status_message (view, TRUE);
- }
+ view->find_result = 0;
}
static void
clear_caches (view);
if (view->document) {
- g_signal_handlers_disconnect_by_func (view->document,
- find_changed_cb,
- view);
g_object_unref (view->document);
view->page_cache = NULL;
-
}
view->document = document;
if (view->document) {
g_object_ref (view->document);
- if (EV_IS_DOCUMENT_FIND (view->document)) {
- g_signal_connect (view->document,
- "find_changed",
- G_CALLBACK (find_changed_cb),
- view);
- }
-
setup_caches (view);
}
if (view->animation) {
/* stop any running animation */
- ev_view_transition_animation_finish (view->animation, view);
+ ev_view_transition_animation_cancel (view->animation, view);
}
}
}
/*** Find ***/
-static void
-update_find_status_message (EvView *view, gboolean this_page)
-{
- char *message;
-
- if (this_page) {
- int results;
-
- results = ev_document_find_get_n_results
- (EV_DOCUMENT_FIND (view->document),
- view->current_page);
- /* TRANS: Sometimes this could be better translated as
- "%d hit(s) on this page". Therefore this string
- contains plural cases. */
- message = g_strdup_printf (ngettext ("%d found on this page",
- "%d found on this page",
- results),
- results);
- } else {
- double percent;
-
- percent = ev_document_find_get_progress
- (EV_DOCUMENT_FIND (view->document));
- message = g_strdup_printf (_("%3d%% remaining to search"),
- (int) ((1.0 - percent) * 100));
-
- }
- ev_view_set_find_status (view, message);
- g_free (message);
-}
-
-const char *
-ev_view_get_find_status (EvView *view)
+static gint
+ev_view_find_get_n_results (EvView *view, gint page)
{
- g_return_val_if_fail (EV_IS_VIEW (view), NULL);
-
- return view->find_status;
+ return view->find_pages ? g_list_length (view->find_pages[page]) : 0;
}
-static void
-ev_view_set_find_status (EvView *view, const char *message)
+static EvRectangle *
+ev_view_find_get_result (EvView *view, gint page, gint result)
{
- g_return_if_fail (EV_IS_VIEW (view));
-
- g_free (view->find_status);
- view->find_status = g_strdup (message);
- g_object_notify (G_OBJECT (view), "find-status");
+ return view->find_pages ? (EvRectangle *) g_list_nth_data (view->find_pages[page], result) : NULL;
}
static void
jump_to_find_result (EvView *view)
{
- EvDocumentFind *find = EV_DOCUMENT_FIND (view->document);
- EvRectangle rect;
- GdkRectangle view_rect;
- int n_results;
- int page = view->current_page;
+ gint n_results;
+ gint page = view->current_page;
- n_results = ev_document_find_get_n_results (find, page);
+ n_results = ev_view_find_get_n_results (view, page);
- if (n_results > 0 && view->find_result < n_results) {
- ev_document_find_get_result
- (find, page, view->find_result, &rect);
+ if (n_results > 0 && view->find_result < n_results) {
+ EvRectangle *rect;
+ GdkRectangle view_rect;
- doc_rect_to_view_rect (view, page, &rect, &view_rect);
+ rect = ev_view_find_get_result (view, page, view->find_result);
+ doc_rect_to_view_rect (view, page, rect, &view_rect);
ensure_rectangle_is_visible (view, &view_rect);
}
}
n_pages = ev_page_cache_get_n_pages (view->page_cache);
for (i = 0; i < n_pages; i++) {
- int has_results;
int page;
if (direction == EV_VIEW_FIND_NEXT)
if (page >= n_pages) {
page = page - n_pages;
- }
- if (page < 0)
+ } else if (page < 0)
page = page + n_pages;
-
- has_results = ev_document_find_page_has_results
- (EV_DOCUMENT_FIND (view->document), page);
- if (has_results == -1) {
- break;
- } else if (has_results == 1) {
+
+ if (ev_view_find_get_n_results (view, page) > 0) {
ev_page_cache_set_current_page (view->page_cache, page);
break;
}
}
}
-gboolean
-ev_view_can_find_next (EvView *view)
+void
+ev_view_find_changed (EvView *view, GList **results, gint page)
{
- if (EV_IS_DOCUMENT_FIND (view->document)) {
- EvDocumentFind *find = EV_DOCUMENT_FIND (view->document);
- int i, n_pages;
-
- n_pages = ev_page_cache_get_n_pages (view->page_cache);
- for (i = 0; i < n_pages; i++) {
- if (ev_document_find_get_n_results (find, i) > 0) {
- return TRUE;
- }
- }
+ view->find_pages = results;
+
+ if (view->jump_to_find_result == TRUE) {
+ jump_to_find_page (view, EV_VIEW_FIND_NEXT, 0);
+ jump_to_find_result (view);
}
- return FALSE;
+ if (view->current_page == page)
+ gtk_widget_queue_draw (GTK_WIDGET (view));
}
void
ev_view_find_next (EvView *view)
{
- int n_results, n_pages;
- EvDocumentFind *find = EV_DOCUMENT_FIND (view->document);
-
- n_results = ev_document_find_get_n_results (find, view->current_page);
-
- n_pages = ev_page_cache_get_n_pages (view->page_cache);
+ gint n_results;
+ n_results = ev_view_find_get_n_results (view, view->current_page);
view->find_result++;
if (view->find_result >= n_results) {
-
view->find_result = 0;
jump_to_find_page (view, EV_VIEW_FIND_NEXT, 1);
jump_to_find_result (view);
}
}
-gboolean
-ev_view_can_find_previous (EvView *view)
-{
- if (EV_IS_DOCUMENT_FIND (view->document)) {
- EvDocumentFind *find = EV_DOCUMENT_FIND (view->document);
- int i, n_pages;
-
- n_pages = ev_page_cache_get_n_pages (view->page_cache);
- for (i = n_pages - 1; i >= 0; i--) {
- if (ev_document_find_get_n_results (find, i) > 0) {
- return TRUE;
- }
- }
- }
-
- return FALSE;
-}
void
ev_view_find_previous (EvView *view)
{
- int n_results, n_pages;
- EvDocumentFind *find = EV_DOCUMENT_FIND (view->document);
- EvPageCache *page_cache;
-
- page_cache = ev_page_cache_get (view->document);
-
- n_results = ev_document_find_get_n_results (find, view->current_page);
-
- n_pages = ev_page_cache_get_n_pages (page_cache);
-
view->find_result--;
if (view->find_result < 0) {
-
jump_to_find_page (view, EV_VIEW_FIND_PREV, -1);
- view->find_result = ev_document_find_get_n_results (find, view->current_page) - 1;
+ view->find_result = ev_view_find_get_n_results (view, view->current_page) - 1;
jump_to_find_result (view);
} else {
jump_to_find_result (view);
}
void
-ev_view_search_changed (EvView *view)
+ev_view_find_search_changed (EvView *view)
{
/* search string has changed, focus on new search result */
view->jump_to_find_result = TRUE;
+ view->find_pages = NULL;
}
void
-ev_view_set_highlight_search (EvView *view, gboolean value)
+ev_view_find_set_highlight_search (EvView *view, gboolean value)
{
view->highlight_find_results = value;
gtk_widget_queue_draw (GTK_WIDGET (view));
void
ev_view_find_cancel (EvView *view)
{
- if (EV_IS_DOCUMENT_FIND (view->document)) {
- EvDocumentFind *find = EV_DOCUMENT_FIND (view->document);
-
- ev_document_find_cancel (find);
- }
+ view->find_pages = NULL;
}
/*** Selections ***/
/* 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);
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)
{