[Xfce4-commits] <ristretto:ristretto-0.0> Fix 'zoom-fit' when resizing
Stephan Arts
noreply at xfce.org
Sun Oct 23 19:14:08 CEST 2011
Updating branch refs/heads/ristretto-0.0
to 3c9fbba878bb2518b4e9915f43be88dcb0b501a8 (commit)
from 656f9b4bb9f4b7d51cc012a384e08fa4f0175879 (commit)
commit 3c9fbba878bb2518b4e9915f43be88dcb0b501a8
Author: Stephan Arts <stephan at xfce.org>
Date: Tue Mar 10 13:02:15 2009 +0100
Fix 'zoom-fit' when resizing
src/picture_viewer.c | 28 ++++++++++++++++++++++++++--
1 files changed, 26 insertions(+), 2 deletions(-)
diff --git a/src/picture_viewer.c b/src/picture_viewer.c
index e3230d3..427274a 100644
--- a/src/picture_viewer.c
+++ b/src/picture_viewer.c
@@ -932,7 +932,9 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer)
GdkPixbuf *p_src_pixbuf = NULL;
GdkPixbuf *p_tmp_pixbuf = NULL;
gdouble *p_scale = NULL;
+ gboolean *p_fit_to_screen= NULL;
gdouble scale;
+ gboolean fit_to_screen = FALSE;
gdouble width, height;
GtkWidget *widget = GTK_WIDGET (viewer);
@@ -946,12 +948,15 @@ cb_rstto_picture_viewer_queued_repaint (RsttoPictureViewer *viewer)
}
p_scale = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-scale");
+ p_fit_to_screen = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-fit-to-screen");
scale = *p_scale;
+ fit_to_screen = *p_fit_to_screen;
}
- if (scale <= 0)
+ if ((scale <= 0) || (fit_to_screen == TRUE))
{
scale = rstto_picture_viewer_calculate_scale (viewer);
+ *p_fit_to_screen = TRUE;
*p_scale = scale;
}
@@ -1157,18 +1162,37 @@ static void
rstto_picture_viewer_set_zoom_mode(RsttoPictureViewer *viewer, RsttoZoomMode mode)
{
gdouble scale;
+ gboolean *p_fit_to_screen;
viewer->priv->zoom_mode = mode;
switch (viewer->priv->zoom_mode)
{
case RSTTO_ZOOM_MODE_CUSTOM:
+ if (viewer->priv->image)
+ {
+ p_fit_to_screen = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-fit-to-screen");
+ *p_fit_to_screen = FALSE;
+ g_object_set_data (G_OBJECT (viewer->priv->image), "viewer-fit-to-screen", p_fit_to_screen);
+ }
break;
case RSTTO_ZOOM_MODE_FIT:
+ if (viewer->priv->image)
+ {
+ p_fit_to_screen = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-fit-to-screen");
+ *p_fit_to_screen = TRUE;
+ g_object_set_data (G_OBJECT (viewer->priv->image), "viewer-fit-to-screen", p_fit_to_screen);
+ }
scale = rstto_picture_viewer_calculate_scale (viewer);
if (scale != -1.0)
rstto_picture_viewer_set_scale (viewer, scale);
break;
case RSTTO_ZOOM_MODE_100:
+ if (viewer->priv->image)
+ {
+ p_fit_to_screen = g_object_get_data (G_OBJECT (viewer->priv->image), "viewer-fit-to-screen");
+ *p_fit_to_screen = FALSE;
+ g_object_set_data (G_OBJECT (viewer->priv->image), "viewer-fit-to-screen", p_fit_to_screen);
+ }
rstto_picture_viewer_set_scale (viewer, 1);
break;
}
@@ -1208,7 +1232,7 @@ rstto_picture_viewer_set_image (RsttoPictureViewer *viewer, RsttoImage *image)
if (scale == NULL)
{
scale = g_new0 (gdouble, 1);
- *scale = 0.0;
+ *scale = -1.0;
g_object_set_data (G_OBJECT (viewer->priv->image), "viewer-scale", scale);
}
if (fit_to_screen == NULL)
More information about the Xfce4-commits
mailing list