[Xfce4-commits] <ristretto:master> Center while zooming
Stephan Arts
noreply at xfce.org
Mon Aug 8 15:04:10 CEST 2011
Updating branch refs/heads/master
to 13d34a35a289c85c57e0f6354d9812d954497ece (commit)
from 28e64d4b4847b4f1068e6eeb9f177282693b09f4 (commit)
commit 13d34a35a289c85c57e0f6354d9812d954497ece
Author: Stephan Arts <stephan at xfce.org>
Date: Tue Jul 26 23:23:28 2011 +0200
Center while zooming
src/image_viewer.c | 17 ++++++++++++++++-
1 files changed, 16 insertions(+), 1 deletions(-)
diff --git a/src/image_viewer.c b/src/image_viewer.c
index 155e886..fcb69c8 100644
--- a/src/image_viewer.c
+++ b/src/image_viewer.c
@@ -782,7 +782,8 @@ rstto_image_viewer_transaction_free (RsttoImageViewerTransaction *tr)
void
rstto_image_viewer_set_scale (RsttoImageViewer *viewer, gdouble scale)
{
- viewer->priv->scale = scale;
+ gdouble tmp_x, tmp_y;
+
if (scale == 0)
{
viewer->priv->auto_scale = TRUE;
@@ -790,8 +791,22 @@ rstto_image_viewer_set_scale (RsttoImageViewer *viewer, gdouble scale)
else
{
viewer->priv->auto_scale = FALSE;
+
+ /*
+ * When zooming in or out,
+ * try keeping the center of the viewport in the center.
+ */
+ tmp_y = (gtk_adjustment_get_value(viewer->vadjustment) + (gtk_adjustment_get_page_size (viewer->vadjustment) / 2)) / viewer->priv->scale;
+ gtk_adjustment_set_value (viewer->vadjustment, (tmp_y*scale - (gtk_adjustment_get_page_size(viewer->vadjustment)/2)));
+
+
+ tmp_x = (gtk_adjustment_get_value(viewer->hadjustment) + (gtk_adjustment_get_page_size (viewer->hadjustment) / 2)) / viewer->priv->scale;
+ gtk_adjustment_set_value (viewer->hadjustment, (tmp_x*scale - (gtk_adjustment_get_page_size(viewer->hadjustment)/2)));
+
}
+ viewer->priv->scale = scale;
+
rstto_image_viewer_queued_repaint (viewer, TRUE);
}
More information about the Xfce4-commits
mailing list