IDE: menu editor: fixed dangling string pointer from Paul

git-svn-id: trunk@10923 -
This commit is contained in:
mattias 2007-04-09 07:36:05 +00:00
parent a30c44a863
commit ec69c5a124

View File

@ -103,6 +103,7 @@ type
function GetDesigner: TComponentEditorDesigner; function GetDesigner: TComponentEditorDesigner;
protected protected
procedure PersistentDeleting(APersistent: TPersistent); procedure PersistentDeleting(APersistent: TPersistent);
function SearchItemByPanel(DesignerMenuItem: PDesignerMenuItem; APanel: TPanel): PDesignerMenuItem;
public public
// Constructor and destructor // Constructor and destructor
constructor CreateWithMenu(aOwner: TComponent; aMenu: TMenu); constructor CreateWithMenu(aOwner: TComponent; aMenu: TMenu);
@ -740,30 +741,31 @@ end;
// -------------------------------------------------------------------------------------------------------------------// // -------------------------------------------------------------------------------------------------------------------//
procedure TDesignerMainMenu.MenuItemMouseDown(Sender: TObject; procedure TDesignerMainMenu.MenuItemMouseDown(Sender: TObject;
Button: TMouseButton; Shift: TShiftState; X, Y: Integer); Button: TMouseButton; Shift: TShiftState; X, Y: Integer);
var
DesignerItem: PDesignerMenuItem;
begin begin
ChangeMenuItem(Root,2,Root^.ID); ChangeMenuItem(Root,2,Root^.ID);
InitIndexSequence; InitIndexSequence;
if (Sender is TPanel) then if (Sender is TPanel) then
begin DesignerItem := SearchItemByPanel(Root, TPanel(Sender))
SelectedDesignerMenuItem:=TPanel(Sender).Name; else
ChangeMenuItem(Root, 1, TPanel(Sender).Name);
CreateIndexSequence(Root, TPanel(Sender).Name, 1);
end;
if (Sender is TLabel) then if (Sender is TLabel) then
begin DesignerItem := SearchItemByPanel(Root, TPanel(TLabel(Sender).Parent))
SelectedDesignerMenuItem:=TLabel(Sender).Parent.Name; else
ChangeMenuItem(Root, 1, TLabel(Sender).Parent.Name);
CreateIndexSequence(Root, TLabel(Sender).Parent.Name, 1);
end;
if (Sender is TArrow) then if (Sender is TArrow) then
begin DesignerItem := SearchItemByPanel(Root, TPanel(TArrow(Sender).Parent))
SelectedDesignerMenuItem:=TArrow(Sender).Parent.Name; else
ChangeMenuItem(Root, 1, TArrow(Sender).Parent.Name); DesignerItem := nil;
CreateIndexSequence(Root, TArrow(Sender).Parent.Name, 1);
end;
Parent.Invalidate; if DesignerItem <> nil then
UpdateMenu(fMenu.Items, GetDesignerMenuItem(Root, SelectedDesignerMenuItem), 1, 9); begin
SelectedDesignerMenuItem := DesignerItem^.ID;
ChangeMenuItem(Root, 1, SelectedDesignerMenuItem);
CreateIndexSequence(Root, SelectedDesignerMenuItem, 1);
Parent.Invalidate;
UpdateMenu(fMenu.Items, GetDesignerMenuItem(Root, SelectedDesignerMenuItem), 1, 9);
end;
end; end;
procedure TDesignerMainMenu.MenuItemDblClick(Sender: TObject); procedure TDesignerMainMenu.MenuItemDblClick(Sender: TObject);
@ -879,6 +881,24 @@ begin
inherited; inherited;
end; 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 --------// // Insert From Template has been selected from context menu --------//
// -----------------------------------------------------------------// // -----------------------------------------------------------------//