From ec579d65bc23071a24faf34ec11e89d04720d53a Mon Sep 17 00:00:00 2001 From: juha Date: Sun, 30 Sep 2018 11:32:10 +0000 Subject: [PATCH] LCL-GTK3: Fix menu radio group. Issue #34350, patch from Anton Kavalenka. git-svn-id: trunk@59191 - --- lcl/interfaces/gtk3/gtk3widgets.pas | 21 ++++++++++++++++++++- 1 file changed, 20 insertions(+), 1 deletion(-) diff --git a/lcl/interfaces/gtk3/gtk3widgets.pas b/lcl/interfaces/gtk3/gtk3widgets.pas index 3f52c610f8..c05c6378af 100644 --- a/lcl/interfaces/gtk3/gtk3widgets.pas +++ b/lcl/interfaces/gtk3/gtk3widgets.pas @@ -4293,13 +4293,32 @@ begin end; function TGtk3MenuItem.CreateWidget(const Params: TCreateParams): PGtkWidget; +var + ndx:integer; + pmenu:TMenuItem; + pl:PGsList; begin FWidgetType := [wtWidget, wtMenuItem]; if MenuItem.Caption = cLineCaption then Result := TGtkSeparatorMenuItem.new else if MenuItem.RadioItem and not MenuItem.HasIcon then - Result := TGtkRadioMenuItem.new(nil) + begin + Result := TGtkRadioMenuItem.new(nil); + if Assigned(menuItem.Parent) then + begin + ndx:=menuItem.Parent.IndexOf(MenuItem); + if (ndx>0) then + begin + pMenu:=menuItem.Parent.Items[ndx-1]; + if (MenuItem.GroupIndex>0) and (pMenu.GroupIndex=MenuItem.GroupIndex) then + begin + pl:=PGtkRadioMenuItem(TGtk3MenuItem(pMenu.Handle).Widget)^.get_group; + PGtkRadioMenuItem(Result)^.set_group(pl); + end; + end; + end; + end else if MenuItem.IsCheckItem or MenuItem.HasIcon then Result := TGtkCheckMenuItem.new