Commit 3891ed97 authored by con's avatar con

Don't close modified files or the current file at end of debug session

Acked-by: hjk
parent 62d5cae0
......@@ -33,6 +33,7 @@
#include "debuggerplugin.h"
#include "debuggerstringutils.h"
#include "stackframe.h"
#include "debuggerconstants.h"
#include <coreplugin/coreconstants.h>
#include <coreplugin/editormanager/editormanager.h>
......@@ -367,8 +368,8 @@ void DisassemblerViewAgent::setContents(const QString &contents)
Core::Constants::K_DEFAULT_TEXT_EDITOR_ID,
&titlePattern));
QTC_ASSERT(d->editor, return);
d->editor->setProperty("OpenedByDebugger", true);
d->editor->setProperty("DisassemblerView", true);
d->editor->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, true);
d->editor->setProperty(Debugger::Constants::OPENED_WITH_DISASSEMBLY, true);
d->configureMimeType();
}
......
......@@ -87,6 +87,9 @@ namespace Internal {
} // namespace Internal
const char * const OPENED_BY_DEBUGGER = "OpenedByDebugger";
const char * const OPENED_WITH_DISASSEMBLY = "DisassemblerView";
} // namespace Constants
......
......@@ -2146,9 +2146,17 @@ void DebuggerPluginPrivate::cleanupViews()
if (theDebuggerBoolSetting(CloseBuffersOnExit)) {
if (EditorManager *editorManager = EditorManager::instance()) {
QList<IEditor *> toClose;
foreach (IEditor *editor, editorManager->openedEditors())
if (editor->property("OpenedByDebugger").toBool())
toClose.append(editor);
foreach (IEditor *editor, editorManager->openedEditors()) {
if (editor->property(Debugger::Constants::OPENED_BY_DEBUGGER).toBool()) {
// close disassembly views. close other opened files if they are not modified and not current editor
if (editor->property(Debugger::Constants::OPENED_WITH_DISASSEMBLY).toBool()
|| (!editor->file()->isModified() && editor != editorManager->currentEditor())) {
toClose.append(editor);
} else {
editor->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, false);
}
}
}
editorManager->closeEditors(toClose);
}
}
......@@ -2425,7 +2433,7 @@ void DebuggerPluginPrivate::gotoLocation(const QString &file, int line, bool set
if (!editor)
return;
if (newEditor)
editor->setProperty("OpenedByDebugger", true);
editor->setProperty(Debugger::Constants::OPENED_BY_DEBUGGER, true);
if (setMarker)
m_locationMark.reset(new LocationMark(file, line));
}
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment