@@ -1031,52 +1031,54 @@ generate_launchers (MateMenuTreeDirectory * root_dir, AppShellData * app_data, C
1031
1031
{
1032
1032
MateDesktopItem * desktop_item ;
1033
1033
const gchar * desktop_file ;
1034
- GSList * contents , * l ;
1035
-
1036
- contents = matemenu_tree_directory_get_contents (root_dir );
1037
- for (l = contents ; l ; l = l -> next )
1038
- {
1039
- switch (matemenu_tree_item_get_type (l -> data ))
1040
- {
1041
- case MATEMENU_TREE_ITEM_DIRECTORY :
1042
- /* g_message ("Found sub-category %s", matemenu_tree_directory_get_name (l->data)); */
1043
- if (recursive )
1044
- generate_launchers (l -> data , app_data , cat_data , TRUE);
1045
- break ;
1046
- case MATEMENU_TREE_ITEM_ENTRY :
1047
- /* g_message ("Found item name is:%s", matemenu_tree_entry_get_name (l->data)); */
1048
- desktop_file = matemenu_tree_entry_get_desktop_file_path (l -> data );
1049
- if (desktop_file )
1050
- {
1051
- if (g_hash_table_lookup (app_data -> hash , desktop_file ))
1034
+ MateMenuTreeIter * iter ;
1035
+ MateMenuTreeItemType type ;
1036
+
1037
+ iter = matemenu_tree_directory_iter (directory );
1038
+ while ((type = matemenu_tree_iter_next (iter )) != MATEMENU_TREE_ITEM_INVALID ) {
1039
+ gpointer item ;
1040
+ switch (type ) {
1041
+ case MATEMENU_TREE_ITEM_DIRECTORY :
1042
+ item = matemenu_tree_iter_get_directory (iter );
1043
+ /* g_message ("Found sub-category %s", matemenu_tree_directory_get_name (item)); */
1044
+ if (recursive )
1045
+ generate_launchers (item , app_data , cat_data , TRUE);
1046
+ matemenu_tree_item_unref (item );
1047
+ break ;
1048
+ case MATEMENU_TREE_ITEM_ENTRY :
1049
+ item = matemenu_tree_iter_get_entry (iter );
1050
+ /* g_message ("Found item name is:%s", matemenu_tree_entry_get_desktop_file_id(item)); */
1051
+ desktop_file = matemenu_tree_entry_get_desktop_file_path (item );
1052
+ if (desktop_file )
1053
+ {
1054
+ if (g_hash_table_lookup (app_data -> hash , desktop_file ))
1055
+ {
1056
+ break ; /* duplicate */
1057
+ }
1058
+ /* Fixme - make sure it's safe to store this without duping it. As far as I can tell it is
1059
+ safe as long as I don't hang on to this anylonger than I hang on to the MateMenuTreeEntry*
1060
+ which brings up another point - am I supposed to free these or does freeing the top level recurse
1061
+ */
1062
+ g_hash_table_insert (app_data -> hash , (gpointer ) desktop_file ,
1063
+ (gpointer ) desktop_file );
1064
+ }
1065
+ desktop_item = mate_desktop_item_new_from_file (desktop_file , 0 , NULL );
1066
+ if (!desktop_item )
1052
1067
{
1053
- break ; /* duplicate */
1068
+ g_critical ("Failure - mate_desktop_item_new_from_file(%s)" ,
1069
+ desktop_file );
1070
+ break ;
1054
1071
}
1055
- /* Fixme - make sure it's safe to store this without duping it. As far as I can tell it is
1056
- safe as long as I don't hang on to this anylonger than I hang on to the MateMenuTreeEntry*
1057
- which brings up another point - am I supposed to free these or does freeing the top level recurse
1058
- */
1059
- g_hash_table_insert (app_data -> hash , (gpointer ) desktop_file ,
1060
- (gpointer ) desktop_file );
1061
- }
1062
- desktop_item = mate_desktop_item_new_from_file (desktop_file , 0 , NULL );
1063
- if (!desktop_item )
1064
- {
1065
- g_critical ("Failure - mate_desktop_item_new_from_file(%s)" ,
1066
- desktop_file );
1072
+ if (!check_specific_apps_hack (desktop_item ))
1073
+ insert_launcher_into_category (cat_data , desktop_item , app_data );
1074
+ mate_desktop_item_unref (desktop_item );
1075
+ matemenu_tree_item_unref (item );
1076
+ break ;
1077
+ default :
1078
+ g_assert_not_reached ();
1067
1079
break ;
1068
- }
1069
- if (!check_specific_apps_hack (desktop_item ))
1070
- insert_launcher_into_category (cat_data , desktop_item , app_data );
1071
- mate_desktop_item_unref (desktop_item );
1072
- break ;
1073
- default :
1074
- break ;
1075
1080
}
1076
-
1077
- matemenu_tree_item_unref (l -> data );
1078
1081
}
1079
- g_slist_free (contents );
1080
1082
}
1081
1083
1082
1084
static void
0 commit comments