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:
skalogryz
2010-04-19 04:50:00 +00:00
parent 599991c430
commit f92a70d366

View File

@ -96,8 +96,13 @@ begin
if not (Assigned(SourceEditorManagerIntf) and Assigned(SourceEditorManagerIntf.ActiveSourceWindow))
or not Assigned(IDEMessagesWindow)
then Exit;
if not Assigned(panel) then
AllocControls(SourceEditorManagerIntf.ActiveSourceWindow);
if panel.Parent <> SourceEditorManagerIntf.ActiveSourceWindow then
panel.Parent:=SourceEditorManagerIntf.ActiveSourceWindow;
split.visible:=true;
panel.visible:=true;
with IDEMessagesWindow do
@ -217,7 +222,7 @@ end;
procedure TManualDocker.SourceWindowCreated(Sender: TObject);
begin
if Assigned(FCurrentSrcWin) or (SourceEditorManagerIntf.SourceWindowCount > 1) then
exit;
Exit;
if MsgWnd.Docked then
ChangeDocking(true);
end;
@ -225,17 +230,21 @@ end;
procedure TManualDocker.SourceWindowDestroyed(Sender: TObject);
var
IsDocked: Boolean;
i : Integer;
begin
IsDocked := MsgWnd.docked;
if FCurrentSrcWin <> Sender then exit;
if FCurrentSrcWin <> Sender then Exit;
if IsDocked then ChangeDocking(False);
DeallocControls;
FCurrentSrcWin := nil;
if IsDocked then begin
if (SourceEditorManagerIntf.SourceWindowCount >= 1) then
for i:=0 to SourceEditorManagerIntf.SourceWindowCount-1 do
if SourceEditorManagerIntf.SourceWindows[i]<>Sender then begin
// any window is dockable!
ChangeDocking(True);
MsgWnd.Docked := IsDocked;
Break;
end;
end;
end;