From 641c3a73f0d7bda4b9c98460f10f5cc034647d6c Mon Sep 17 00:00:00 2001 From: Juha Date: Wed, 17 Nov 2021 17:24:17 +0200 Subject: [PATCH] Designer: Name Menu separators as "SeparatorX" to make name clashes less likely. Issue #39471. --- components/ideintf/propedits.pp | 2 +- designer/menueditor.pp | 15 ++++++++++----- 2 files changed, 11 insertions(+), 6 deletions(-) diff --git a/components/ideintf/propedits.pp b/components/ideintf/propedits.pp index 0246e5bceb..9cc1231418 100644 --- a/components/ideintf/propedits.pp +++ b/components/ideintf/propedits.pp @@ -5994,7 +5994,7 @@ begin begin Designer:=FindRootDesigner(MI); if Designer<>nil then - MI.Name:=Designer.UniqueName('N'); + MI.Name:=Designer.UniqueName('Separator'); end; end; SetStrValue(NewValue); diff --git a/designer/menueditor.pp b/designer/menueditor.pp index 994e888da9..fdac3c0843 100644 --- a/designer/menueditor.pp +++ b/designer/menueditor.pp @@ -724,7 +724,7 @@ begin begin FEditedMenuItem.Caption:=s; if (s = cLineCaption) and AnsiStartsStr('MenuItem', FEditedMenuItem.Name) then - FEditedMenuItem.Name:=FEditorDesigner.CreateUniqueComponentName('N'); + FEditedMenuItem.Name:=FEditorDesigner.CreateUniqueComponentName('Separator'); GlobalDesignHook.RefreshPropertyValues; GlobalDesignHook.Modified(FEditedMenuItem); EditedShadow.Invalidate; @@ -1971,17 +1971,22 @@ procedure TShadowBox.AddItemAndShadow(existingSI: TShadowItem; var idx: integer; newMI: TMenuItem; + nm: string; begin FShadowMenu.HideFakes; idx:=existingSI.RealItem.MenuIndex; if not addBefore then Inc(idx); newMI:=TMenuItem.Create(FShadowMenu.LookupRoot); - newMI.Name:=FShadowMenu.FEditorDesigner.CreateUniqueComponentName(newMI.ClassName); - if isSeparator then - newMI.Caption:=cLineCaption - else + if isSeparator then begin + nm:='Separator'; + newMI.Caption:=cLineCaption; + end + else begin + nm:=newMI.ClassName; newMI.Caption:=newMI.Name; + end; + newMI.Name:=FShadowMenu.FEditorDesigner.CreateUniqueComponentName(nm); existingSI.RealItem.Parent.Insert(idx, newMI); TShadowItem.CreateWithBoxAndItem(FShadowMenu, existingSI.ParentBox, newMI); FShadowMenu.UpdateBoxLocationsAndSizes;