mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-08-11 20:36:09 +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;
|
||||
DropControl: TControl = nil;
|
||||
ControlSide: TAlign = alNone;
|
||||
KeepDockSiteSize: Boolean = true): Boolean;
|
||||
KeepDockSiteSize: Boolean = true): Boolean; dynamic;
|
||||
function ManualFloat(TheScreenRect: TRect;
|
||||
KeepDockSiteSize: Boolean = true): Boolean;
|
||||
KeepDockSiteSize: Boolean = true): Boolean; dynamic;
|
||||
function ReplaceDockedControl(Control: TControl; NewDockSite: TWinControl;
|
||||
DropControl: TControl; ControlSide: TAlign): Boolean;
|
||||
function Dragging: Boolean;
|
||||
@ -1561,9 +1561,6 @@ type
|
||||
procedure DoChildSizingChange(Sender: TObject); virtual;
|
||||
procedure ResizeDelayedAutoSizeChildren; virtual;
|
||||
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 CMVisibleChanged(var TheMessage: TLMessage); message CM_VISIBLECHANGED;
|
||||
procedure DoSendShowHideToInterface; virtual;
|
||||
@ -1613,7 +1610,12 @@ type
|
||||
procedure CNSysKeyUp(var Message: TLMKeyUp); message CN_SYSKEYUP;
|
||||
procedure CNChar(var Message: TLMKeyUp); message CN_CHAR;
|
||||
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 DockOver(Source: TDragDockObject; X, Y: Integer;
|
||||
State: TDragState; var Accept: Boolean); dynamic;
|
||||
|
@ -3490,9 +3490,16 @@ function TControl.ManualFloat(TheScreenRect: TRect;
|
||||
var
|
||||
FloatHost: TWinControl;
|
||||
begin
|
||||
// undock from old floating host dock site
|
||||
Result := (HostDockSite=nil)
|
||||
or HostDockSite.DoUndock(nil,Self,KeepDockSiteSize);
|
||||
DebugLn(['TControl.ManualFloat ',DbgSName(Self)]);
|
||||
// undock from old host dock site
|
||||
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.
|
||||
if Result then begin
|
||||
FloatHost := CreateFloatingDockSite(TheScreenRect);
|
||||
|
@ -6996,8 +6996,9 @@ end;
|
||||
function TWinControl.DoUnDockClientMsg(NewTarget, Client: TControl): boolean;
|
||||
begin
|
||||
Result := true;
|
||||
DebugLn(['TWinControl.DoUnDockClientMsg ',DbgSName(Self),' ',DbgSName(Client),' ',DbgSName(Client.Parent)]);
|
||||
if FUseDockManager and (FDockManager <> nil) then
|
||||
FDockManager.RemoveControl(Client)
|
||||
FDockManager.RemoveControl(Client);
|
||||
end;
|
||||
|
||||
{------------------------------------------------------------------------------
|
||||
|
@ -213,8 +213,6 @@ type
|
||||
procedure DeleteDockForm(ADockForm: TLazDockForm);
|
||||
function GetAnchorDepth(AControl: TControl; Side: TAnchorKind): Integer;
|
||||
function GetPreferredTitlePosition(AWidth, AHeight: integer): TAnchorKind;
|
||||
procedure OnLazDockFormDragOver(Sender, Source: TObject; X, Y: Integer;
|
||||
State: TDragState; var Accept: Boolean);
|
||||
public
|
||||
constructor Create;
|
||||
destructor Destroy; override;
|
||||
@ -1521,32 +1519,6 @@ end;
|
||||
|
||||
{ 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;
|
||||
Side: TAnchorKind; NewAnchorControl: TControl);
|
||||
var
|
||||
@ -2591,7 +2563,10 @@ end;
|
||||
function TCustomAnchoredDockManager.CreateForm: TLazDockForm;
|
||||
begin
|
||||
Result:=TLazDockForm.Create(FOwnerComponent);
|
||||
Result.OnDragOver:=@OnLazDockFormDragOver;
|
||||
{$IFDEF EnableAnchorDockManager}
|
||||
Result.DockManager:=Self;
|
||||
Result.UseDockManager:=true;
|
||||
{$ENDIF}
|
||||
end;
|
||||
|
||||
procedure TCustomAnchoredDockManager.ReplaceAnchoredControl(OldControl,
|
||||
|
Loading…
Reference in New Issue
Block a user