You've already forked lazarus-ccr
manualdock: fix to avoid redocking on the destroyed form
git-svn-id: https://svn.code.sf.net/p/lazarus-ccr/svn@1201 8e941d3f-bd1b-0410-a28a-d453659cc2b4
This commit is contained in:
@ -90,14 +90,19 @@ end;
|
|||||||
|
|
||||||
procedure TManualDocker.ChangeDocking(DockingEnabled: Boolean);
|
procedure TManualDocker.ChangeDocking(DockingEnabled: Boolean);
|
||||||
var
|
var
|
||||||
i : Integer;
|
i : Integer;
|
||||||
begin
|
begin
|
||||||
if DockingEnabled then begin
|
if DockingEnabled then begin
|
||||||
if not (Assigned(SourceEditorManagerIntf) and Assigned(SourceEditorManagerIntf.ActiveSourceWindow))
|
if not (Assigned(SourceEditorManagerIntf) and Assigned(SourceEditorManagerIntf.ActiveSourceWindow))
|
||||||
or not Assigned(IDEMessagesWindow)
|
or not Assigned(IDEMessagesWindow)
|
||||||
then Exit;
|
then Exit;
|
||||||
|
|
||||||
if not Assigned(panel) then
|
if not Assigned(panel) then
|
||||||
AllocControls(SourceEditorManagerIntf.ActiveSourceWindow);
|
AllocControls(SourceEditorManagerIntf.ActiveSourceWindow);
|
||||||
|
|
||||||
|
if panel.Parent <> SourceEditorManagerIntf.ActiveSourceWindow then
|
||||||
|
panel.Parent:=SourceEditorManagerIntf.ActiveSourceWindow;
|
||||||
|
|
||||||
split.visible:=true;
|
split.visible:=true;
|
||||||
panel.visible:=true;
|
panel.visible:=true;
|
||||||
with IDEMessagesWindow do
|
with IDEMessagesWindow do
|
||||||
@ -217,7 +222,7 @@ end;
|
|||||||
procedure TManualDocker.SourceWindowCreated(Sender: TObject);
|
procedure TManualDocker.SourceWindowCreated(Sender: TObject);
|
||||||
begin
|
begin
|
||||||
if Assigned(FCurrentSrcWin) or (SourceEditorManagerIntf.SourceWindowCount > 1) then
|
if Assigned(FCurrentSrcWin) or (SourceEditorManagerIntf.SourceWindowCount > 1) then
|
||||||
exit;
|
Exit;
|
||||||
if MsgWnd.Docked then
|
if MsgWnd.Docked then
|
||||||
ChangeDocking(true);
|
ChangeDocking(true);
|
||||||
end;
|
end;
|
||||||
@ -225,17 +230,21 @@ end;
|
|||||||
procedure TManualDocker.SourceWindowDestroyed(Sender: TObject);
|
procedure TManualDocker.SourceWindowDestroyed(Sender: TObject);
|
||||||
var
|
var
|
||||||
IsDocked: Boolean;
|
IsDocked: Boolean;
|
||||||
|
i : Integer;
|
||||||
begin
|
begin
|
||||||
IsDocked := MsgWnd.docked;
|
IsDocked := MsgWnd.docked;
|
||||||
if FCurrentSrcWin <> Sender then exit;
|
if FCurrentSrcWin <> Sender then Exit;
|
||||||
if IsDocked then ChangeDocking(False);
|
if IsDocked then ChangeDocking(False);
|
||||||
DeallocControls;
|
DeallocControls;
|
||||||
FCurrentSrcWin := nil;
|
FCurrentSrcWin := nil;
|
||||||
|
|
||||||
if IsDocked then begin
|
if IsDocked then begin
|
||||||
if (SourceEditorManagerIntf.SourceWindowCount >= 1) then
|
for i:=0 to SourceEditorManagerIntf.SourceWindowCount-1 do
|
||||||
ChangeDocking(True);
|
if SourceEditorManagerIntf.SourceWindows[i]<>Sender then begin
|
||||||
MsgWnd.Docked := IsDocked;
|
// any window is dockable!
|
||||||
|
ChangeDocking(True);
|
||||||
|
Break;
|
||||||
|
end;
|
||||||
end;
|
end;
|
||||||
end;
|
end;
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user