mirror of
https://git.pwmt.org/pwmt/zathura.git
synced 2025-01-30 17:14:56 +01:00
readjust view in sc_adjust_window (to keep position)
This commit is contained in:
parent
fbc5f1431f
commit
d4b92610de
1 changed files with 18 additions and 7 deletions
25
shortcuts.c
25
shortcuts.c
|
@ -17,6 +17,18 @@
|
||||||
#include "utils.h"
|
#include "utils.h"
|
||||||
#include "page-widget.h"
|
#include "page-widget.h"
|
||||||
|
|
||||||
|
static void
|
||||||
|
readjust_view_after_zooming(zathura_t *zathura, float old_zoom) {
|
||||||
|
GtkScrolledWindow *window = GTK_SCROLLED_WINDOW(zathura->ui.session->gtk.view);
|
||||||
|
GtkAdjustment* vadjustment = gtk_scrolled_window_get_vadjustment(window);
|
||||||
|
GtkAdjustment* hadjustment = gtk_scrolled_window_get_hadjustment(window);
|
||||||
|
|
||||||
|
gdouble valx = gtk_adjustment_get_value(hadjustment) / old_zoom * zathura->document->scale;
|
||||||
|
gdouble valy = gtk_adjustment_get_value(vadjustment) / old_zoom * zathura->document->scale;
|
||||||
|
set_adjustment(hadjustment, valx);
|
||||||
|
set_adjustment(vadjustment, valy);
|
||||||
|
}
|
||||||
|
|
||||||
bool
|
bool
|
||||||
sc_abort(girara_session_t* session, girara_argument_t* UNUSED(argument),
|
sc_abort(girara_session_t* session, girara_argument_t* UNUSED(argument),
|
||||||
girara_event_t* UNUSED(event), unsigned int UNUSED(t))
|
girara_event_t* UNUSED(event), unsigned int UNUSED(t))
|
||||||
|
@ -58,6 +70,7 @@ sc_adjust_window(girara_session_t* session, girara_argument_t* argument,
|
||||||
goto error_ret;
|
goto error_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
float old_zoom = zathura->document->scale;
|
||||||
zathura->document->adjust_mode = argument->n;
|
zathura->document->adjust_mode = argument->n;
|
||||||
if (argument->n == ADJUST_NONE) {
|
if (argument->n == ADJUST_NONE) {
|
||||||
/* there is nothing todo */
|
/* there is nothing todo */
|
||||||
|
@ -99,6 +112,9 @@ sc_adjust_window(girara_session_t* session, girara_argument_t* argument,
|
||||||
goto error_ret;
|
goto error_ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* keep position */
|
||||||
|
readjust_view_after_zooming(zathura, old_zoom);
|
||||||
|
|
||||||
/* re-render all pages */
|
/* re-render all pages */
|
||||||
render_all(zathura);
|
render_all(zathura);
|
||||||
|
|
||||||
|
@ -865,7 +881,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;
|
float old_zoom = zathura->document->scale;
|
||||||
|
|
||||||
/* specify new zoom value */
|
/* specify new zoom value */
|
||||||
if (argument->n == ZOOM_IN) {
|
if (argument->n == ZOOM_IN) {
|
||||||
|
@ -894,12 +910,7 @@ sc_zoom(girara_session_t* session, girara_argument_t* argument, girara_event_t*
|
||||||
}
|
}
|
||||||
|
|
||||||
/* keep position */
|
/* keep position */
|
||||||
GtkAdjustment* view_vadjustment = gtk_scrolled_window_get_vadjustment(GTK_SCROLLED_WINDOW(zathura->ui.session->gtk.view));
|
readjust_view_after_zooming(zathura, old_zoom);
|
||||||
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);
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue