Skip to content

Commit ece1314

Browse files
U908-028: Sort alphabetically the Windows menu items
Change-Id: I5ef603ab59f513db8d0f03eefa39d9a09365b169
1 parent 799c279 commit ece1314

File tree

1 file changed

+32
-4
lines changed

1 file changed

+32
-4
lines changed

src/gtkada-mdi.adb

Lines changed: 32 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)