[Xfce4-commits] <ristretto:master> Also update the recently-used images list when only a single image is opened

Stephan Arts noreply at xfce.org
Sun Aug 14 14:12:01 CEST 2011


Updating branch refs/heads/master
         to 9ea5d3f3b37c107e25d0957d3416ee395ef97038 (commit)
       from cda920d515e925ecd15e426f031ba650f0e9af4a (commit)

commit 9ea5d3f3b37c107e25d0957d3416ee395ef97038
Author: Stephan Arts <stephan at xfce.org>
Date:   Sun Aug 14 14:12:07 2011 +0200

    Also update the recently-used images list when only a single image is opened

 src/image_viewer.c |   34 ++++++++++++++++++++++++++++++++--
 src/main_window.c  |    4 ++++
 2 files changed, 36 insertions(+), 2 deletions(-)

diff --git a/src/image_viewer.c b/src/image_viewer.c
index 1d22586..ee0318b 100644
--- a/src/image_viewer.c
+++ b/src/image_viewer.c
@@ -1682,13 +1682,28 @@ cb_rstto_image_viewer_scroll_event (RsttoImageViewer *viewer, GdkEventScroll *ev
 {
     gdouble tmp_x, tmp_y;
     gdouble scale;
+    gint width, height;
+    gint pixbuf_width = 0;
+    gint pixbuf_height = 0;
+    gint pixbuf_x_offset = 0;
+    gint pixbuf_y_offset = 0;
+
+
     GtkWidget *widget = GTK_WIDGET(viewer);
 
+    if (viewer->priv->dst_pixbuf)
+    {
+        pixbuf_width = gdk_pixbuf_get_width(viewer->priv->dst_pixbuf);
+        pixbuf_height = gdk_pixbuf_get_height(viewer->priv->dst_pixbuf);
+        pixbuf_x_offset = ((GTK_WIDGET(viewer)->allocation.width - pixbuf_width)/2);
+        pixbuf_y_offset = ((GTK_WIDGET(viewer)->allocation.height - pixbuf_height)/2);
+    }
+
     if (event->state & (GDK_CONTROL_MASK))
     {
             viewer->priv->auto_scale = FALSE;
-            tmp_x = (gdouble)(gtk_adjustment_get_value(viewer->hadjustment) + (gdouble)event->x) / viewer->priv->scale;
-            tmp_y = (gdouble)(gtk_adjustment_get_value(viewer->vadjustment) + (gdouble)event->y) / viewer->priv->scale;
+            tmp_x = (gdouble)(gtk_adjustment_get_value(viewer->hadjustment) + (gdouble)event->x - pixbuf_x_offset) / viewer->priv->scale;
+            tmp_y = (gdouble)(gtk_adjustment_get_value(viewer->vadjustment) + (gdouble)event->y - pixbuf_y_offset) / viewer->priv->scale;
 
             switch(event->direction)
             {
@@ -1781,10 +1796,25 @@ cb_rstto_image_viewer_scroll_event (RsttoImageViewer *viewer, GdkEventScroll *ev
             }
 
             viewer->priv->scale = scale;
+            g_object_freeze_notify(G_OBJECT(viewer->hadjustment));
+            g_object_freeze_notify(G_OBJECT(viewer->vadjustment));
+
+            width = gdk_pixbuf_get_width (viewer->priv->pixbuf);
+            height = gdk_pixbuf_get_height (viewer->priv->pixbuf);
+
+            gtk_adjustment_set_upper (viewer->hadjustment, (gdouble)width*(viewer->priv->scale/viewer->priv->image_scale));
+            gtk_adjustment_set_upper (viewer->vadjustment, (gdouble)height*(viewer->priv->scale/viewer->priv->image_scale));
+
 
             gtk_adjustment_set_value (viewer->hadjustment, (tmp_x * scale - event->x));
             gtk_adjustment_set_value (viewer->vadjustment, (tmp_y * scale - event->y));
 
+            g_object_thaw_notify(G_OBJECT(viewer->vadjustment));
+            g_object_thaw_notify(G_OBJECT(viewer->hadjustment));
+
+            gtk_adjustment_changed(viewer->hadjustment);
+            gtk_adjustment_changed(viewer->vadjustment);
+
             rstto_image_viewer_queued_repaint (viewer, TRUE);
     }
     return FALSE;
diff --git a/src/main_window.c b/src/main_window.c
index 8846a10..5076a06 100644
--- a/src/main_window.c
+++ b/src/main_window.c
@@ -2081,6 +2081,10 @@ cb_rstto_main_window_open_image (GtkWidget *widget, RsttoMainWindow *window)
                 gtk_dialog_run(GTK_DIALOG(dialog));
                 gtk_widget_destroy(dialog);
             }
+            else
+            {
+                g_idle_add_full(G_PRIORITY_LOW, (GSourceFunc) rstto_main_window_add_file_to_recent_files, file, NULL);
+            }
         }
 
         if (pos == -1)


More information about the Xfce4-commits mailing list