mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-05 06:18:23 +02:00
lcl: check children handles on menu item LM_ACTIVATE message (fixes win32 part of issue #0014144)
git-svn-id: trunk@20859 -
This commit is contained in:
parent
c01c5e7c6f
commit
b5301d1c72
@ -119,21 +119,12 @@ end;
|
|||||||
Creates the handle ( = object).
|
Creates the handle ( = object).
|
||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
procedure TMenuItem.CreateHandle;
|
procedure TMenuItem.CreateHandle;
|
||||||
var
|
|
||||||
i: Integer;
|
|
||||||
begin
|
begin
|
||||||
//DebugLn('TMenuItem.CreateHandle ',dbgsName(Self),' ',dbgs(Self));
|
//DebugLn('TMenuItem.CreateHandle ',dbgsName(Self),' ',dbgs(Self));
|
||||||
//DebugLn('TMenuItem.CreateHandle START ',Name,':',ClassName);
|
//DebugLn('TMenuItem.CreateHandle START ',Name,':',ClassName);
|
||||||
if not FVisible then RaiseGDBException('');
|
if not FVisible then RaiseGDBException('');
|
||||||
Handle := TWSMenuItemClass(WidgetSetClass).CreateHandle(Self);
|
Handle := TWSMenuItemClass(WidgetSetClass).CreateHandle(Self);
|
||||||
if FItems <> nil then
|
CheckChildrenHandles;
|
||||||
begin
|
|
||||||
for i := 0 to Count - 1 do
|
|
||||||
begin
|
|
||||||
if Items[i].Visible then
|
|
||||||
Items[i].HandleNeeded;
|
|
||||||
end;
|
|
||||||
end;
|
|
||||||
|
|
||||||
if Parent <> nil then
|
if Parent <> nil then
|
||||||
begin
|
begin
|
||||||
@ -264,6 +255,7 @@ end;
|
|||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
procedure TMenuItem.DoClicked(var msg);
|
procedure TMenuItem.DoClicked(var msg);
|
||||||
begin
|
begin
|
||||||
|
CheckChildrenHandles;
|
||||||
if not (csDesigning in ComponentState) then
|
if not (csDesigning in ComponentState) then
|
||||||
begin
|
begin
|
||||||
InitiateActions;
|
InitiateActions;
|
||||||
@ -274,6 +266,20 @@ begin
|
|||||||
DesignerMenuItemClick(Self);
|
DesignerMenuItemClick(Self);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TMenuItem.CheckChildrenHandles;
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
begin
|
||||||
|
if FItems <> nil then
|
||||||
|
begin
|
||||||
|
for i := 0 to Count - 1 do
|
||||||
|
begin
|
||||||
|
if Items[i].Visible then
|
||||||
|
Items[i].HandleNeeded;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TMenuItem.IntfDoSelect;
|
procedure TMenuItem.IntfDoSelect;
|
||||||
begin
|
begin
|
||||||
Application.Hint := GetLongHint(Hint);
|
Application.Hint := GetLongHint(Hint);
|
||||||
|
@ -176,6 +176,7 @@ type
|
|||||||
function GetActionLinkClass: TMenuActionLinkClass; dynamic;
|
function GetActionLinkClass: TMenuActionLinkClass; dynamic;
|
||||||
function GetHandle: HMenu;
|
function GetHandle: HMenu;
|
||||||
procedure DoClicked(var msg); message LM_ACTIVATE;
|
procedure DoClicked(var msg); message LM_ACTIVATE;
|
||||||
|
procedure CheckChildrenHandles;
|
||||||
procedure CreateHandle; virtual;
|
procedure CreateHandle; virtual;
|
||||||
procedure DestroyHandle; virtual;
|
procedure DestroyHandle; virtual;
|
||||||
procedure Loaded; override;
|
procedure Loaded; override;
|
||||||
|
Loading…
Reference in New Issue
Block a user