From e97848de8df5ff4093f1a9578cad2443bdce9006 Mon Sep 17 00:00:00 2001 From: Jaime Thomas Date: Thu, 25 Dec 2008 07:22:59 +0000 Subject: [PATCH] Propogate the size changes on delete back up the heirarchy. --- experimental/ecdb/trunk/TODO | 2 +- experimental/ecdb/trunk/src/ecdb_filelist_custom.c | 4 ++-- experimental/ecdb/trunk/src/ecdb_image.c | 14 +++++++++++++- 3 files changed, 16 insertions(+), 4 deletions(-) diff --git a/experimental/ecdb/trunk/TODO b/experimental/ecdb/trunk/TODO index d8f38540..4fc5dffb 100644 --- a/experimental/ecdb/trunk/TODO +++ b/experimental/ecdb/trunk/TODO @@ -6,5 +6,5 @@ -> more configuration options (speed and drive choice done) -> fix combo theme -> move callbacks to buttons instead of swallow (done except for welcome page) --> send combo popup children the focus out signal -> figure out what to do about dnd, should it be consolidated into one system, how to handle internel, etc. +-> don't load the sources all at one time (lots of memory consumed -- for my entire development tree containing 154256 files, ecdb uses 46mb) diff --git a/experimental/ecdb/trunk/src/ecdb_filelist_custom.c b/experimental/ecdb/trunk/src/ecdb_filelist_custom.c index 5904dab7..d1241250 100644 --- a/experimental/ecdb/trunk/src/ecdb_filelist_custom.c +++ b/experimental/ecdb/trunk/src/ecdb_filelist_custom.c @@ -198,7 +198,7 @@ ecdb_custom_filelist_model_filter(Ewl_Filelist_Directory *dir) ecore_list_first_goto(dir->rfiles); while ((file = ecore_list_next(dir->rfiles))) { - if (ecore_file_file_get(file->name)[0] != '.') + if ((file->name) && (ecore_file_file_get(file->name)[0] != '.')) { ecore_list_append(dir->files, file); nf++; @@ -208,7 +208,7 @@ ecdb_custom_filelist_model_filter(Ewl_Filelist_Directory *dir) ecore_list_first_goto(dir->rdirs); while ((file = ecore_list_next(dir->rdirs))) { - if (ecore_file_file_get(file->name)[0] != '.') + if ((file->name) && (ecore_file_file_get(file->name)[0] != '.')) { ecore_list_append(dir->dirs, file); nd++; diff --git a/experimental/ecdb/trunk/src/ecdb_image.c b/experimental/ecdb/trunk/src/ecdb_image.c index d53c12ea..03173a30 100644 --- a/experimental/ecdb/trunk/src/ecdb_image.c +++ b/experimental/ecdb/trunk/src/ecdb_image.c @@ -123,6 +123,7 @@ void ecdb_source_child_remove(Ecdb_Source *src, Ecdb_Source *child) { Ecdb_Source **temp; + Ecdb_Source *s; int i, cidx, f; if (src == child) @@ -149,7 +150,18 @@ ecdb_source_child_remove(Ecdb_Source *src, Ecdb_Source *child) FREE(src->children); src->children = temp; src->num_children--; - src->size -= child->size; + + // Propogate the size changes back up to the root + s = src; + do { + s->size -= child->size; + + if (s->parent) + s = s->parent; + else + break; + } while (1); + child->parent = NULL; }