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

Stephan Arts stephan at xfce.org
Fri Mar 21 15:18:10 CET 2008


Author: stephan
Date: 2008-03-21 14:18:10 +0000 (Fri, 21 Mar 2008)
New Revision: 4076

Modified:
   ristretto/trunk/src/main.c
   ristretto/trunk/src/main_window.c
   ristretto/trunk/src/navigator.c
   ristretto/trunk/src/navigator.h
   ristretto/trunk/src/thumbnail_bar.c
Log:
Fix errors when aborting while ristretto is opening a folder



Modified: ristretto/trunk/src/main.c
===================================================================
--- ristretto/trunk/src/main.c	2008-03-21 13:03:24 UTC (rev 4075)
+++ ristretto/trunk/src/main.c	2008-03-21 14:18:10 UTC (rev 4076)
@@ -415,6 +415,8 @@
     g_object_ref(navigator);
     g_object_ref(rof->main_window);
 
+    rstto_navigator_set_busy(navigator, TRUE);
+
     if (g_slist_length(rof->files) >= 1)
     {
         GSList *_iter = rof->files;
@@ -438,6 +440,7 @@
                 if(g_file_test(path_dir, G_FILE_TEST_IS_DIR))
                 {
                     rstto_navigator_open_folder (navigator, path_dir, TRUE, NULL);
+                    rstto_navigator_jump_first(navigator);
                 }
                 else
                 {
@@ -453,6 +456,8 @@
         if (g_slist_length(rof->files) > 1)
             rstto_navigator_jump_first(navigator);
     }
+    rstto_navigator_set_busy(navigator, FALSE);
+
     g_object_unref(rof->main_window);
     g_object_unref(navigator);
     return FALSE;

Modified: ristretto/trunk/src/main_window.c
===================================================================
--- ristretto/trunk/src/main_window.c	2008-03-21 13:03:24 UTC (rev 4075)
+++ ristretto/trunk/src/main_window.c	2008-03-21 14:18:10 UTC (rev 4076)
@@ -1443,6 +1443,7 @@
     {
         const gchar *dir_name = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER(dialog));
         rstto_navigator_open_folder(window->priv->navigator, dir_name, TRUE, NULL);
+        rstto_navigator_jump_first(window->priv->navigator);
     }
     gtk_widget_destroy(dialog);
 }

Modified: ristretto/trunk/src/navigator.c
===================================================================
--- ristretto/trunk/src/navigator.c	2008-03-21 13:03:24 UTC (rev 4075)
+++ ristretto/trunk/src/navigator.c	2008-03-21 14:18:10 UTC (rev 4076)
@@ -516,18 +516,24 @@
     if (!navigator->file_iter)
     {
         navigator->file_iter = navigator->file_list;
-        g_signal_emit(G_OBJECT(navigator),
+        if (navigator->busy == FALSE)
+        {
+            g_signal_emit(G_OBJECT(navigator),
                       rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_ITER_CHANGED],
                       0,
                       g_list_index(navigator->file_list, entry),
                       entry,
                       NULL);
+        }
     }
 
     if (with_monitor == TRUE)
         entry->monitor_handle = thunar_vfs_monitor_add_file(navigator->monitor, entry->info->path, (ThunarVfsMonitorCallback)cb_rstto_navigator_entry_fs_event, entry);
 
-    g_signal_emit(G_OBJECT(navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_NEW_ENTRY], 0, g_list_index(navigator->file_list, entry), entry, NULL);
+    if (navigator->busy == FALSE)
+    {
+        g_signal_emit(G_OBJECT(navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_NEW_ENTRY], 0, g_list_index(navigator->file_list, entry), entry, NULL);
+    }
     return g_list_index(navigator->file_list, entry);
 }
 
@@ -550,7 +556,10 @@
             if (navigator->history)
                 navigator->history = g_list_remove_all(navigator->history, entry);
 
-            g_signal_emit(G_OBJECT(navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_ENTRY_REMOVED], 0, entry, NULL);
+            if (navigator->busy == FALSE)
+            {
+                g_signal_emit(G_OBJECT(navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_ENTRY_REMOVED], 0, entry, NULL);
+            }
             if(g_list_length(navigator->file_list) == 0)
             {
                 navigator->file_iter = NULL;
@@ -558,12 +567,15 @@
             }
             if(navigator->file_iter)
             {
-                g_signal_emit(G_OBJECT(navigator),
+                if (navigator->busy == FALSE)
+                {
+                    g_signal_emit(G_OBJECT(navigator),
                               rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_ITER_CHANGED],
                               0,
                               g_list_position(navigator->file_list, navigator->file_iter),
                               navigator->file_iter->data,
                               NULL);
+                }
             }
             else
             {
@@ -1523,8 +1535,17 @@
             g_free(path_name);
             filename = g_dir_read_name(dir);
         }
-        rstto_navigator_jump_first(navigator);
     }
 
     g_free(dir_uri);
 }
+
+void
+rstto_navigator_set_busy (RsttoNavigator *navigator, gboolean busy)
+{
+    navigator->busy = busy;
+    if (busy == FALSE)
+    {
+        g_signal_emit(G_OBJECT(navigator), rstto_navigator_signals[RSTTO_NAVIGATOR_SIGNAL_REORDERED], 0, NULL);
+    }
+}

Modified: ristretto/trunk/src/navigator.h
===================================================================
--- ristretto/trunk/src/navigator.h	2008-03-21 13:03:24 UTC (rev 4075)
+++ ristretto/trunk/src/navigator.h	2008-03-21 14:18:10 UTC (rev 4076)
@@ -65,6 +65,8 @@
     gboolean               running;
     gint                   timeout;
     gint                   id;
+
+    gboolean               busy;
 };
 
 typedef struct _RsttoNavigatorClass RsttoNavigatorClass;
@@ -166,6 +168,9 @@
 gboolean
 rstto_navigator_open_folder(RsttoNavigator *navigator, const gchar *path, gboolean clear, GError **error);
 
+void
+rstto_navigator_set_busy (RsttoNavigator *navigator, gboolean busy);
+
 G_END_DECLS
 
 #endif /* __RISTRETTO_NAVIGATOR_H__ */

Modified: ristretto/trunk/src/thumbnail_bar.c
===================================================================
--- ristretto/trunk/src/thumbnail_bar.c	2008-03-21 13:03:24 UTC (rev 4075)
+++ ristretto/trunk/src/thumbnail_bar.c	2008-03-21 14:18:10 UTC (rev 4076)
@@ -671,6 +671,53 @@
 static void
 cb_rstto_thumbnail_bar_nav_reordered (RsttoNavigator *nav, RsttoThumbnailBar *bar)
 {
+    gtk_container_foreach(GTK_CONTAINER(bar), (GtkCallback)gtk_widget_destroy, NULL);
+    if (bar->priv->thumbs)
+    {
+        g_slist_free(bar->priv->thumbs);
+        bar->priv->thumbs = NULL;
+    }
+
+    GtkWidget *thumb;
+    gint i;
+    gint n_files = rstto_navigator_get_n_files(bar->priv->navigator);
+
+    for (i = 0; i < n_files; ++i)
+    {
+        RsttoNavigatorEntry *entry = rstto_navigator_get_nth_file(bar->priv->navigator, i);
+        if (g_slist_length(bar->priv->thumbs) > 0)
+        {
+            thumb = rstto_thumbnail_new_from_widget(entry, bar->priv->thumbs->data);
+        }
+        else
+        {
+            thumb = rstto_thumbnail_new(entry, NULL);
+        }
+
+
+        g_signal_connect(G_OBJECT(thumb), "clicked", G_CALLBACK(cb_rstto_thumbnail_bar_thumbnail_clicked), bar);
+        g_signal_connect(G_OBJECT(thumb), "button_press_event", G_CALLBACK(cb_rstto_thumbnail_bar_thumbnail_button_press_event), NULL);
+        g_signal_connect(G_OBJECT(thumb), "button_release_event", G_CALLBACK(cb_rstto_thumbnail_bar_thumbnail_button_release_event), NULL);
+        g_signal_connect(G_OBJECT(thumb), "motion_notify_event", G_CALLBACK(cb_rstto_thumbnail_bar_thumbnail_motion_notify_event), NULL);
+        gtk_container_add(GTK_CONTAINER(bar), thumb);
+
+        if (rstto_navigator_entry_is_selected(entry))
+        {
+            RSTTO_THUMBNAIL(thumb)->selected = TRUE;
+        }
+    }
+
+    gtk_container_foreach(GTK_CONTAINER(bar), (GtkCallback)gtk_widget_show, NULL);
+
+
+
+    /* If the children should be autocentered... resize */
+    /*
+     * if (bar->priv->auto_center == TRUE)
+     *   gtk_widget_queue_resize(GTK_WIDGET(bar));
+     */
+
+     gtk_widget_queue_resize(GTK_WIDGET(bar));
 }
 
 static void




More information about the Goodies-commits mailing list