Web   ·   Wiki   ·   Activities   ·   Blog   ·   Lists   ·   Chat   ·   Meeting   ·   Bugs   ·   Git   ·   Translate   ·   Archive   ·   People   ·   Donate
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--shell/ev-view.c29
-rw-r--r--shell/ev-view.h2
-rw-r--r--shell/ev-window.c4
4 files changed, 41 insertions, 4 deletions
diff --git a/ChangeLog b/ChangeLog
index d3bd743..d72ffc7 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2006-01-06 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
+
+ * shell/ev-view.c: (ev_view_scroll), (ev_view_previous_page),
+ (ev_view_can_previous_page), (ev_view_can_next_page):
+ * shell/ev-view.h:
+ * shell/ev-window.c: (update_action_sensitivity):
+
+ Two page scrolling with Space and PageUp in dual mode. Second fix
+ for the bug #316608.
+
2006-01-05 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
* shell/ev-view.c: (scroll_to_current_page):
diff --git a/shell/ev-view.c b/shell/ev-view.c
index ebbd784..d35d4fc 100644
--- a/shell/ev-view.c
+++ b/shell/ev-view.c
@@ -578,7 +578,7 @@ ev_view_scroll (EvView *view,
/* At the top of a page, assign the upper bound limit of previous page */
} else if (value == (adjustment->lower)) {
value = adjustment->upper - adjustment->page_size;
- ev_page_cache_set_current_page (view->page_cache, view->current_page - 1);
+ ev_view_previous_page (view);
/* Jump to the top */
} else {
value = MAX (value - increment, adjustment->lower);
@@ -591,7 +591,7 @@ ev_view_scroll (EvView *view,
/* At the bottom of a page, assign the lower bound limit of next page */
} else if (value == (adjustment->upper - adjustment->page_size)) {
value = 0;
- ev_page_cache_set_current_page (view->page_cache, view->current_page + 1);
+ ev_view_next_page (view);
/* Jump to the bottom */
} else {
value = MIN (value + increment, adjustment->upper - adjustment->page_size);
@@ -3961,6 +3961,31 @@ ev_view_previous_page (EvView *view)
}
}
+gboolean
+ev_view_can_previous_page (EvView *view)
+{
+ int page;
+
+ g_return_val_if_fail (EV_IS_VIEW (view), FALSE);
+
+ page = ev_page_cache_get_current_page (view->page_cache);
+ page = ev_view_get_dual_page (view) ? page - 2 : page - 1;
+
+ return (page >=0);
+}
+
+gboolean ev_view_can_next_page (EvView *view)
+{
+ int page;
+
+ g_return_val_if_fail (EV_IS_VIEW (view), FALSE);
+
+ page = ev_page_cache_get_current_page (view->page_cache);
+ page = ev_view_get_dual_page (view) ? page + 2 : page + 1;
+
+ return (page < ev_page_cache_get_n_pages (view->page_cache));
+}
+
/*** Enum description for usage in signal ***/
GType
diff --git a/shell/ev-view.h b/shell/ev-view.h
index 0378f28..85692e8 100644
--- a/shell/ev-view.h
+++ b/shell/ev-view.h
@@ -127,6 +127,8 @@ void ev_view_goto_link (EvView *view,
EvLink *link);
gboolean ev_view_next_page (EvView *view);
gboolean ev_view_previous_page (EvView *view);
+gboolean ev_view_can_next_page (EvView *view);
+gboolean ev_view_can_previous_page (EvView *view);
G_END_DECLS
diff --git a/shell/ev-window.c b/shell/ev-window.c
index 25b8a20..1d6d4ef 100644
--- a/shell/ev-window.c
+++ b/shell/ev-window.c
@@ -311,8 +311,8 @@ update_action_sensitivity (EvWindow *ev_window)
/* Go menu */
if (document) {
- set_action_sensitive (ev_window, "GoPreviousPage", page > 0);
- set_action_sensitive (ev_window, "GoNextPage", page < n_pages - 1);
+ set_action_sensitive (ev_window, "GoPreviousPage", ev_view_can_previous_page (view));
+ set_action_sensitive (ev_window, "GoNextPage", ev_view_can_next_page (view));
set_action_sensitive (ev_window, "GoFirstPage", page > 0);
set_action_sensitive (ev_window, "GoLastPage", page < n_pages - 1);
} else {