[Goodies-commits] r3421 - ristretto/trunk/src
Stephan Arts
stephan at xfce.org
Sun Oct 21 01:14:26 CEST 2007
Author: stephan
Date: 2007-10-20 23:14:26 +0000 (Sat, 20 Oct 2007)
New Revision: 3421
Modified:
ristretto/trunk/src/picture_viewer.c
Log:
Improve zooming through toolbar zoom buttons
Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c 2007-10-20 22:42:40 UTC (rev 3420)
+++ ristretto/trunk/src/picture_viewer.c 2007-10-20 23:14:26 UTC (rev 3421)
@@ -491,13 +491,47 @@
RsttoNavigatorEntry *entry = rstto_navigator_get_file(viewer->priv->navigator);
if (entry)
{
+ gdouble old_scale = rstto_navigator_entry_get_scale(entry);
+
+ gdouble width = (gdouble)gdk_pixbuf_get_width(viewer->priv->src_pixbuf);
+ gdouble height = (gdouble)gdk_pixbuf_get_height(viewer->priv->src_pixbuf);
+
rstto_navigator_entry_set_fit_to_screen (entry, FALSE);
rstto_navigator_entry_set_scale(entry, scale);
- if(rstto_picture_viewer_refresh(viewer))
+ viewer->hadjustment->upper = width * scale;
+ gtk_adjustment_changed(viewer->hadjustment);
+
+ viewer->vadjustment->upper = height * scale;
+ gtk_adjustment_changed(viewer->vadjustment);
+
+ viewer->hadjustment->value = (((viewer->hadjustment->value +
+ (viewer->hadjustment->page_size / 2)) /
+ old_scale) * scale) - (viewer->hadjustment->page_size / 2);
+ viewer->vadjustment->value = (((viewer->vadjustment->value +
+ (viewer->vadjustment->page_size / 2)) /
+ old_scale) * scale) - (viewer->vadjustment->page_size / 2);
+
+ if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
{
- rstto_picture_viewer_paint(GTK_WIDGET(viewer));
+ viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
}
+ if(viewer->hadjustment->value < viewer->hadjustment->lower)
+ {
+ viewer->hadjustment->value = viewer->hadjustment->lower;
+ }
+ if((viewer->vadjustment->value + viewer->vadjustment->page_size) > viewer->vadjustment->upper)
+ {
+ viewer->vadjustment->value = viewer->vadjustment->upper - viewer->vadjustment->page_size;
+ }
+ if(viewer->vadjustment->value < viewer->vadjustment->lower)
+ {
+ viewer->vadjustment->value = viewer->vadjustment->lower;
+ }
+
+ gtk_adjustment_value_changed(viewer->hadjustment);
+ gtk_adjustment_value_changed(viewer->vadjustment);
+
}
}
More information about the Goodies-commits
mailing list