Author: peter
Date: 2007-01-08 18:45:57 +0000 (Mon, 08 Jan 2007)
New Revision: 24316
Modified:
squeeze/trunk/src/archive_store.c
squeeze/trunk/src/archive_store.h
Log:
fixed bug #2707
Modified: squeeze/trunk/src/archive_store.c
===================================================================
--- squeeze/trunk/src/archive_store.c 2007-01-08 16:44:42 UTC (rev 24315)
+++ squeeze/trunk/src/archive_store.c 2007-01-08 18:45:57 UTC (rev 24316)
@@ -215,11 +215,10 @@
as->sort_column = GTK_TREE_SORTABLE_DEFAULT_SORT_COLUMN_ID;
as->sort_order = GTK_SORT_ASCENDING;
as->sort_list = NULL;
- as->list_size = 0;
as->icon_theme = NULL;
as->props._show_icons = 0;
as->props._show_up_dir = 1;
- as->props._sort_folders_first = 1;
+ as->props._sort_folders_first = 0;
as->props._sort_case_sensitive = 1;
as->navigation.history = NULL;
as->navigation.present = NULL;
@@ -551,12 +550,7 @@
pos++;
if(store->sort_list)
- {
- if(pos < lsq_archive_iter_n_children(store->archive, entry))
- entry = store->sort_list[pos];
- else
- entry = NULL;
- }
+ entry = store->sort_list[pos];
else
entry = lsq_archive_iter_nth_child(store->archive, entry, pos);
@@ -866,6 +860,7 @@
for(i = 0; i < psize; ++i)
{
+ g_debug("sorting %i", i);
store->sort_list[i] =
lsq_archive_iter_nth_child(store->archive, pentry, i);
}
sq_archive_quicksort(store, 0, psize-1);
@@ -965,7 +960,6 @@
static void
sq_archive_store_refresh(SQArchiveStore *store)
{
- guint prev_size = store->list_size;
LSQArchive *archive = store->archive;
if(!store->navigation.present)
@@ -979,66 +973,8 @@
g_return_if_fail(archive);
g_return_if_fail(entry);
- gint new_size = lsq_archive_iter_n_children(archive, entry);
- gint i = 0;
- gint index = 0;
- GtkTreePath *path_ = NULL;
- GtkTreeIter iter;
-
- if(store->props._show_up_dir && lsq_archive_get_iter(archive, NULL) !=
entry)
- {
- path_ = gtk_tree_path_new();
- gtk_tree_path_append_index(path_, 0);
-
- iter.stamp = store->stamp;
- iter.user_data = NULL;
- iter.user_data2 = entry;
- iter.user_data3 = GINT_TO_POINTER(-1);
-
- if(0 < prev_size)
- gtk_tree_model_row_changed(GTK_TREE_MODEL(store),
path_, &iter);
- else
- gtk_tree_model_row_inserted(GTK_TREE_MODEL(store),
path_, &iter);
-
- gtk_tree_path_free(path_);
- i=1;
- }
-
- for(index = 0; index < new_size; ++i, ++index)
- {
- path_ = gtk_tree_path_new();
- gtk_tree_path_append_index(path_, i);
-
- iter.stamp = store->stamp;
- if(store->sort_list)
- iter.user_data = store->sort_list[i];
- else
- iter.user_data = lsq_archive_iter_nth_child(archive,
lsq_archive_get_iter(archive, NULL), i);
- iter.user_data2 = entry;
- iter.user_data3 = GINT_TO_POINTER(index);
-
- if(i < prev_size)
- gtk_tree_model_row_changed(GTK_TREE_MODEL(store),
path_, &iter);
- else
- gtk_tree_model_row_inserted(GTK_TREE_MODEL(store),
path_, &iter);
-
- gtk_tree_path_free(path_);
- }
-
- for(index = prev_size - 1; index >= i; --index)
- {
- path_ = gtk_tree_path_new();
- gtk_tree_path_append_index(path_, index);
-
- gtk_tree_model_row_deleted(GTK_TREE_MODEL(store), path_);
-
- gtk_tree_path_free(path_);
- }
-
- if(store->props._show_up_dir && lsq_archive_get_iter(archive, NULL) !=
entry)
- new_size++;
-
- store->list_size = new_size;
+ gtk_tree_view_set_model(store->treeview, NULL);
+ gtk_tree_view_set_model(store->treeview, GTK_TREE_MODEL(store));
}
static void
@@ -1141,13 +1077,8 @@
void
sq_archive_store_set_archive(SQArchiveStore *store, LSQArchive *archive)
{
- gint i = 0;
- GtkTreePath *path_ = NULL;
- GtkTreeIter iter;
g_return_if_fail(store);
- LSQArchiveIter *entry = NULL;
- gint prev_size = 0;
GList *list_iter;
GSList *current_entry;
@@ -1157,27 +1088,6 @@
store->sort_list = NULL;
}
- if(store->navigation.present)
- {
- entry = ((GSList*)store->navigation.present->data)->data;
- prev_size = lsq_archive_iter_n_children(archive, entry);
-
- if(store->props._show_up_dir &&
lsq_archive_get_iter(store->archive, NULL) != entry)
- prev_size++;
- }
-
- for(i = prev_size - 1; i >= 0; --i)
- {
- path_ = gtk_tree_path_new();
- gtk_tree_path_append_index(path_, i);
-
- gtk_tree_model_row_deleted(GTK_TREE_MODEL(store), path_);
-
- gtk_tree_path_free(path_);
- }
-
- store->list_size = 0;
-
if(store->archive)
{
g_signal_handlers_disconnect_by_func(store->archive,
cb_sq_archive_store_archive_refreshed, store);
@@ -1194,11 +1104,7 @@
store->navigation.present = NULL;
store->navigation.trailing = NULL;
- if(store->archive)
- {
- g_object_unref(store->archive);
- store->archive = NULL;
- }
+ sq_archive_store_refresh(store);
if(!archive)
{
@@ -1216,26 +1122,7 @@
sq_archive_store_append_history(store, current_entry);
sq_archive_store_sort(store);
-
- store->list_size = lsq_archive_iter_n_children(archive,
lsq_archive_get_iter(archive, NULL));
-
- for(i = 0; i < store->list_size; ++i)
- {
- path_ = gtk_tree_path_new();
- gtk_tree_path_append_index(path_, i);
-
- iter.stamp = store->stamp;
- if(store->sort_list)
- iter.user_data = store->sort_list[i];
- else
- iter.user_data =
lsq_archive_iter_nth_child(archive, lsq_archive_get_iter(archive, NULL), i);
- iter.user_data2 = lsq_archive_get_iter(archive, NULL);
- iter.user_data3 = GINT_TO_POINTER(i);
-
- gtk_tree_model_row_inserted(GTK_TREE_MODEL(store),
path_, &iter);
-
- gtk_tree_path_free(path_);
- }
+ sq_archive_store_refresh(store);
}
g_signal_emit(store,
sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_NEW_ARCHIVE], 0, NULL);
@@ -1389,7 +1276,7 @@
sq_archive_store_sort(store);
sq_archive_store_refresh(store);
- //g_signal_emit(store,
sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0,NULL);
+ g_signal_emit(store,
sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0,NULL);
return TRUE;
}
@@ -1676,8 +1563,13 @@
if(lsq_archive_get_status(archive) == LSQ_ARCHIVESTATUS_IDLE)
{
if(!store->navigation.present)
+ {
+ g_debug("added home");
sq_archive_store_append_history(store,
g_slist_prepend(NULL, lsq_archive_get_iter(archive, NULL)));
- g_signal_emit(store,
sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0,NULL);
+ g_signal_emit(store,
sq_archive_store_signals[SQ_ARCHIVE_STORE_SIGNAL_PWD_CHANGED], 0,NULL);
+ }
+ sq_archive_store_sort(store);
+ sq_archive_store_refresh(store);
}
}
Modified: squeeze/trunk/src/archive_store.h
===================================================================
--- squeeze/trunk/src/archive_store.h 2007-01-08 16:44:42 UTC (rev 24315)
+++ squeeze/trunk/src/archive_store.h 2007-01-08 18:45:57 UTC (rev 24316)
@@ -49,7 +49,6 @@
gint sort_column;
GtkSortType sort_order;
LSQEntry **sort_list;
- guint list_size;
GtkIconTheme *icon_theme;
GtkTreeView *treeview;
struct {
_______________________________________________
Xfce4-commits mailing list
[email protected]
http://foo-projects.org/mailman/listinfo/xfce4-commits