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

Stephan Arts stephan at xfce.org
Tue Aug 7 18:58:12 CEST 2007


Author: stephan
Date: 2007-08-07 16:58:11 +0000 (Tue, 07 Aug 2007)
New Revision: 2965

Modified:
   ristretto/trunk/src/main.c
   ristretto/trunk/src/navigator.c
   ristretto/trunk/src/navigator.h
   ristretto/trunk/src/thumbnail_viewer.c
Log:
fix rendering issue samuel reported (quick-fix)

Modified: ristretto/trunk/src/main.c
===================================================================
--- ristretto/trunk/src/main.c	2007-08-07 16:28:18 UTC (rev 2964)
+++ ristretto/trunk/src/main.c	2007-08-07 16:58:11 UTC (rev 2965)
@@ -38,6 +38,8 @@
 
 static void
 cb_rstto_fullscreen(GtkWidget *, GdkEventWindowState *event, RsttoPictureViewer *viewer);
+static void
+cb_rstto_toggle_play(GtkToolItem *item, RsttoNavigator *navigator);
 
 static void
 cb_rstto_previous(GtkToolItem *item, RsttoNavigator *);
@@ -133,10 +135,12 @@
 	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item_edit), menu_edit);
 
     GtkWidget *menu_item_view = gtk_menu_item_new_with_mnemonic(_("_View"));
+    GtkWidget *menu_item_play = gtk_image_menu_item_new_from_stock(GTK_STOCK_MEDIA_PLAY, NULL);
     GtkWidget *menu_item_view_fs = gtk_image_menu_item_new_from_stock(GTK_STOCK_FULLSCREEN, NULL);
 
     GtkWidget *menu_view = gtk_menu_new();
 	gtk_menu_item_set_submenu(GTK_MENU_ITEM(menu_item_view), menu_view);
+    gtk_menu_shell_append(GTK_MENU_SHELL(menu_view), menu_item_play);
     gtk_menu_shell_append(GTK_MENU_SHELL(menu_view), menu_item_view_fs);
 
     GtkWidget *menu_item_help = gtk_menu_item_new_with_mnemonic(_("_Help"));
@@ -209,6 +213,7 @@
 	g_signal_connect(G_OBJECT(menu_item_open_dir), "activate", G_CALLBACK(cb_rstto_open_dir), navigator);
 	g_signal_connect(G_OBJECT(menu_item_help_about), "activate", G_CALLBACK(cb_rstto_help_about), window);
 
+	g_signal_connect(G_OBJECT(menu_item_play), "activate", G_CALLBACK(cb_rstto_toggle_play), navigator);
 	g_signal_connect(G_OBJECT(menu_item_view_fs), "activate", G_CALLBACK(cb_rstto_toggle_fullscreen), window);
 
 	g_signal_connect(G_OBJECT(window), "window-state-event", G_CALLBACK(cb_rstto_fullscreen), viewer);
@@ -393,6 +398,12 @@
 }
 
 static void
+cb_rstto_toggle_play(GtkToolItem *item, RsttoNavigator *navigator)
+{
+    rstto_navigator_set_running(navigator, TRUE);
+}
+
+static void
 cb_rstto_toggle_fullscreen(GtkToolItem *item, GtkWindow *window)
 {
     if(window_fullscreen)

Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2007-08-07 16:28:18 UTC (rev 2964)
+++ ristretto/trunk/src/navigator.c	2007-08-07 16:58:11 UTC (rev 2965)
@@ -31,6 +31,9 @@
 static void
 rstto_navigator_dispose(GObject *object);
 
+static gboolean
+cb_rstto_navigator_running(RsttoNavigator *navigator);
+
 static GObjectClass *parent_class = NULL;
 
 enum
@@ -286,6 +289,21 @@
     }
 }
 
+void
+rstto_navigator_set_running (RsttoNavigator *navigator, gboolean running)
+{
+    if(!navigator->running)
+    {
+        navigator->running = running;
+        if(!navigator->id)
+            navigator->id = g_timeout_add(5000, (GSourceFunc)cb_rstto_navigator_running, navigator);
+    }
+    else
+    {
+        navigator->running = running;
+    }
+}
+
 RsttoNavigatorEntry *
 rstto_navigator_get_file (RsttoNavigator *navigator)
 {
@@ -307,6 +325,30 @@
     return g_list_nth_data(navigator->file_list, n);
 }
 
+void
+rstto_navigator_set_file (RsttoNavigator *navigator, gint n)
+{
+    navigator->file_iter = g_list_nth(navigator->file_list, n);
+    if(navigator->file_iter)
+    {
+        ThunarVfsInfo *info = rstto_navigator_entry_get_info(((RsttoNavigatorEntry *)navigator->file_iter->data));
+        gchar *filename = thunar_vfs_path_dup_string(info->path);
+        GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(filename , NULL);
+        if(!pixbuf)
+        {
+            pixbuf = gtk_icon_theme_load_icon(navigator->icon_theme, GTK_STOCK_MISSING_IMAGE, 48, 0, NULL);
+            rstto_picture_viewer_set_scale(navigator->viewer, 1);
+        }
+
+        rstto_picture_viewer_set_pixbuf(navigator->viewer, pixbuf);
+        if(pixbuf)
+            gdk_pixbuf_unref(pixbuf);
+
+        g_free(filename);
+        g_signal_emit(G_OBJECT(navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_FILE_CHANGED], 0, NULL);
+    }
+}
+
 RsttoNavigatorEntry *
 _rstto_navigator_entry_new (ThunarVfsInfo *info)
 {
@@ -345,26 +387,14 @@
     g_free(nav_entry);
 }
 
-void
-rstto_navigator_set_file (RsttoNavigator *navigator, gint n)
+static gboolean
+cb_rstto_navigator_running(RsttoNavigator *navigator)
 {
-    navigator->file_iter = g_list_nth(navigator->file_list, n);
-    if(navigator->file_iter)
+    if(navigator->running)
     {
-        ThunarVfsInfo *info = rstto_navigator_entry_get_info(((RsttoNavigatorEntry *)navigator->file_iter->data));
-        gchar *filename = thunar_vfs_path_dup_string(info->path);
-        GdkPixbuf *pixbuf = gdk_pixbuf_new_from_file(filename , NULL);
-        if(!pixbuf)
-        {
-            pixbuf = gtk_icon_theme_load_icon(navigator->icon_theme, GTK_STOCK_MISSING_IMAGE, 48, 0, NULL);
-            rstto_picture_viewer_set_scale(navigator->viewer, 1);
-        }
-
-        rstto_picture_viewer_set_pixbuf(navigator->viewer, pixbuf);
-        if(pixbuf)
-            gdk_pixbuf_unref(pixbuf);
-
-        g_free(filename);
-        g_signal_emit(G_OBJECT(navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_FILE_CHANGED], 0, NULL);
+        rstto_navigator_forward(navigator);
     }
+    else
+        navigator->id = 0;
+    return navigator->running;
 }

Modified: ristretto/trunk/src/navigator.h
===================================================================
--- ristretto/trunk/src/navigator.h	2007-08-07 16:28:18 UTC (rev 2964)
+++ ristretto/trunk/src/navigator.h	2007-08-07 16:58:11 UTC (rev 2965)
@@ -51,6 +51,8 @@
     ThunarVfsPath      *path;
     GList              *file_list;
     GList              *file_iter;
+    gboolean            running;
+    gint                id;
 };
 
 typedef struct _RsttoNavigatorClass RsttoNavigatorClass;
@@ -65,10 +67,12 @@
 rstto_navigator_new (RsttoPictureViewer *viewer);
 
 void       rstto_navigator_set_path (RsttoNavigator *navigator,
-                                     ThunarVfsPath *path,
-                                     gboolean index_path);
+                                        ThunarVfsPath *path,
+                                        gboolean index_path);
 void       rstto_navigator_forward (RsttoNavigator *navigator);
 void       rstto_navigator_back (RsttoNavigator *navigator);
+void       rstto_navigator_set_running (RsttoNavigator *navigator,
+                                        gboolean running);
 
 RsttoNavigatorEntry *
 rstto_navigator_get_file (RsttoNavigator *navigator);

Modified: ristretto/trunk/src/thumbnail_viewer.c
===================================================================
--- ristretto/trunk/src/thumbnail_viewer.c	2007-08-07 16:28:18 UTC (rev 2964)
+++ ristretto/trunk/src/thumbnail_viewer.c	2007-08-07 16:58:11 UTC (rev 2965)
@@ -234,6 +234,8 @@
     switch (viewer->priv->orientation)
     {
         case GTK_ORIENTATION_HORIZONTAL:
+            /* FIXME: use gdk_window_clear_area instead */
+            gdk_window_clear(widget->window);
             for(i = 0; i < rstto_navigator_get_n_files(viewer->priv->navigator); ++i)
             { 
                 RsttoNavigatorEntry *entry = rstto_navigator_get_nth_file(viewer->priv->navigator, i);
@@ -275,14 +277,6 @@
                                 GDK_RGB_DITHER_NORMAL,
                                 0, 0);
             }
-            if(widget->allocation.width - (viewer->priv->dimension * (i+1)) - viewer->priv->offset - 16 > 0)
-            {
-                gdk_window_clear_area(widget->window,
-                            (viewer->priv->dimension * (i+1)) - viewer->priv->offset,
-                            0,
-                            widget->allocation.width - (viewer->priv->dimension * (i+1)) - viewer->priv->offset - 16,
-                            viewer->priv->dimension);
-            }
 
             gtk_paint_box(widget->style,
                             widget->window,
@@ -317,6 +311,8 @@
 
             break;
         case GTK_ORIENTATION_VERTICAL:
+            /* FIXME: use gdk_window_clear_area instead */
+            gdk_window_clear(widget->window);
             for(i = 0; i < rstto_navigator_get_n_files(viewer->priv->navigator); ++i)
             { 
                 RsttoNavigatorEntry *entry = rstto_navigator_get_nth_file(viewer->priv->navigator, i);
@@ -356,15 +352,6 @@
                                 0, 0);
             }
 
-            if(widget->allocation.height - (viewer->priv->dimension * (i+1)) - viewer->priv->offset - 16 > 0)
-            {
-                gdk_window_clear_area(widget->window,
-                            0,
-                            (viewer->priv->dimension * (i+1)) - viewer->priv->offset,
-                            viewer->priv->dimension,
-                            widget->allocation.height - (viewer->priv->dimension * (i+1)) - viewer->priv->offset - 16);
-            }
-
             gtk_paint_box(widget->style,
                             widget->window,
                             GTK_STATE_NORMAL,




More information about the Goodies-commits mailing list