+2006-10-08 Nickolay V. Shmyrev <nshmyrev@yandex.ru>
+
+ * shell/ev-view-private.h:
+ * shell/ev-view.c: (view_set_adjustment_values),
+ (view_update_range_and_current_page),
+ (ensure_rectangle_is_visible), (ev_view_size_allocate):
+
+ Fixes bug #343199, current page now follows find page.
+
2006-10-08 Wouter Bolsterlee <wbolster@gnome.org>
* backend/ev-document-factory.c:
factor = 1.0;
switch (view->pending_scroll) {
case SCROLL_TO_KEEP_POSITION:
+ case SCROLL_TO_FIND_LOCATION:
factor = (adjustment->value) / adjustment->upper;
break;
case SCROLL_TO_PAGE_POSITION:
*/
switch (view->pending_scroll) {
case SCROLL_TO_KEEP_POSITION:
+ case SCROLL_TO_FIND_LOCATION:
new_value = CLAMP (adjustment->upper * factor + 0.5, 0, adjustment->upper - adjustment->page_size);
gtk_adjustment_set_value (adjustment, (int)new_value);
break;
gint current_page;
gint best_current_page = -1;
- if (view->pending_scroll != SCROLL_TO_KEEP_POSITION)
- return;
-
/* Presentation trumps all other modes */
if (view->presentation) {
view->start_page = view->current_page;
best_current_page = MAX (best_current_page, view->start_page);
current_page = ev_page_cache_get_current_page (view->page_cache);
- if (current_page != best_current_page) {
+ if ((current_page != best_current_page) && (view->pending_scroll == SCROLL_TO_KEEP_POSITION)) {
view->current_page = best_current_page;
ev_page_cache_set_current_page (view->page_cache, best_current_page);
}
GtkAdjustment *adjustment;
int value;
- view->pending_scroll = SCROLL_TO_KEEP_POSITION;
+ view->pending_scroll = SCROLL_TO_FIND_LOCATION;
adjustment = view->vadjustment;
widget->allocation.width + MARGIN);
gtk_adjustment_set_value (view->hadjustment, value);
}
+
+ gtk_widget_queue_resize (GTK_WIDGET (view));
}
/*** Geometry computations ***/
view_set_adjustment_values (view, GTK_ORIENTATION_HORIZONTAL);
view_set_adjustment_values (view, GTK_ORIENTATION_VERTICAL);
- view->pending_scroll = SCROLL_TO_KEEP_POSITION;
- view->pending_resize = FALSE;
-
if (view->document)
view_update_range_and_current_page (view);
+ view->pending_scroll = SCROLL_TO_KEEP_POSITION;
+ view->pending_resize = FALSE;
+
GTK_WIDGET_CLASS (ev_view_parent_class)->size_allocate (widget, allocation);
}