[Goodies-commits] r3381 - ristretto/trunk/src
Stephan Arts
stephan at xfce.org
Mon Oct 15 20:30:15 CEST 2007
Author: stephan
Date: 2007-10-15 18:30:15 +0000 (Mon, 15 Oct 2007)
New Revision: 3381
Modified:
ristretto/trunk/src/picture_viewer.c
Log:
Fix EXIF rotation again...
Modified: ristretto/trunk/src/picture_viewer.c
===================================================================
--- ristretto/trunk/src/picture_viewer.c 2007-10-14 23:18:38 UTC (rev 3380)
+++ ristretto/trunk/src/picture_viewer.c 2007-10-15 18:30:15 UTC (rev 3381)
@@ -83,8 +83,6 @@
cb_rstto_picture_viewer_button_press_event (RsttoPictureViewer *viewer, GdkEventButton *event);
static void
cb_rstto_picture_viewer_button_release_event (RsttoPictureViewer *viewer, GdkEventButton *event);
-static void
-cb_rstto_picture_viewer_close(GtkWidget *widget, RsttoPictureViewer*);
static gboolean
cb_rstto_picture_viewer_update_image(RsttoPictureViewer *viewer);
@@ -184,7 +182,6 @@
G_TYPE_NONE, 2,
GTK_TYPE_ADJUSTMENT,
GTK_TYPE_ADJUSTMENT);
-
}
static void
@@ -936,26 +933,49 @@
{
GtkWidget *widget = GTK_WIDGET(viewer);
+ RsttoNavigatorEntry *entry = rstto_navigator_get_file(viewer->priv->navigator);
+
if (viewer->priv->src_pixbuf)
{
gdk_pixbuf_unref(viewer->priv->src_pixbuf);
viewer->priv->src_pixbuf = NULL;
}
- if (viewer->priv->iter)
+
+ if (entry)
{
- viewer->priv->src_pixbuf = gdk_pixbuf_animation_iter_get_pixbuf(viewer->priv->iter);
- viewer->priv->src_pixbuf = gdk_pixbuf_copy(viewer->priv->src_pixbuf);
- }
- else
- {
- if (viewer->priv->loader)
+ GdkPixbuf *pixbuf = NULL;
+
+ if (viewer->priv->iter)
{
- viewer->priv->src_pixbuf = gdk_pixbuf_loader_get_pixbuf(viewer->priv->loader);
- if (viewer->priv->src_pixbuf)
+ pixbuf = gdk_pixbuf_animation_iter_get_pixbuf(viewer->priv->iter);
+ }
+ else
+ {
+ if (viewer->priv->loader)
{
- gdk_pixbuf_ref(viewer->priv->src_pixbuf);
+ pixbuf = gdk_pixbuf_loader_get_pixbuf(viewer->priv->loader);
}
}
+
+
+ if (pixbuf != NULL)
+ {
+ viewer->priv->src_pixbuf = gdk_pixbuf_rotate_simple(pixbuf, rstto_navigator_entry_get_rotation(entry));
+ if (rstto_navigator_entry_get_flip(entry, FALSE))
+ {
+ pixbuf = viewer->priv->src_pixbuf;
+ viewer->priv->src_pixbuf = gdk_pixbuf_flip(pixbuf, FALSE);
+ gdk_pixbuf_unref(pixbuf);
+ }
+
+ if (rstto_navigator_entry_get_flip(entry, TRUE))
+ {
+ pixbuf = viewer->priv->src_pixbuf;
+ viewer->priv->src_pixbuf = gdk_pixbuf_flip(pixbuf, TRUE);
+ gdk_pixbuf_unref(pixbuf);
+ }
+ }
+
}
rstto_picture_viewer_refresh(viewer);
@@ -992,19 +1012,7 @@
}
if(event->button == 3)
{
- GtkWidget *menu = gtk_menu_new();
- GtkWidget *menu_item_close = gtk_image_menu_item_new_from_stock(GTK_STOCK_CLOSE, NULL);
- gtk_menu_shell_append(GTK_MENU_SHELL(menu), menu_item_close);
- gtk_widget_show(menu_item_close);
- g_signal_connect(menu_item_close,
- "activate",
- G_CALLBACK(cb_rstto_picture_viewer_close), viewer);
-
-
- gtk_menu_attach_to_widget(GTK_MENU(menu), GTK_WIDGET(viewer), NULL);
- gtk_menu_popup (GTK_MENU (menu), NULL, NULL, NULL, NULL,
- event->button, event->time);
}
}
@@ -1045,17 +1053,3 @@
}
}
-
-
-static void
-cb_rstto_picture_viewer_close(GtkWidget *widget, RsttoPictureViewer *viewer)
-{
- RsttoNavigatorEntry *entry = rstto_navigator_get_file(viewer->priv->navigator);
- g_debug("close");
- if (entry)
- {
- g_debug("close");
- rstto_navigator_remove(viewer->priv->navigator, entry);
- rstto_navigator_entry_free(entry);
- }
-}
More information about the Goodies-commits
mailing list