mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-13 17:09:13 +02:00
LCL: anchordocking: ManualFloat now calls DoUnDockClientMsg if HostDockSIte=nil and DockManager set
git-svn-id: trunk@14074 -
This commit is contained in:
parent
c2d668eb0c
commit
11e7b203ca
@ -1116,9 +1116,9 @@ type
|
|||||||
function ManualDock(NewDockSite: TWinControl;
|
function ManualDock(NewDockSite: TWinControl;
|
||||||
DropControl: TControl = nil;
|
DropControl: TControl = nil;
|
||||||
ControlSide: TAlign = alNone;
|
ControlSide: TAlign = alNone;
|
||||||
KeepDockSiteSize: Boolean = true): Boolean;
|
KeepDockSiteSize: Boolean = true): Boolean; dynamic;
|
||||||
function ManualFloat(TheScreenRect: TRect;
|
function ManualFloat(TheScreenRect: TRect;
|
||||||
KeepDockSiteSize: Boolean = true): Boolean;
|
KeepDockSiteSize: Boolean = true): Boolean; dynamic;
|
||||||
function ReplaceDockedControl(Control: TControl; NewDockSite: TWinControl;
|
function ReplaceDockedControl(Control: TControl; NewDockSite: TWinControl;
|
||||||
DropControl: TControl; ControlSide: TAlign): Boolean;
|
DropControl: TControl; ControlSide: TAlign): Boolean;
|
||||||
function Dragging: Boolean;
|
function Dragging: Boolean;
|
||||||
@ -1561,9 +1561,6 @@ type
|
|||||||
procedure DoChildSizingChange(Sender: TObject); virtual;
|
procedure DoChildSizingChange(Sender: TObject); virtual;
|
||||||
procedure ResizeDelayedAutoSizeChildren; virtual;
|
procedure ResizeDelayedAutoSizeChildren; virtual;
|
||||||
function CanTab: Boolean; override;
|
function CanTab: Boolean; override;
|
||||||
function DoDragMsg(ADragMessage: TDragMessage; APosition: TPoint; ADragObject: TDragObject; ATarget: TControl; ADocking: Boolean):LRESULT; override;
|
|
||||||
function DoDockClientMsg(DragDockObject: TDragDockObject; Position: TPoint): boolean; virtual;
|
|
||||||
function DoUndockClientMsg(NewTarget, Client: TControl):boolean; virtual;
|
|
||||||
procedure CMShowingChanged(var Message: TLMessage); message CM_SHOWINGCHANGED;
|
procedure CMShowingChanged(var Message: TLMessage); message CM_SHOWINGCHANGED;
|
||||||
procedure CMVisibleChanged(var TheMessage: TLMessage); message CM_VISIBLECHANGED;
|
procedure CMVisibleChanged(var TheMessage: TLMessage); message CM_VISIBLECHANGED;
|
||||||
procedure DoSendShowHideToInterface; virtual;
|
procedure DoSendShowHideToInterface; virtual;
|
||||||
@ -1613,7 +1610,12 @@ type
|
|||||||
procedure CNSysKeyUp(var Message: TLMKeyUp); message CN_SYSKEYUP;
|
procedure CNSysKeyUp(var Message: TLMKeyUp); message CN_SYSKEYUP;
|
||||||
procedure CNChar(var Message: TLMKeyUp); message CN_CHAR;
|
procedure CNChar(var Message: TLMKeyUp); message CN_CHAR;
|
||||||
protected
|
protected
|
||||||
// drag and drop
|
// drag and drop/dock
|
||||||
|
function DoDragMsg(ADragMessage: TDragMessage; APosition: TPoint;
|
||||||
|
ADragObject: TDragObject; ATarget:
|
||||||
|
TControl; ADocking: Boolean): LRESULT; override;
|
||||||
|
function DoDockClientMsg(DragDockObject: TDragDockObject; Position: TPoint): boolean; virtual;
|
||||||
|
function DoUndockClientMsg(NewTarget, Client: TControl):boolean; virtual;
|
||||||
procedure DoAddDockClient(Client: TControl; const ARect: TRect); dynamic;
|
procedure DoAddDockClient(Client: TControl; const ARect: TRect); dynamic;
|
||||||
procedure DockOver(Source: TDragDockObject; X, Y: Integer;
|
procedure DockOver(Source: TDragDockObject; X, Y: Integer;
|
||||||
State: TDragState; var Accept: Boolean); dynamic;
|
State: TDragState; var Accept: Boolean); dynamic;
|
||||||
|
@ -3490,9 +3490,16 @@ function TControl.ManualFloat(TheScreenRect: TRect;
|
|||||||
var
|
var
|
||||||
FloatHost: TWinControl;
|
FloatHost: TWinControl;
|
||||||
begin
|
begin
|
||||||
// undock from old floating host dock site
|
DebugLn(['TControl.ManualFloat ',DbgSName(Self)]);
|
||||||
Result := (HostDockSite=nil)
|
// undock from old host dock site
|
||||||
or HostDockSite.DoUndock(nil,Self,KeepDockSiteSize);
|
if HostDockSite=nil then
|
||||||
|
begin
|
||||||
|
Result := true;
|
||||||
|
if Parent<>nil then
|
||||||
|
Parent.DoUndockClientMsg(nil,Self);
|
||||||
|
end else begin
|
||||||
|
Result := HostDockSite.DoUndock(nil,Self,KeepDockSiteSize);
|
||||||
|
end;
|
||||||
// create new float dock site and dock this control into it.
|
// create new float dock site and dock this control into it.
|
||||||
if Result then begin
|
if Result then begin
|
||||||
FloatHost := CreateFloatingDockSite(TheScreenRect);
|
FloatHost := CreateFloatingDockSite(TheScreenRect);
|
||||||
|
@ -6996,8 +6996,9 @@ end;
|
|||||||
function TWinControl.DoUnDockClientMsg(NewTarget, Client: TControl): boolean;
|
function TWinControl.DoUnDockClientMsg(NewTarget, Client: TControl): boolean;
|
||||||
begin
|
begin
|
||||||
Result := true;
|
Result := true;
|
||||||
|
DebugLn(['TWinControl.DoUnDockClientMsg ',DbgSName(Self),' ',DbgSName(Client),' ',DbgSName(Client.Parent)]);
|
||||||
if FUseDockManager and (FDockManager <> nil) then
|
if FUseDockManager and (FDockManager <> nil) then
|
||||||
FDockManager.RemoveControl(Client)
|
FDockManager.RemoveControl(Client);
|
||||||
end;
|
end;
|
||||||
|
|
||||||
{------------------------------------------------------------------------------
|
{------------------------------------------------------------------------------
|
||||||
|
@ -213,8 +213,6 @@ type
|
|||||||
procedure DeleteDockForm(ADockForm: TLazDockForm);
|
procedure DeleteDockForm(ADockForm: TLazDockForm);
|
||||||
function GetAnchorDepth(AControl: TControl; Side: TAnchorKind): Integer;
|
function GetAnchorDepth(AControl: TControl; Side: TAnchorKind): Integer;
|
||||||
function GetPreferredTitlePosition(AWidth, AHeight: integer): TAnchorKind;
|
function GetPreferredTitlePosition(AWidth, AHeight: integer): TAnchorKind;
|
||||||
procedure OnLazDockFormDragOver(Sender, Source: TObject; X, Y: Integer;
|
|
||||||
State: TDragState; var Accept: Boolean);
|
|
||||||
public
|
public
|
||||||
constructor Create;
|
constructor Create;
|
||||||
destructor Destroy; override;
|
destructor Destroy; override;
|
||||||
@ -1521,32 +1519,6 @@ end;
|
|||||||
|
|
||||||
{ TCustomAnchoredDockManager }
|
{ TCustomAnchoredDockManager }
|
||||||
|
|
||||||
procedure TCustomAnchoredDockManager.OnLazDockFormDragOver(Sender,
|
|
||||||
Source: TObject; X, Y: Integer; State: TDragState; var Accept: Boolean);
|
|
||||||
var
|
|
||||||
Form: TLazDockForm;
|
|
||||||
DragCtrlObj: TDragControlObject;
|
|
||||||
SrcForm: TLazDockForm;
|
|
||||||
begin
|
|
||||||
Accept:=false;
|
|
||||||
//DebugLn(['TCustomAnchoredDockManager.CustomAnchoredDockManagerDragOver ',DbgSName(Sender),' ',DbgSName(Source)]);
|
|
||||||
if not (Sender is TLazDockForm) then exit;
|
|
||||||
Form:=TLazDockForm(Sender);
|
|
||||||
if Form.Owner<>FOwnerComponent then exit;
|
|
||||||
if (Source is TDragControlObject) then
|
|
||||||
begin
|
|
||||||
DragCtrlObj:=TDragControlObject(Source);
|
|
||||||
if DragCtrlObj.Control is TLazDockForm then
|
|
||||||
begin
|
|
||||||
SrcForm:=TLazDockForm(DragCtrlObj.Control);
|
|
||||||
end else
|
|
||||||
exit;
|
|
||||||
if SrcForm.Owner<>FOwnerComponent then exit;
|
|
||||||
end else
|
|
||||||
exit;
|
|
||||||
Accept:=true;
|
|
||||||
end;
|
|
||||||
|
|
||||||
procedure TCustomAnchoredDockManager.DeleteSideSplitter(Splitter: TLazDockSplitter;
|
procedure TCustomAnchoredDockManager.DeleteSideSplitter(Splitter: TLazDockSplitter;
|
||||||
Side: TAnchorKind; NewAnchorControl: TControl);
|
Side: TAnchorKind; NewAnchorControl: TControl);
|
||||||
var
|
var
|
||||||
@ -2591,7 +2563,10 @@ end;
|
|||||||
function TCustomAnchoredDockManager.CreateForm: TLazDockForm;
|
function TCustomAnchoredDockManager.CreateForm: TLazDockForm;
|
||||||
begin
|
begin
|
||||||
Result:=TLazDockForm.Create(FOwnerComponent);
|
Result:=TLazDockForm.Create(FOwnerComponent);
|
||||||
Result.OnDragOver:=@OnLazDockFormDragOver;
|
{$IFDEF EnableAnchorDockManager}
|
||||||
|
Result.DockManager:=Self;
|
||||||
|
Result.UseDockManager:=true;
|
||||||
|
{$ENDIF}
|
||||||
end;
|
end;
|
||||||
|
|
||||||
procedure TCustomAnchoredDockManager.ReplaceAnchoredControl(OldControl,
|
procedure TCustomAnchoredDockManager.ReplaceAnchoredControl(OldControl,
|
||||||
|
Loading…
Reference in New Issue
Block a user