diff --git a/callbacks.c b/callbacks.c index 5677e54..cc5464a 100644 --- a/callbacks.c +++ b/callbacks.c @@ -8,6 +8,7 @@ #include "zathura.h" #include "render.h" #include "document.h" +#include "utils.h" gboolean cb_destroy(GtkWidget* widget, gpointer data) @@ -53,6 +54,12 @@ cb_view_vadjustment_value_changed(GtkAdjustment *adjustment, gpointer data) { zathura_page_t* page = zathura->document->pages[page_id]; + page_offset_t* offset = page_calculate_offset(page); + if (offset) { + fprintf(stderr, "offset: %d %d\n", offset->x, offset->y); + free(offset); + } + /* check for rendered attribute */ if (page->surface != NULL) { continue; @@ -65,7 +72,7 @@ cb_view_vadjustment_value_changed(GtkAdjustment *adjustment, gpointer data) /*|| ( (begin <= lower) && (end >= lower) && (end <= upper) ) [> end of the page is in viewport <]*/ /*|| ( (begin >= lower) && (end >= upper) && (begin <= upper) ) [> begin of the page is in viewport <]*/ /*) {*/ - if (page_id < 1) { + if (page_id < 10) { page->visible = true; render_page(zathura->sync.render_thread, page); } diff --git a/utils.c b/utils.c index 42aad30..68d6d50 100644 --- a/utils.c +++ b/utils.c @@ -238,7 +238,7 @@ string_concat(const char* string1, ...) page_offset_t* -page_offset_top(zathura_page_t* page) +page_calculate_offset(zathura_page_t* page) { if (page == NULL || page->document == NULL || page->document->zathura == NULL) { return NULL; @@ -253,46 +253,9 @@ page_offset_top(zathura_page_t* page) zathura_document_t* document = page->document; zathura_t* zathura = document->zathura; - int* tmp = girara_setting_get(zathura->ui.session, "pages-per-row"); - - unsigned int page_padding = zathura->global.page_padding; - unsigned int pages_per_row = (tmp && *tmp != 0) ? *tmp : 1; - unsigned int number_of_rows = (document->number_of_pages / pages_per_row) + 1; - - free(tmp); - - for (unsigned int row = 0; row < number_of_rows; row++) { - unsigned int tmp = -1; - for (unsigned int column = 0; column < pages_per_row; column++) - { - unsigned int page_id = row * pages_per_row + column; - double page_height = document->pages[page_id]->height * document->scale; - - if (tmp == -1) { - tmp = page_height; - } else if (page_height > tmp) { - tmp = page_height; - } - } - - offset->y += tmp + (row == (number_of_rows - 1)) ? 0 : page_padding; - } - - for (unsigned int column = 0; column < pages_per_row; column++) { - unsigned int tmp = -1; - for (unsigned int row = 0; row < number_of_rows; row++) - { - unsigned int page_id = row * pages_per_row + column; - double page_width = document->pages[page_id]->width * document->scale; - - if (tmp == -1) { - tmp = page_width; - } else if (page_width > tmp) { - tmp = page_width; - } - } - - offset->x += tmp + (column == (pages_per_row - 1)) ? 0 : page_padding; + if (gtk_widget_translate_coordinates(page->event_box, zathura->ui.page_view, 0, 0, &(offset->x), &(offset->y)) == false) { + free(offset); + return NULL; } return offset;