From b066b0812296f2f137511d231d9a11e0e30287f7 Mon Sep 17 00:00:00 2001 From: zeljan1 Date: Wed, 9 Apr 2025 09:18:15 +0200 Subject: [PATCH] Qt,Qt5,Qt6: fixed menuitem radio items behaviour. issue #41577 --- lcl/interfaces/qt/qtwidgets.pas | 2 +- lcl/interfaces/qt/qtwsmenus.pp | 8 -------- lcl/interfaces/qt5/qtwidgets.pas | 2 +- lcl/interfaces/qt5/qtwsmenus.pp | 8 -------- lcl/interfaces/qt6/qtwidgets.pas | 2 +- lcl/interfaces/qt6/qtwsmenus.pp | 8 -------- 6 files changed, 3 insertions(+), 27 deletions(-) diff --git a/lcl/interfaces/qt/qtwidgets.pas b/lcl/interfaces/qt/qtwidgets.pas index ef6872d300..19fde72e5a 100644 --- a/lcl/interfaces/qt/qtwidgets.pas +++ b/lcl/interfaces/qt/qtwidgets.pas @@ -16165,7 +16165,7 @@ begin for i := 0 to FActions.Count - 1 do begin Group := TQtActionGroup(FActions.Items[i]); - if Group.GroupIndex = AItem.GroupIndex then + if (Group.GroupIndex = AItem.GroupIndex) and (Group.Exclusive = AItem.RadioItem) then begin QAction_setEnabled(TQtMenu(AItem.Handle).actionHandle, AItem.Enabled); QAction_setVisible(TQtMenu(AItem.Handle).actionHandle, AItem.Visible); diff --git a/lcl/interfaces/qt/qtwsmenus.pp b/lcl/interfaces/qt/qtwsmenus.pp index 62c46829dc..13aea89537 100644 --- a/lcl/interfaces/qt/qtwsmenus.pp +++ b/lcl/interfaces/qt/qtwsmenus.pp @@ -115,14 +115,6 @@ begin begin Result.setText(AMenuItem.Caption{%H-}); Result.setEnabled(AMenuItem.Enabled); - - {issue #37741} - if AMenuItem.RadioItem and (AMenuItem.Count = 0) and (AMenuItem.GroupIndex = 0) then - begin - if AMenuItem.GroupIndex = 0 then - AMenuItem.GroupIndex := 1; - end; - Result.setCheckable(AMenuItem.RadioItem or AMenuItem.ShowAlwaysCheckable); Result.BeginUpdate; Result.setChecked(AMenuItem.Checked); diff --git a/lcl/interfaces/qt5/qtwidgets.pas b/lcl/interfaces/qt5/qtwidgets.pas index 840a8d71a3..93aaa05b6f 100644 --- a/lcl/interfaces/qt5/qtwidgets.pas +++ b/lcl/interfaces/qt5/qtwidgets.pas @@ -16686,7 +16686,7 @@ begin for i := 0 to FActions.Count - 1 do begin Group := TQtActionGroup(FActions.Items[i]); - if Group.GroupIndex = AItem.GroupIndex then + if (Group.GroupIndex = AItem.GroupIndex) and (Group.Exclusive = AItem.RadioItem) then begin QAction_setEnabled(TQtMenu(AItem.Handle).actionHandle, AItem.Enabled); QAction_setVisible(TQtMenu(AItem.Handle).actionHandle, AItem.Visible); diff --git a/lcl/interfaces/qt5/qtwsmenus.pp b/lcl/interfaces/qt5/qtwsmenus.pp index 2a3a83d87b..6d98bc27f9 100644 --- a/lcl/interfaces/qt5/qtwsmenus.pp +++ b/lcl/interfaces/qt5/qtwsmenus.pp @@ -114,14 +114,6 @@ begin begin Result.setText(AMenuItem.Caption{%H-}); Result.setEnabled(AMenuItem.Enabled); - - {issue #37741} - if AMenuItem.RadioItem and (AMenuItem.Count = 0) and (AMenuItem.GroupIndex = 0) then - begin - if AMenuItem.GroupIndex = 0 then - AMenuItem.GroupIndex := 1; - end; - Result.setCheckable(AMenuItem.RadioItem or AMenuItem.ShowAlwaysCheckable); Result.BeginUpdate; Result.setChecked(AMenuItem.Checked); diff --git a/lcl/interfaces/qt6/qtwidgets.pas b/lcl/interfaces/qt6/qtwidgets.pas index 4c9d67f837..6a85de11e6 100644 --- a/lcl/interfaces/qt6/qtwidgets.pas +++ b/lcl/interfaces/qt6/qtwidgets.pas @@ -16595,7 +16595,7 @@ begin for i := 0 to FActions.Count - 1 do begin Group := TQtActionGroup(FActions.Items[i]); - if Group.GroupIndex = AItem.GroupIndex then + if (Group.GroupIndex = AItem.GroupIndex) and (Group.Exclusive = AItem.RadioItem) then begin QAction_setEnabled(TQtMenu(AItem.Handle).actionHandle, AItem.Enabled); QAction_setVisible(TQtMenu(AItem.Handle).actionHandle, AItem.Visible); diff --git a/lcl/interfaces/qt6/qtwsmenus.pp b/lcl/interfaces/qt6/qtwsmenus.pp index 47d50dd9b3..25662795a2 100644 --- a/lcl/interfaces/qt6/qtwsmenus.pp +++ b/lcl/interfaces/qt6/qtwsmenus.pp @@ -114,14 +114,6 @@ begin begin Result.setText(AMenuItem.Caption{%H-}); Result.setEnabled(AMenuItem.Enabled); - - {issue #37741} - if AMenuItem.RadioItem and (AMenuItem.Count = 0) and (AMenuItem.GroupIndex = 0) then - begin - if AMenuItem.GroupIndex = 0 then - AMenuItem.GroupIndex := 1; - end; - Result.setCheckable(AMenuItem.RadioItem or AMenuItem.ShowAlwaysCheckable); Result.BeginUpdate; Result.setChecked(AMenuItem.Checked);