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 {
if (t == 0) {
page_set(zathura, zathura->document->number_of_pages - 1);
return true;
} else {
page_set(zathura, t - 1);
}
@ -359,24 +358,24 @@ sc_scroll(girara_session_t* session, girara_argument_t* argument,
switch(argument->n) {
case FULL_UP:
new_value = (value - view_size) < 0 ? 0 : (value - view_size);
new_value = value - view_size;
break;
case FULL_DOWN:
new_value = (value + view_size) > max ? max : (value + view_size);
new_value = value + view_size;
break;
case HALF_UP:
new_value = (value - (view_size / 2)) < 0 ? 0 : (value - (view_size / 2));
new_value = value - (view_size / 2);
break;
case HALF_DOWN:
new_value = (value + (view_size / 2)) > max ? max : (value + (view_size / 2));
new_value = value + (view_size / 2);
break;
case LEFT:
case UP:
new_value = (value - scroll_step) < 0 ? 0 : (value - scroll_step);
new_value = value - scroll_step;
break;
case RIGHT:
case DOWN:
new_value = (value + scroll_step) > max ? max : (value + scroll_step);
new_value = value + scroll_step;
break;
case TOP:
new_value = 0;
@ -388,7 +387,7 @@ sc_scroll(girara_session_t* session, girara_argument_t* argument,
new_value = value;
}
gtk_adjustment_set_value(adjustment, new_value);
set_adjustment(adjustment, new_value);
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 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)));
gtk_adjustment_set_value(view_vadjustment, MAX(view_vadjustment->lower, MIN(view_vadjustment->upper - view_vadjustment->page_size, y)));
set_adjustment(view_hadjustment, x);
set_adjustment(view_vadjustment, y);
}
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);
float zoom_step = value / 100.0f;
float oldzoom = zathura->document->scale;
/* specify new zoom value */
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) {
zathura->document->scale -= zoom_step;
} else if (argument->n == ZOOM_SPECIFIC) {
fprintf(stderr, "t: %d\n", t);
zathura->document->scale = t / 100.0f;
} else {
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;
}
/* 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);
return false;

View file

@ -226,3 +226,9 @@ recalc_rectangle(zathura_page_t* page, zathura_rectangle_t rectangle)
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);
/**
* 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

View file

@ -5,6 +5,7 @@
#include <stdlib.h>
#include <unistd.h>
#include <math.h>
#include <girara/datastructures.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_hadjustment = gtk_scrolled_window_get_hadjustment(GTK_SCROLLED_WINDOW(zathura->ui.session->gtk.view));
gtk_adjustment_set_value(view_hadjustment, offset.x);
gtk_adjustment_set_value(view_vadjustment, offset.y);
set_adjustment(view_hadjustment, offset.x);
set_adjustment(view_vadjustment, offset.y);
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_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++)
{
int x = i % pages_per_row;