Propogate the size changes on delete back up the heirarchy.

This commit is contained in:
Jaime Thomas
2008-12-25 07:22:59 +00:00
parent d6e5852814
commit e97848de8d
3 changed files with 16 additions and 4 deletions

View File

@ -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++;

View File

@ -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;
}