mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-07 23:16:01 +02:00
LCL: added TControl.ParentVisibleChanged
git-svn-id: trunk@46184 -
This commit is contained in:
parent
2471a0a5b2
commit
db564054c4
@ -1362,6 +1362,7 @@ type
|
|||||||
function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; virtual;
|
function DoMouseWheelUp(Shift: TShiftState; MousePos: TPoint): Boolean; virtual;
|
||||||
procedure VisibleChanging; virtual;
|
procedure VisibleChanging; virtual;
|
||||||
procedure VisibleChanged; virtual;
|
procedure VisibleChanged; virtual;
|
||||||
|
procedure ParentVisibleChanged(aParent: TWinControl); virtual;
|
||||||
procedure EnabledChanging; virtual;
|
procedure EnabledChanging; virtual;
|
||||||
procedure EnabledChanged; virtual;
|
procedure EnabledChanged; virtual;
|
||||||
procedure AddHandler(HandlerType: TControlHandlerType;
|
procedure AddHandler(HandlerType: TControlHandlerType;
|
||||||
@ -1914,6 +1915,7 @@ type
|
|||||||
procedure Remove(AControl: TControl);
|
procedure Remove(AControl: TControl);
|
||||||
procedure AlignNonAlignedControls(ListOfControls: TFPList;
|
procedure AlignNonAlignedControls(ListOfControls: TFPList;
|
||||||
var BoundsModified: Boolean);
|
var BoundsModified: Boolean);
|
||||||
|
procedure PropagateParentVisibleChanged(aParent: TWinControl);
|
||||||
protected
|
protected
|
||||||
FWinControlFlags: TWinControlFlags;
|
FWinControlFlags: TWinControlFlags;
|
||||||
class procedure WSRegisterClass; override;
|
class procedure WSRegisterClass; override;
|
||||||
@ -2074,6 +2076,7 @@ type
|
|||||||
procedure ShowControl(AControl: TControl); virtual;
|
procedure ShowControl(AControl: TControl); virtual;
|
||||||
procedure UpdateControlState;
|
procedure UpdateControlState;
|
||||||
procedure UpdateShowing; virtual; // checks control's handle visibility, called by DoAllAutoSize and UpdateControlState
|
procedure UpdateShowing; virtual; // checks control's handle visibility, called by DoAllAutoSize and UpdateControlState
|
||||||
|
procedure ParentVisibleChanged(aParent: TWinControl); override;
|
||||||
procedure WndProc(var Message: TLMessage); override;
|
procedure WndProc(var Message: TLMessage); override;
|
||||||
procedure WSSetText(const AText: String); virtual;
|
procedure WSSetText(const AText: String); virtual;
|
||||||
protected
|
protected
|
||||||
|
@ -1805,6 +1805,15 @@ begin
|
|||||||
DoCallNotifyHandler(chtOnVisibleChanged);
|
DoCallNotifyHandler(chtOnVisibleChanged);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TControl.ParentVisibleChanged(aParent: TWinControl);
|
||||||
|
// called when a Parent (or grand parent) Visible property changed
|
||||||
|
// and all parents in between have Visible=true
|
||||||
|
// In other words: called when this control visibility changed due to
|
||||||
|
// visibility change of Parent.
|
||||||
|
begin
|
||||||
|
|
||||||
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
procedure TControl.EnabledChanging;
|
procedure TControl.EnabledChanging;
|
||||||
------------------------------------------------------------------------------}
|
------------------------------------------------------------------------------}
|
||||||
@ -4270,7 +4279,7 @@ begin
|
|||||||
AdjustSize;
|
AdjustSize;
|
||||||
if (not Visible) and Assigned(Parent) then
|
if (not Visible) and Assigned(Parent) then
|
||||||
begin
|
begin
|
||||||
// control became invisible, so AdjustSize was not propagated
|
// control became invisible, so AdjustSize was not propagated to Parent
|
||||||
// => propagate now
|
// => propagate now
|
||||||
Parent.InvalidatePreferredSize;
|
Parent.InvalidatePreferredSize;
|
||||||
Parent.AdjustSize;
|
Parent.AdjustSize;
|
||||||
|
@ -4340,6 +4340,12 @@ begin
|
|||||||
ChangeShowing(bShow);
|
ChangeShowing(bShow);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TWinControl.ParentVisibleChanged(aParent: TWinControl);
|
||||||
|
begin
|
||||||
|
inherited ParentVisibleChanged(aParent);
|
||||||
|
PropagateParentVisibleChanged(aParent);
|
||||||
|
end;
|
||||||
|
|
||||||
procedure TWinControl.Update;
|
procedure TWinControl.Update;
|
||||||
begin
|
begin
|
||||||
if HandleAllocated then UpdateWindow(Handle);
|
if HandleAllocated then UpdateWindow(Handle);
|
||||||
@ -6136,6 +6142,22 @@ begin
|
|||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
procedure TWinControl.PropagateParentVisibleChanged(aParent: TWinControl);
|
||||||
|
var
|
||||||
|
i: Integer;
|
||||||
|
aControl: TControl;
|
||||||
|
begin
|
||||||
|
for i:=0 to ControlCount-1 do
|
||||||
|
begin
|
||||||
|
aControl:=Controls[i];
|
||||||
|
if not aControl.Visible then
|
||||||
|
continue;
|
||||||
|
ParentVisibleChanged(aParent);
|
||||||
|
if aControl is TWinControl then
|
||||||
|
TWinControl(aControl).PropagateParentVisibleChanged(aParent);
|
||||||
|
end;
|
||||||
|
end;
|
||||||
|
|
||||||
class procedure TWinControl.WSRegisterClass;
|
class procedure TWinControl.WSRegisterClass;
|
||||||
begin
|
begin
|
||||||
inherited WSRegisterClass;
|
inherited WSRegisterClass;
|
||||||
|
@ -224,7 +224,7 @@ const
|
|||||||
LM_CLEAR = $0303;
|
LM_CLEAR = $0303;
|
||||||
|
|
||||||
const
|
const
|
||||||
// Moved from Controls to avoid circles
|
// Moved from Controls to avoid circular dependencies
|
||||||
CM_BASE = $B000;
|
CM_BASE = $B000;
|
||||||
CM_LCLOFFSET = $100;
|
CM_LCLOFFSET = $100;
|
||||||
CM_ACTIVATE = CM_BASE + 0;
|
CM_ACTIVATE = CM_BASE + 0;
|
||||||
|
Loading…
Reference in New Issue
Block a user