[Goodies-commits] r3632 - ristretto/trunk/src

Stephan Arts stephan at xfce.org
Sun Nov 25 11:27:05 CET 2007


Author: stephan
Date: 2007-11-25 10:27:05 +0000 (Sun, 25 Nov 2007)
New Revision: 3632

Modified:
   ristretto/trunk/src/picture_viewer.c
Log:
Box-zoom *almost* works


Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c	2007-11-25 09:02:35 UTC (rev 3631)
+++ ristretto/trunk/src/picture_viewer.c	2007-11-25 10:27:05 UTC (rev 3632)
@@ -921,27 +921,27 @@
                     gdouble top_left_x, top_left_y;
                     if (viewer->priv->motion.x < viewer->priv->motion.current_x)
                     {
-                        top_left_x = viewer->priv->motion.x;
+                        top_left_x = viewer->priv->motion.x + viewer->hadjustment->value;
                         box_width = viewer->priv->motion.current_x - viewer->priv->motion.x;
                     }
                     else
                     {
-                        top_left_x = viewer->priv->motion.current_x;
+                        top_left_x = viewer->priv->motion.current_x + viewer->hadjustment->value;
                         box_width = viewer->priv->motion.x - viewer->priv->motion.current_x;
                     }
                     if (viewer->priv->motion.y < viewer->priv->motion.current_y)
                     {
-                        top_left_y = viewer->priv->motion.y;
+                        top_left_y = viewer->priv->motion.y + viewer->vadjustment->value;
                         box_height = viewer->priv->motion.current_y - viewer->priv->motion.y;
                     }
                     else
                     {
-                        top_left_y = viewer->priv->motion.current_y;
+                        top_left_y = viewer->priv->motion.current_y + viewer->vadjustment->value;
                         box_height = viewer->priv->motion.y - viewer->priv->motion.current_y;
                     }
 
-                    gdouble h_scale = width / box_width * scale;
-                    gdouble v_scale = width / box_width * scale;
+                    gdouble h_scale = widget->allocation.width / box_width * scale;
+                    gdouble v_scale = widget->allocation.height / box_height * scale;
 
                     if (h_scale < v_scale)
                     {
@@ -951,6 +951,7 @@
                     {
                         rstto_navigator_entry_set_scale(entry, v_scale);
                     }
+
                     rstto_navigator_entry_set_fit_to_screen(entry, FALSE);
                     scale = rstto_navigator_entry_get_scale(entry);
 
@@ -963,7 +964,7 @@
                         viewer->hadjustment->lower = 0;
                         viewer->hadjustment->step_increment = 1;
                         viewer->hadjustment->page_increment = 100;
-                        viewer->hadjustment->value = (viewer->hadjustment->value + top_left_x) / old_scale * scale;
+                        viewer->hadjustment->value = top_left_x;
                         if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
                         {
                             viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
@@ -982,7 +983,7 @@
                         viewer->vadjustment->lower = 0;
                         viewer->vadjustment->step_increment = 1;
                         viewer->vadjustment->page_increment = 100;
-                        viewer->vadjustment->value = (viewer->vadjustment->value + top_left_x) / old_scale * scale;
+                        viewer->vadjustment->value = top_left_y;
                         if((viewer->vadjustment->value + viewer->vadjustment->page_size) > viewer->vadjustment->upper)
                         {
                             viewer->vadjustment->value = viewer->vadjustment->upper - viewer->vadjustment->page_size;




More information about the Goodies-commits mailing list