mirror of
https://gitlab.com/freepascal.org/lazarus/lazarus.git
synced 2025-04-09 21:48:19 +02:00
LCL: Enable floating toolbar to dock back to original coolbar after undocking from it (patch by Andrey Zubarev), Issue #0032027
git-svn-id: trunk@55447 -
This commit is contained in:
parent
d6695a1eba
commit
73921e08ee
@ -365,6 +365,29 @@ procedure TDockPerformer.DragMove(APosition: TPoint);
|
||||
ARect: TRect;
|
||||
I: Integer;
|
||||
j: Integer;
|
||||
|
||||
function HaveMultiplePotentialDockClient(AControl: TWinControl):boolean;
|
||||
var
|
||||
I,Count:Integer;
|
||||
begin
|
||||
Count := 0;
|
||||
for I := 0 to AControl.ControlCount - 1 do
|
||||
begin
|
||||
if (AControl.Controls[I].DragKind = dkDock) and (AControl.Controls[I].DragMode = dmAutomatic) then
|
||||
inc(Count);
|
||||
if Count > 1 then exit(True);
|
||||
end;
|
||||
Result:=False;
|
||||
end;
|
||||
|
||||
function ItCanBeHostSite:boolean;
|
||||
begin
|
||||
if FDockObject.Control.HostDockSite <> nil then
|
||||
result := (FDockObject.Control.HostDockSite <> AControl) or (AControl.VisibleDockClientCount > 1)
|
||||
else
|
||||
result := (AControl <> FDockObject.Control.Parent) or HaveMultiplePotentialDockClient(AControl);
|
||||
end;
|
||||
|
||||
begin
|
||||
Result := nil;
|
||||
|
||||
@ -383,7 +406,7 @@ procedure TDockPerformer.DragMove(APosition: TPoint);
|
||||
if AControl=FDockObject.Control then continue;
|
||||
if IsControlChildOfClient(AControl) then continue;
|
||||
|
||||
if (FDockObject.Control.HostDockSite <> AControl) or (AControl.VisibleDockClientCount > 1) then
|
||||
if ItCanBeHostSite then
|
||||
begin
|
||||
CanDock := True;
|
||||
AControl.GetSiteInfo(FDockObject.Control, ARect, APosition, CanDock);
|
||||
|
Loading…
Reference in New Issue
Block a user