Enlightenment CVS committal Author : chaos Project : e17 Module : proto
Dir : e17/proto/entropy/src/plugins Modified Files: etk_structure_viewer.c Log Message: * On new window launch, if the user has requested a directory, traverse up the file tree and backpopulate the tree hierarchy =================================================================== RCS file: /cvs/e/e17/proto/entropy/src/plugins/etk_structure_viewer.c,v retrieving revision 1.23 retrieving revision 1.24 diff -u -3 -r1.23 -r1.24 --- etk_structure_viewer.c 2 Apr 2006 05:47:38 -0000 1.23 +++ etk_structure_viewer.c 15 Apr 2006 10:43:09 -0000 1.24 @@ -140,7 +140,7 @@ -void +Etk_Tree_Row* structure_viewer_add_row (entropy_gui_component_instance * instance, entropy_generic_file * file, Etk_Tree_Row * prow) { @@ -178,6 +178,8 @@ ecore_list_append (viewer->files, event->file); etk_tree_thaw(ETK_TREE(viewer->tree)); + + return new_row; } void @@ -197,6 +199,40 @@ ((entropy_file_request *) eevent->data)->file; row = ecore_hash_get (viewer->row_folder_hash, event_file); + + /*If we don't have a file's row-parent, try traversing up the tree + * to find it*/ + if (!row) { + entropy_generic_file* traverse_file = event_file; + Ecore_List* traverse_stack; + int hit = 0; + + traverse_stack = ecore_list_new(); + /*Attempt to traverse up the tree...*/ + while ( (traverse_file = entropy_core_parent_folder_file_get(traverse_file))) { + if (ecore_hash_get(viewer->row_folder_hash, traverse_file)) { + row = ecore_hash_get(viewer->row_folder_hash, traverse_file); + hit = 1; + goto done; + } + + ecore_list_prepend(traverse_stack, traverse_file); + } + + done: + if (hit) { + while ((traverse_file = ecore_list_remove_first(traverse_stack))) { + row = structure_viewer_add_row(comp, traverse_file, row); + entropy_core_file_cache_add_reference (traverse_file->md5); + } + + row = structure_viewer_add_row(comp, event_file, row); + entropy_core_file_cache_add_reference (event_file->md5); + } + + ecore_list_destroy(traverse_stack); + } + if (row) etk_tree_row_select(row); @@ -282,7 +318,7 @@ plugin = entropy_malloc(sizeof(Entropy_Plugin_Gui)); base = ENTROPY_PLUGIN(plugin); - return plugin; + return ENTROPY_PLUGIN(plugin); } ------------------------------------------------------- This SF.Net email is sponsored by xPML, a groundbreaking scripting language that extends applications into web and mobile media. Attend the live webcast and join the prime developer group breaking into this new coding territory! http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642 _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs