From 9405a3fe6de26e18a2ace4f4c9b63e57542ed777 Mon Sep 17 00:00:00 2001 From: dmitry Date: Fri, 21 Sep 2018 00:57:23 +0000 Subject: [PATCH] cocoa: update attachmenu process, so NSMenu can be added into NSMenuItem as a subitem. #34293 git-svn-id: trunk@59106 - --- lcl/interfaces/cocoa/cocoawsmenus.pas | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) diff --git a/lcl/interfaces/cocoa/cocoawsmenus.pas b/lcl/interfaces/cocoa/cocoawsmenus.pas index 2a732f461e..ae47eab916 100644 --- a/lcl/interfaces/cocoa/cocoawsmenus.pas +++ b/lcl/interfaces/cocoa/cocoawsmenus.pas @@ -455,12 +455,14 @@ var ParObj : NSObject; Parent : TCocoaMenu; item : NSMenuItem; + MenuObj : NSObject; + Menu : NSMenu; begin if not Assigned(AMenuItem) or (AMenuItem.Handle=0) or not Assigned(AMenuItem.Parent) or (AMenuItem.Parent.Handle=0) then Exit; ParObj:=NSObject(AMenuItem.Parent.Handle); item:=NSMenuItem(AMenuItem.Handle); - if ParObj.isKindOfClass_(NSMenuItem) then + if ParObj.isKindOfClass(NSMenuItem) then begin if not NSMenuItem(ParObj).hasSubmenu then begin @@ -470,12 +472,25 @@ begin end else Parent:=TCocoaMenu(NSMenuItem(ParObj).submenu); - end else if ParObj.isKindOfClass_(NSMenu) then + end else if ParObj.isKindOfClass(NSMenu) then Parent:=TCocoaMenu(ParObj) else Exit; - Parent.insertItem_atIndex(item, AMenuItem.MenuVisibleIndex); + item := nil; + MenuObj := NSObject(AMenuItem.Handle); + if MenuObj.isKindOfClass(NSMenuItem) then + item := NSMenuItem(MenuObj) + else if MenuObj.isKindOfClass(NSMenu) then + begin + Menu := NSMenu(MenuObj); + item := NSMenuItem(NSMenuItem.alloc).initWithTitle_action_keyEquivalent( + ControlTitleToNSStr(AMenuItem.Caption), nil, NSString.string_ ); + item.setSubmenu( Menu ); + end; + + if Assigned(item) then + Parent.insertItem_atIndex(NSMenuItem(item), AMenuItem.MenuVisibleIndex) end; {------------------------------------------------------------------------------