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

Stephan Arts stephan at xfce.org
Sat Oct 20 12:07:06 CEST 2007


Author: stephan
Date: 2007-10-20 10:07:06 +0000 (Sat, 20 Oct 2007)
New Revision: 3411

Modified:
   ristretto/trunk/src/picture_viewer.c
Log:
Improved zooming a little


Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c	2007-10-20 09:51:46 UTC (rev 3410)
+++ ristretto/trunk/src/picture_viewer.c	2007-10-20 10:07:06 UTC (rev 3411)
@@ -407,6 +407,10 @@
         width = (gdouble)gdk_pixbuf_get_width(viewer->priv->src_pixbuf);
         height = (gdouble)gdk_pixbuf_get_height(viewer->priv->src_pixbuf);
     }
+    if (viewer->priv->src_pixbuf == NULL)
+    {
+        return;
+    }
     GdkPixbuf *tmp_pixbuf = NULL;
     if (viewer->vadjustment && viewer->hadjustment)
     {
@@ -817,18 +821,40 @@
         case GDK_SCROLL_LEFT:
             if (scale <= 0.05)
                 return;
-            rstto_navigator_entry_set_scale(entry, scale / 1.2);
+            rstto_navigator_entry_set_scale(entry, scale / 1.05);
             rstto_navigator_entry_set_fit_to_screen (entry, FALSE);
+
+            viewer->hadjustment->value = ((viewer->hadjustment->value + event->x) / 1.05) - event->x;
+            viewer->vadjustment->value = ((viewer->vadjustment->value + event->y) / 1.05) - event->y;
             break;
         case GDK_SCROLL_DOWN:
         case GDK_SCROLL_RIGHT:
             if (scale >= 16)
                 return;
-            viewer->vadjustment->value = ((viewer->vadjustment->value + event->y) - viewer->vadjustment->page_size/2) * 1.2;
-            viewer->hadjustment->value = ((viewer->hadjustment->value + event->x) - viewer->hadjustment->page_size/2) * 1.2;
+            rstto_navigator_entry_set_scale(entry, scale * 1.05);
+            rstto_navigator_entry_set_fit_to_screen (entry, FALSE);
 
-            rstto_navigator_entry_set_scale(entry, scale * 1.2);
-            rstto_navigator_entry_set_fit_to_screen (entry, FALSE);
+            viewer->hadjustment->value = ((viewer->hadjustment->value + event->x) * 1.05) - event->x;
+
+            if((viewer->hadjustment->value + viewer->hadjustment->page_size) > viewer->hadjustment->upper)
+            {
+                viewer->hadjustment->value = viewer->hadjustment->upper - viewer->hadjustment->page_size;
+            }
+            if((viewer->hadjustment->value) < viewer->hadjustment->lower)
+            {
+                viewer->hadjustment->value = viewer->hadjustment->lower;
+            }
+
+            viewer->vadjustment->value = ((viewer->vadjustment->value + event->y) * 1.05) - event->y;
+
+            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;
+            }
             break;
     }
 




More information about the Goodies-commits mailing list