[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