DBG: Reset, if project changed. issue #18468

git-svn-id: trunk@35229 -
This commit is contained in:
martin 2012-02-07 22:27:24 +00:00
parent 33eb66c116
commit 728880b814
3 changed files with 22 additions and 2 deletions

View File

@ -66,6 +66,7 @@ type
TDebugManager = class(TBaseDebugManager)
procedure DebuggerIdle(Sender: TObject);
function DoProjectClose(Sender: TObject; AProject: TLazProject): TModalResult;
procedure DoProjectModified(Sender: TObject);
private
procedure BreakAutoContinueTimer(Sender: TObject);
@ -708,6 +709,12 @@ begin
FSnapshots.DoDebuggerIdle;
end;
function TDebugManager.DoProjectClose(Sender: TObject; AProject: TLazProject): TModalResult;
begin
ResetDebugger;
Result := mrOK;
end;
procedure TDebugManager.DoProjectModified(Sender: TObject);
begin
if Project1 <> nil then
@ -1597,6 +1604,8 @@ begin
FIsInitializingDebugger:= False;
inherited Create(TheOwner);
LazarusIDE.AddHandlerOnProjectClose(@DoProjectClose);
end;
destructor TDebugManager.Destroy;
@ -1605,6 +1614,7 @@ var
begin
FDestroying := true;
LazarusIDE.RemoveHandlerOnProjectClose(@DoProjectClose);
FreeAndNil(FAutoContinueTimer);
for DialogType := Low(TDebugDialogType) to High(TDebugDialogType) do

View File

@ -3782,6 +3782,8 @@ begin
then exit;
if (DebugBoss.DoStopProject = mrOK) and (ToolStatus = itDebugger) and (rfCloseOnDone in AFlags) then
FWaitForClose := True;
if rfSuccessOnTrigger in AFlags then
exit(true);
end;
end;
Result := ToolStatus = itNone;
@ -4143,7 +4145,7 @@ var
ARecentProject: String;
begin
// stop debugging/compiling/...
if not DoResetToolStatus([rfInteractive]) then exit;
if not DoResetToolStatus([rfInteractive, rfSuccessOnTrigger]) then exit;
// check foreign windows
if not CloseQueryIDEWindows then exit;
@ -10706,6 +10708,8 @@ begin
// close current project first
if Project1<>nil then begin
if not DoResetToolStatus([rfInteractive, rfSuccessOnTrigger]) then exit;
if AskSaveProject(lisDoYouStillWantToCreateTheNewProject,
lisDiscardChangesCreateNewProject)<>mrOK then exit;
@ -11000,6 +11004,8 @@ begin
if ofAddToRecent in Flags then
AddRecentProjectFileToEnvironment(AFileName);
if not DoResetToolStatus([rfInteractive, rfSuccessOnTrigger]) then exit;
// save old project
if AskSaveProject(lisDoYouStillWantToOpenAnotherProject,
lisDiscardChangesAndOpenProject)<>mrOk then exit;
@ -11241,6 +11247,9 @@ begin
{$IFDEF IDE_VERBOSE}
writeln('[TMainIDE.DoCreateProjectForProgram] A ',ProgramBuf.Filename);
{$ENDIF}
if (Project1 <> nil) and (not DoResetToolStatus([rfInteractive, rfSuccessOnTrigger])) then exit;
Result:=DoSaveProjectIfChanged;
if Result=mrAbort then exit;

View File

@ -73,7 +73,8 @@ uses
type
TResetToolFlag = (
rfInteractive,
rfCloseOnDone
rfCloseOnDone,
rfSuccessOnTrigger
);
TResetToolFlags = set of TResetToolFlag;