[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