871
871
generate_categories (AppShellData * app_data )
872
872
{
873
873
MateMenuTreeDirectory * root_dir ;
874
- GSList * contents , * l ;
875
874
gboolean need_misc = FALSE;
875
+ MateMenuTreeIter * iter ;
876
+ MateMenuTreeItemType type ;
876
877
877
878
if (!app_data -> tree )
878
879
{
@@ -888,42 +889,35 @@ generate_categories (AppShellData * app_data)
888
889
}
889
890
890
891
}
891
- root_dir = matemenu_tree_get_root_directory (app_data -> tree );
892
- if (root_dir )
893
- contents = matemenu_tree_directory_get_contents (root_dir );
894
- else
895
- contents = NULL ;
896
- if (!root_dir || !contents )
897
- {
892
+
893
+ if ((root_dir = matemenu_tree_get_root_directory (app_data -> tree )) == NULL ) {
898
894
GtkWidget * dialog = gtk_message_dialog_new (NULL , GTK_DIALOG_DESTROY_WITH_PARENT ,
899
- GTK_MESSAGE_ERROR , GTK_BUTTONS_CLOSE , "Failure loading - %s" ,
900
- app_data -> menu_name );
895
+ GTK_MESSAGE_ERROR , GTK_BUTTONS_CLOSE , "Failure loading - %s" ,
896
+ app_data -> menu_name );
901
897
gtk_dialog_run (GTK_DIALOG (dialog ));
902
898
gtk_widget_destroy (dialog );
903
899
exit (1 ); /* Fixme - is there a MATE/GTK way to do this. */
904
900
}
905
901
906
- for (l = contents ; l ; l = l -> next )
907
- {
902
+ iter = matemenu_tree_directory_iter (root_dir );
903
+ while ((type = matemenu_tree_iter_next (iter )) != MATEMENU_TREE_ITEM_INVALID ) {
904
+ gpointer item ;
908
905
const char * category ;
909
- MateMenuTreeItem * item = l -> data ;
910
-
911
- switch (matemenu_tree_item_get_type (item ))
912
- {
913
- case MATEMENU_TREE_ITEM_DIRECTORY :
914
- category = matemenu_tree_directory_get_name ((MateMenuTreeDirectory * )item );
915
- generate_category (category , (MateMenuTreeDirectory * )item , app_data , TRUE);
916
- break ;
917
- case MATEMENU_TREE_ITEM_ENTRY :
918
- need_misc = TRUE;
919
- break ;
920
- default :
921
- break ;
906
+ switch (type ) {
907
+ case MATEMENU_TREE_ITEM_DIRECTORY :
908
+ item = matemenu_tree_iter_get_directory (iter );
909
+ category = matemenu_tree_directory_get_name (item );
910
+ generate_category (category , item , app_data , TRUE);
911
+ matemenu_tree_item_unref (item );
912
+ break ;
913
+ case MATEMENU_TREE_ITEM_ENTRY :
914
+ need_misc = TRUE;
915
+ break ;
916
+ default :
917
+ break ;
922
918
}
923
-
924
- matemenu_tree_item_unref (item );
925
919
}
926
- g_slist_free ( contents );
920
+ matemenu_tree_iter_unref ( iter );
927
921
928
922
if (need_misc )
929
923
generate_category (_ ("Other" ), root_dir , app_data , FALSE);
@@ -1034,7 +1028,7 @@ generate_launchers (MateMenuTreeDirectory * root_dir, AppShellData * app_data, C
1034
1028
MateMenuTreeIter * iter ;
1035
1029
MateMenuTreeItemType type ;
1036
1030
1037
- iter = matemenu_tree_directory_iter (directory );
1031
+ iter = matemenu_tree_directory_iter (root_dir );
1038
1032
while ((type = matemenu_tree_iter_next (iter )) != MATEMENU_TREE_ITEM_INVALID ) {
1039
1033
gpointer item ;
1040
1034
switch (type ) {
@@ -1075,10 +1069,10 @@ generate_launchers (MateMenuTreeDirectory * root_dir, AppShellData * app_data, C
1075
1069
matemenu_tree_item_unref (item );
1076
1070
break ;
1077
1071
default :
1078
- g_assert_not_reached ();
1079
1072
break ;
1080
1073
}
1081
1074
}
1075
+ matemenu_tree_iter_unref (iter );
1082
1076
}
1083
1077
1084
1078
static void
0 commit comments