mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-19 22:29:25 +02:00
fixed menu editor deleting items
git-svn-id: trunk@7642 -
This commit is contained in:
parent
2901f22b92
commit
3a45cb4d8d
@ -1837,13 +1837,14 @@ begin
|
||||
end else
|
||||
UpdateMenu(MenuItem.Items[index_sequence[Ind]], DesignerMenuItem, Ind + 1, TheAction)
|
||||
end;
|
||||
// Deletes an MenuItem
|
||||
// Deletes a MenuItem
|
||||
7: begin
|
||||
if (index_sequence[Ind + 1] = -1) then
|
||||
begin
|
||||
//MenuItem.Remove(MenuItem[index_sequence[Ind]]);
|
||||
GlobalDesignHook.PersistentDeleting(MenuItem[index_sequence[Ind]]);
|
||||
MenuItem[index_sequence[Ind]].Free;
|
||||
temp_menuitem:=MenuItem[index_sequence[Ind]];
|
||||
GlobalDesignHook.DeletePersistent(temp_menuitem);
|
||||
//MenuItem[index_sequence[Ind]].Free;
|
||||
end else
|
||||
UpdateMenu(MenuItem.Items[index_sequence[Ind]], DesignerMenuItem, Ind + 1, TheAction)
|
||||
end;
|
||||
@ -1853,8 +1854,9 @@ begin
|
||||
begin
|
||||
for i := MenuItem[index_sequence[Ind]].Count - 1 downto 0 do
|
||||
begin
|
||||
GlobalDesignHook.PersistentDeleting(MenuItem[index_sequence[Ind]].Items[i]);
|
||||
MenuItem[index_sequence[Ind]].Delete(i);
|
||||
temp_menuitem:=MenuItem[index_sequence[Ind]].Items[i];
|
||||
GlobalDesignHook.DeletePersistent(temp_menuitem);
|
||||
//MenuItem[index_sequence[Ind]].Delete(i);
|
||||
//MenuItem[index_sequence[Ind]].Items.Free
|
||||
end;
|
||||
end else
|
||||
|
@ -5359,6 +5359,7 @@ begin
|
||||
end;
|
||||
|
||||
procedure TPropertyEditorHook.PersistentDeleting(APersistent: TPersistent);
|
||||
// call this to tell all IDE parts to remove all references from the APersistent
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
@ -5368,13 +5369,15 @@ begin
|
||||
end;
|
||||
|
||||
procedure TPropertyEditorHook.DeletePersistent(var APersistent: TPersistent);
|
||||
// Call this to actually free APersistent
|
||||
// One of the hooks will free it.
|
||||
var
|
||||
i: Integer;
|
||||
begin
|
||||
if APersistent=nil then exit;
|
||||
i:=GetHandlerCount(htDeletePersistent);
|
||||
if i>0 then begin
|
||||
while GetNextHandlerIndex(htDeletePersistent,i) do
|
||||
while (APersistent<>nil) and GetNextHandlerIndex(htDeletePersistent,i) do
|
||||
TPropHookDeletePersistent(FHandlers[htDeletePersistent][i])(APersistent);
|
||||
end else
|
||||
FreeThenNil(APersistent);
|
||||
|
@ -176,6 +176,7 @@ var
|
||||
i : integer;
|
||||
HandlerType: TMenuItemHandlerType;
|
||||
begin
|
||||
//debugln('TMenuItem.Destroy A ',dbgsName(Self));
|
||||
i:=FMenuItemHandlers[mihtDestroy].Count;
|
||||
while FMenuItemHandlers[mihtDestroy].NextDownIndex(i) do
|
||||
TNotifyEvent(FMenuItemHandlers[mihtDestroy][i])(Self);
|
||||
@ -197,6 +198,7 @@ begin
|
||||
if FParent<>nil then
|
||||
FParent.FItems.Remove(Self);
|
||||
if FCommand <> 0 then CommandPool[FCommand] := False;
|
||||
//debugln('TMenuItem.Destroy B ',dbgsName(Self));
|
||||
inherited Destroy;
|
||||
end;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user