@@ -5725,7 +5725,33 @@ package body Gtkada.MDI is
57255725 (Gtk_Radio_Menu_Item_Record with Child => MDI_Child (Child));
57265726 Gtk.Radio_Menu_Item.Initialize (It, Group, " " );
57275727 Group := It.Get_Group;
5728- Menu.Add (It);
5728+
5729+ -- Insert the new child's menu item in alphabetical order
5730+
5731+ declare
5732+ Children : Widget_List.Glist := Menu.Get_Children;
5733+ Idx : Gint := 0 ;
5734+ Widget : Gtk_Widget;
5735+ Menu_Item : Menu_Item_For_Child;
5736+ begin
5737+ while Children /= Null_List loop
5738+ Widget := Get_Data (Children);
5739+
5740+ if Widget.all in Menu_Item_For_Child_Record'Class then
5741+ Menu_Item := Menu_Item_For_Child (Widget);
5742+
5743+ exit when Short_Title_Less_Than
5744+ (MDI_Child (Child), Menu_Item.Child);
5745+ end if ;
5746+
5747+ Idx := Idx + 1 ;
5748+ Children := Next (Children);
5749+ end loop ;
5750+
5751+ Free (Children);
5752+
5753+ Menu.Insert (It, Idx);
5754+ end ;
57295755
57305756 Internal_Update_Menu_Content (Child, It);
57315757
@@ -5829,8 +5855,9 @@ package body Gtkada.MDI is
58295855 end loop ;
58305856 Free (Children);
58315857
5832- Internal_Add_Child_Menu (Menu, Child, G);
5833-
5858+ if Find_Child_Menu (Menu, Child) = null then
5859+ Internal_Add_Child_Menu (Menu, Child, G);
5860+ end if ;
58345861 end Add_Child_Menu ;
58355862
58365863 -- ---------------------
@@ -6438,6 +6465,7 @@ package body Gtkada.MDI is
64386465 Menu := new MDI_Menu_Record;
64396466 Menu.MDI := MDI_Window (MDI);
64406467 Gtk.Menu.Initialize (Menu);
6468+ Menu.Set_Name (" gtkada-mdi-children-menu" );
64416469
64426470 Item := new MDI_Menu_Item_Record'
64436471 (Gtk_Menu_Item_Record with
@@ -6494,7 +6522,7 @@ package body Gtkada.MDI is
64946522
64956523 Recompute_Menu (Menu);
64966524 MDI.On_Child_Removed (Remove_Child_Menu'Access , Slot => Menu);
6497- MDI.On_Child_Added (Add_Child_Menu'Access , Slot => Menu);
6525+ MDI.On_Child_Title_Changed (Add_Child_Menu'Access , Slot => Menu);
64986526 MDI.On_Child_Icon_Changed (Update_Child_Menu'Access , Slot => Menu);
64996527 MDI.On_Child_Title_Changed (Update_Child_Menu'Access , Slot => Menu);
65006528 Widget_Callback.Object_Connect
0 commit comments