mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-18 10:29:39 +02:00
IDE: menu editor: fixed dangling string pointer from Paul
git-svn-id: trunk@10923 -
This commit is contained in:
parent
a30c44a863
commit
ec69c5a124
@ -103,6 +103,7 @@ type
|
||||
function GetDesigner: TComponentEditorDesigner;
|
||||
protected
|
||||
procedure PersistentDeleting(APersistent: TPersistent);
|
||||
function SearchItemByPanel(DesignerMenuItem: PDesignerMenuItem; APanel: TPanel): PDesignerMenuItem;
|
||||
public
|
||||
// Constructor and destructor
|
||||
constructor CreateWithMenu(aOwner: TComponent; aMenu: TMenu);
|
||||
@ -740,30 +741,31 @@ end;
|
||||
// -------------------------------------------------------------------------------------------------------------------//
|
||||
procedure TDesignerMainMenu.MenuItemMouseDown(Sender: TObject;
|
||||
Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
|
||||
var
|
||||
DesignerItem: PDesignerMenuItem;
|
||||
begin
|
||||
ChangeMenuItem(Root,2,Root^.ID);
|
||||
InitIndexSequence;
|
||||
if (Sender is TPanel) then
|
||||
begin
|
||||
SelectedDesignerMenuItem:=TPanel(Sender).Name;
|
||||
ChangeMenuItem(Root, 1, TPanel(Sender).Name);
|
||||
CreateIndexSequence(Root, TPanel(Sender).Name, 1);
|
||||
end;
|
||||
DesignerItem := SearchItemByPanel(Root, TPanel(Sender))
|
||||
else
|
||||
if (Sender is TLabel) then
|
||||
begin
|
||||
SelectedDesignerMenuItem:=TLabel(Sender).Parent.Name;
|
||||
ChangeMenuItem(Root, 1, TLabel(Sender).Parent.Name);
|
||||
CreateIndexSequence(Root, TLabel(Sender).Parent.Name, 1);
|
||||
end;
|
||||
DesignerItem := SearchItemByPanel(Root, TPanel(TLabel(Sender).Parent))
|
||||
else
|
||||
if (Sender is TArrow) then
|
||||
begin
|
||||
SelectedDesignerMenuItem:=TArrow(Sender).Parent.Name;
|
||||
ChangeMenuItem(Root, 1, TArrow(Sender).Parent.Name);
|
||||
CreateIndexSequence(Root, TArrow(Sender).Parent.Name, 1);
|
||||
end;
|
||||
DesignerItem := SearchItemByPanel(Root, TPanel(TArrow(Sender).Parent))
|
||||
else
|
||||
DesignerItem := nil;
|
||||
|
||||
Parent.Invalidate;
|
||||
UpdateMenu(fMenu.Items, GetDesignerMenuItem(Root, SelectedDesignerMenuItem), 1, 9);
|
||||
if DesignerItem <> nil then
|
||||
begin
|
||||
SelectedDesignerMenuItem := DesignerItem^.ID;
|
||||
ChangeMenuItem(Root, 1, SelectedDesignerMenuItem);
|
||||
CreateIndexSequence(Root, SelectedDesignerMenuItem, 1);
|
||||
|
||||
Parent.Invalidate;
|
||||
UpdateMenu(fMenu.Items, GetDesignerMenuItem(Root, SelectedDesignerMenuItem), 1, 9);
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure TDesignerMainMenu.MenuItemDblClick(Sender: TObject);
|
||||
@ -879,6 +881,24 @@ begin
|
||||
inherited;
|
||||
end;
|
||||
|
||||
function TDesignerMainMenu.SearchItemByPanel(
|
||||
DesignerMenuItem: PDesignerMenuItem; APanel: TPanel): PDesignerMenuItem;
|
||||
begin
|
||||
if DesignerMenuItem <> nil then
|
||||
begin
|
||||
if DesignerMenuItem^.SelfPanel = APanel then
|
||||
begin
|
||||
Result := DesignerMenuItem;
|
||||
end else
|
||||
begin
|
||||
Result := SearchItemByPanel(DesignerMenuItem^.SubMenu, APanel);
|
||||
if Result = nil then
|
||||
Result := SearchItemByPanel(DesignerMenuItem^.NextItem, APanel);
|
||||
end;
|
||||
end else
|
||||
Result := nil;
|
||||
end;
|
||||
|
||||
// -----------------------------------------------------------------//
|
||||
// Insert From Template has been selected from context menu --------//
|
||||
// -----------------------------------------------------------------//
|
||||
|
Loading…
Reference in New Issue
Block a user