diff --git a/designer/menudesignerbase.pas b/designer/menudesignerbase.pas index b81e6644f1..d4b3439173 100644 --- a/designer/menudesignerbase.pas +++ b/designer/menudesignerbase.pas @@ -241,20 +241,13 @@ end; destructor TMenuDesignerBase.Destroy; begin - if (FShadowMenu <> nil) then begin - FShadowMenu.Parent:=nil; - FreeAndNil(FShadowMenu); - end; + FreeShadowMenu; FreeAndNil(FShortcuts); inherited Destroy; end; procedure TMenuDesignerBase.FreeShadowMenu; begin - if FShadowMenu <> nil then - FShadowMenu.SelectedMenuItem:=nil; - if Assigned(GlobalDesignHook) then - GlobalDesignHook.RemoveAllHandlersForObject(FShadowMenu); FreeAndNil(FShadowMenu); end; diff --git a/designer/menueditor.pp b/designer/menueditor.pp index c6d2752388..940d8bb884 100644 --- a/designer/menueditor.pp +++ b/designer/menueditor.pp @@ -1894,6 +1894,10 @@ end; destructor TShadowMenu.Destroy; begin + Parent := nil; + GlobalDesignHook.RemoveHandlerRefreshPropertyValues(@OnDesignerRefreshPropertyValues); + GlobalDesignHook.RemoveHandlerModified(@OnDesignerModified); + GlobalDesignHook.RemoveHandlerObjectPropertyChanged(@OnObjectPropertyChanged); inherited Destroy; end; diff --git a/designer/menueditorform.pas b/designer/menueditorform.pas index 7b4fb4a39b..437959c1a7 100644 --- a/designer/menueditorform.pas +++ b/designer/menueditorform.pas @@ -568,8 +568,7 @@ begin end else if (aMenu <> FEditedMenu) then begin - FDesigner.ShadowMenu.Free; - FDesigner.ShadowMenu := Nil; + FDesigner.FreeShadowMenu; FEditedMenu := aMenu; selection := aMenuItem; end;