Merge branch 'develop' of pwmt.org:zathura into develop

This commit is contained in:
Moritz Lipp 2012-02-08 22:15:01 +01:00
commit 9243fc0511
4 changed files with 35 additions and 14 deletions

View file

@ -167,7 +167,6 @@ sc_goto(girara_session_t* session, girara_argument_t* argument, girara_event_t*
} else { } else {
if (t == 0) { if (t == 0) {
page_set(zathura, zathura->document->number_of_pages - 1); page_set(zathura, zathura->document->number_of_pages - 1);
return true;
} else { } else {
page_set(zathura, t - 1); page_set(zathura, t - 1);
} }
@ -359,24 +358,24 @@ sc_scroll(girara_session_t* session, girara_argument_t* argument,
switch(argument->n) { switch(argument->n) {
case FULL_UP: case FULL_UP:
new_value = (value - view_size) < 0 ? 0 : (value - view_size); new_value = value - view_size;
break; break;
case FULL_DOWN: case FULL_DOWN:
new_value = (value + view_size) > max ? max : (value + view_size); new_value = value + view_size;
break; break;
case HALF_UP: case HALF_UP:
new_value = (value - (view_size / 2)) < 0 ? 0 : (value - (view_size / 2)); new_value = value - (view_size / 2);
break; break;
case HALF_DOWN: case HALF_DOWN:
new_value = (value + (view_size / 2)) > max ? max : (value + (view_size / 2)); new_value = value + (view_size / 2);
break; break;
case LEFT: case LEFT:
case UP: case UP:
new_value = (value - scroll_step) < 0 ? 0 : (value - scroll_step); new_value = value - scroll_step;
break; break;
case RIGHT: case RIGHT:
case DOWN: case DOWN:
new_value = (value + scroll_step) > max ? max : (value + scroll_step); new_value = value + scroll_step;
break; break;
case TOP: case TOP:
new_value = 0; new_value = 0;
@ -388,7 +387,7 @@ sc_scroll(girara_session_t* session, girara_argument_t* argument,
new_value = value; new_value = value;
} }
gtk_adjustment_set_value(adjustment, new_value); set_adjustment(adjustment, new_value);
return false; return false;
} }
@ -466,8 +465,8 @@ sc_search(girara_session_t* session, girara_argument_t* argument,
int x = offset.x - gtk_adjustment_get_page_size(view_hadjustment) / 2 + rectangle.x1; int x = offset.x - gtk_adjustment_get_page_size(view_hadjustment) / 2 + rectangle.x1;
int y = offset.y - gtk_adjustment_get_page_size(view_vadjustment) / 2 + rectangle.y1; int y = offset.y - gtk_adjustment_get_page_size(view_vadjustment) / 2 + rectangle.y1;
gtk_adjustment_set_value(view_hadjustment, MAX(view_hadjustment->lower, MIN(view_hadjustment->upper - view_hadjustment->page_size, x))); set_adjustment(view_hadjustment, x);
gtk_adjustment_set_value(view_vadjustment, MAX(view_vadjustment->lower, MIN(view_vadjustment->upper - view_vadjustment->page_size, y))); set_adjustment(view_vadjustment, y);
} }
return false; return false;
@ -741,6 +740,7 @@ sc_zoom(girara_session_t* session, girara_argument_t* argument, girara_event_t*
girara_setting_get(zathura->ui.session, "zoom-step", &value); girara_setting_get(zathura->ui.session, "zoom-step", &value);
float zoom_step = value / 100.0f; float zoom_step = value / 100.0f;
float oldzoom = zathura->document->scale;
/* specify new zoom value */ /* specify new zoom value */
if (argument->n == ZOOM_IN) { if (argument->n == ZOOM_IN) {
@ -748,7 +748,6 @@ sc_zoom(girara_session_t* session, girara_argument_t* argument, girara_event_t*
} else if (argument->n == ZOOM_OUT) { } else if (argument->n == ZOOM_OUT) {
zathura->document->scale -= zoom_step; zathura->document->scale -= zoom_step;
} else if (argument->n == ZOOM_SPECIFIC) { } else if (argument->n == ZOOM_SPECIFIC) {
fprintf(stderr, "t: %d\n", t);
zathura->document->scale = t / 100.0f; zathura->document->scale = t / 100.0f;
} else { } else {
zathura->document->scale = 1.0; zathura->document->scale = 1.0;
@ -761,6 +760,14 @@ sc_zoom(girara_session_t* session, girara_argument_t* argument, girara_event_t*
zathura->document->scale = 10.0f; zathura->document->scale = 10.0f;
} }
/* keep position */
GtkAdjustment* view_vadjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(zathura->ui.session->gtk.view));
GtkAdjustment* view_hadjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(zathura->ui.session->gtk.view));
gdouble valx = gtk_adjustment_get_value(view_hadjustment) / oldzoom * zathura->document->scale;
gdouble valy = gtk_adjustment_get_value(view_vadjustment) / oldzoom * zathura->document->scale;
set_adjustment(view_hadjustment, valx);
set_adjustment(view_vadjustment, valy);
render_all(zathura); render_all(zathura);
return false; return false;

View file

@ -226,3 +226,9 @@ recalc_rectangle(zathura_page_t* page, zathura_rectangle_t rectangle)
return tmp; return tmp;
} }
void
set_adjustment(GtkAdjustment* adjustment, gdouble value)
{
gtk_adjustment_set_value(adjustment, MAX(adjustment->lower, MIN(adjustment->upper - adjustment->page_size, value)));
}

View file

@ -82,4 +82,11 @@ void page_calculate_offset(zathura_page_t* page, page_offset_t* offset);
*/ */
zathura_rectangle_t recalc_rectangle(zathura_page_t* page, zathura_rectangle_t rectangle); zathura_rectangle_t recalc_rectangle(zathura_page_t* page, zathura_rectangle_t rectangle);
/**
* Set adjustment of a GtkAdjustment respecting its limits.
* @param adjust the GtkAdkustment instance
* @param value the new adjustment
*/
void set_adjustment(GtkAdjustment* adjust, gdouble value);
#endif // UTILS_H #endif // UTILS_H

View file

@ -5,6 +5,7 @@
#include <stdlib.h> #include <stdlib.h>
#include <unistd.h> #include <unistd.h>
#include <math.h>
#include <girara/datastructures.h> #include <girara/datastructures.h>
#include <girara/utils.h> #include <girara/utils.h>
@ -576,8 +577,8 @@ page_set(zathura_t* zathura, unsigned int page_id)
GtkAdjustment* view_vadjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(zathura->ui.session->gtk.view)); GtkAdjustment* view_vadjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(zathura->ui.session->gtk.view));
GtkAdjustment* view_hadjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(zathura->ui.session->gtk.view)); GtkAdjustment* view_hadjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(zathura->ui.session->gtk.view));
gtk_adjustment_set_value(view_hadjustment, offset.x); set_adjustment(view_hadjustment, offset.x);
gtk_adjustment_set_value(view_vadjustment, offset.y); set_adjustment(view_vadjustment, offset.y);
return true; return true;
@ -616,7 +617,7 @@ page_widget_set_mode(zathura_t* zathura, unsigned int pages_per_row)
gtk_container_foreach(GTK_CONTAINER(zathura->ui.page_widget), remove_page_from_table, (gpointer)0); gtk_container_foreach(GTK_CONTAINER(zathura->ui.page_widget), remove_page_from_table, (gpointer)0);
gtk_table_resize(GTK_TABLE(zathura->ui.page_widget), zathura->document->number_of_pages / pages_per_row + 1, pages_per_row); gtk_table_resize(GTK_TABLE(zathura->ui.page_widget), ceil(zathura->document->number_of_pages / pages_per_row), pages_per_row);
for (unsigned int i = 0; i < zathura->document->number_of_pages; i++) for (unsigned int i = 0; i < zathura->document->number_of_pages; i++)
{ {
int x = i % pages_per_row; int x = i % pages_per_row;