Enlightenment CVS committal Author : englebass Project : e17 Module : libs/efreet
Dir : e17/libs/efreet/src/lib Modified Files: efreet_menu.c Log Message: implement more of fdo menu layout. =================================================================== RCS file: /cvs/e/e17/libs/efreet/src/lib/efreet_menu.c,v retrieving revision 1.14 retrieving revision 1.15 diff -u -3 -r1.14 -r1.15 --- efreet_menu.c 15 Apr 2007 04:54:45 -0000 1.14 +++ efreet_menu.c 2 May 2007 19:35:43 -0000 1.15 @@ -3690,47 +3690,50 @@ sub_entry = efreet_menu_layout_menu(sub); if (!show_empty && !sub_entry->entries) efreet_menu_free(sub_entry); -#if 0 else if (in_line && ((inline_limit == 0) || - (!sub->entries || (ecore_list_nodes(sub->entries) <= inline_limit)))) + (!sub_entry->entries || (ecore_list_nodes(sub_entry->entries) <= inline_limit)))) { - /* We don't delete the submenu when inlining, as we use information - * from it. */ /* Inline */ - if (!sub->entries) + if (!sub_entry->entries) { /* Can't inline an empty submenu */ - entry = efreet_menu_entry_new(); - entry->type = EFREET_MENU_ENTRY_MENU; - entry->name = sub->name.name; - if (sub->directory) entry->icon = sub->directory->icon; - entry->content.menu = sub; - ecore_list_append(internal->entries, entry); + ecore_list_append(entry->entries, sub_entry); } - else if (inline_alias && (ecore_list_nodes(sub->entries) == 1)) + else if (inline_alias && (ecore_list_nodes(sub_entry->entries) == 1)) { - entry = ecore_list_remove_first(sub->entries); - entry->name = sub->name.name; - if (sub->directory) entry->icon = sub->directory->icon; - ecore_list_append(internal->entries, entry); + Efreet_Menu *tmp; + + tmp = ecore_list_remove_first(sub_entry->entries); + IF_RELEASE(tmp->name); + tmp->name = sub_entry->name; + sub_entry->name = NULL; + IF_RELEASE(tmp->icon); + tmp->icon = sub_entry->icon; + sub_entry->icon = NULL; + ecore_list_append(entry->entries, tmp); + efreet_menu_free(sub_entry); } else { + Efreet_Menu *tmp; + if (inline_header) { - entry = efreet_menu_entry_new(); - entry->type = EFREET_MENU_ENTRY_HEADER; - entry->name = sub->name.name; - if (sub->directory) entry->icon = sub->directory->icon; - ecore_list_append(internal->entries, entry); + tmp = efreet_menu_entry_new(); + tmp->type = EFREET_MENU_ENTRY_HEADER; + tmp->name = sub_entry->name; + sub_entry->name = NULL; + tmp->icon = sub_entry->icon; + sub_entry->icon = NULL; + ecore_list_append(entry->entries, tmp); } - ecore_list_goto_first(sub->entries); - while ((entry = ecore_list_remove_first(sub->entries))) - ecore_list_append(internal->entries, entry); + ecore_list_goto_first(sub_entry->entries); + while ((tmp = ecore_list_remove_first(sub_entry->entries))) + ecore_list_append(entry->entries, tmp); + efreet_menu_free(sub_entry); } } -#endif else ecore_list_append(entry->entries, sub_entry); } @@ -3790,47 +3793,53 @@ sub_entry = efreet_menu_layout_menu(sub); if (!internal->show_empty && !sub_entry->entries) efreet_menu_free(sub_entry); -#if 0 else if (internal->in_line && ((internal->inline_limit == 0) || - (!sub->entries || (ecore_list_nodes(sub->entries) <= internal->inline_limit)))) + (!sub_entry->entries || (ecore_list_nodes(sub_entry->entries) <= internal->inline_limit)))) { - /* We don't delete the submenu when inlining, as we - * use information from it. */ /* Inline */ - if (!sub->entries) + if (!sub_entry->entries) { /* Can't inline an empty submenu */ - entry = efreet_menu_entry_new(); - entry->type = EFREET_MENU_ENTRY_MENU; - entry->name = sub->name.name; - if (sub->directory) entry->icon = sub->directory->icon; - entry->content.menu = sub; - ecore_list_append(internal->entries, entry); + ecore_list_append(entry->entries, sub_entry); } - else if (internal->inline_alias && (ecore_list_nodes(sub->entries) == 1)) + else if (internal->inline_alias && (ecore_list_nodes(sub_entry->entries) == 1)) { - entry = ecore_list_remove_first(sub->entries); - entry->name = sub->name.name; - if (sub->directory) entry->icon = sub->directory->icon; - ecore_list_append(internal->entries, entry); + Efreet_Menu *tmp; + + tmp = ecore_list_remove_first(sub_entry->entries); + ecore_string_release(tmp->name); + tmp->name = sub_entry->name; + sub_entry->name = NULL; + IF_RELEASE(tmp->icon); + if (sub_entry->icon) + { + tmp->icon = sub_entry->icon; + sub_entry->icon = NULL; + } + ecore_list_append(entry->entries, tmp); + efreet_menu_free(sub_entry); } else { + Efreet_Menu *tmp; + if (internal->inline_header) { - entry = efreet_menu_entry_new(); - entry->type = EFREET_MENU_ENTRY_HEADER; - entry->name = sub->name.name; - if (sub->directory) entry->icon = sub->directory->icon; - ecore_list_append(internal->entries, entry); + tmp = efreet_menu_entry_new(); + tmp->type = EFREET_MENU_ENTRY_HEADER; + tmp->name = sub_entry->name; + sub_entry->name = NULL; + if (sub_entry->icon) tmp->icon = sub_entry->icon; + sub_entry->icon = NULL; + ecore_list_append(entry->entries, tmp); } - ecore_list_goto_first(sub->entries); - while ((entry = ecore_list_remove_first(sub->entries))) - ecore_list_append(internal->entries, entry); + ecore_list_goto_first(sub_entry->entries); + while ((tmp = ecore_list_remove_first(sub_entry->entries))) + ecore_list_append(entry->entries, tmp); + efreet_menu_free(sub_entry); } } -#endif else ecore_list_append(entry->entries, sub_entry); } ------------------------------------------------------------------------- This SF.net email is sponsored by DB2 Express Download DB2 Express C - the FREE version of DB2 express and take control of your XML. No limits. Just data. Click to get it now. http://sourceforge.net/powerbar/db2/ _______________________________________________ enlightenment-cvs mailing list enlightenment-cvs@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs