OSDN Git Service

debugger: make "clever" behaviour on debugger exit optional
authorhjk <qtc-committer@nokia.com>
Fri, 8 Oct 2010 15:44:11 +0000 (17:44 +0200)
committerhjk <qtc-committer@nokia.com>
Fri, 8 Oct 2010 15:45:42 +0000 (17:45 +0200)
It hurts me.

Reviewed-by: Alessandro Portale
Task-number: QTCREATORBUG-808

src/plugins/debugger/commonoptionspage.ui
src/plugins/debugger/debuggeractions.cpp
src/plugins/debugger/debuggeractions.h
src/plugins/debugger/debuggerplugin.cpp

index 6d55c88..7440d0b 100644 (file)
         </property>
        </widget>
       </item>
-      <item row="4" column="0">
+      <item row="4" column="0" colspan="2">
+       <widget class="QCheckBox" name="checkBoxCloseBuffersOnExit">
+        <property name="toolTip">
+         <string>Close temporary buffers on debugger exit.</string>
+        </property>
+        <property name="text">
+         <string>Close temporary buffers on debugger exit</string>
+        </property>
+       </widget>
+      </item>
+      <item row="5" column="0" colspan="2">
+       <widget class="QCheckBox" name="checkBoxSwitchModeOnExit">
+        <property name="toolTip">
+         <string>Switch to previous mode on debugger exit.</string>
+        </property>
+        <property name="text">
+         <string>Switch to previous mode on debugger exit.</string>
+        </property>
+       </widget>
+      </item>
+      <item row="6" column="0">
        <widget class="QLabel" name="labelMaximalStackDepth">
         <property name="sizePolicy">
          <sizepolicy hsizetype="Maximum" vsizetype="Preferred">
@@ -64,7 +84,7 @@
         </property>
        </widget>
       </item>
-      <item row="4" column="1">
+      <item row="6" column="1">
        <layout class="QHBoxLayout" name="horizontalLayout">
         <item>
          <widget class="QSpinBox" name="spinBoxMaximalStackDepth">
index 424abcd..3774c37 100644 (file)
@@ -370,6 +370,18 @@ DebuggerSettings *DebuggerSettings::instance()
     instance->insertItem(GdbScriptFile, item);
 
     item = new SavedAction(instance);
+    item->setSettingsKey(debugModeGroup, QLatin1String("CloseBuffersOnExit"));
+    item->setCheckable(true);
+    item->setDefaultValue(false);
+    instance->insertItem(CloseBuffersOnExit, item);
+
+    item = new SavedAction(instance);
+    item->setSettingsKey(debugModeGroup, QLatin1String("SwitchModeOnExit"));
+    item->setCheckable(true);
+    item->setDefaultValue(false);
+    instance->insertItem(SwitchModeOnExit, item);
+
+    item = new SavedAction(instance);
     item->setSettingsKey(debugModeGroup, QLatin1String("AutoQuit"));
     item->setText(tr("Automatically Quit Debugger"));
     item->setCheckable(true);
index bf8f54a..72845ec 100644 (file)
@@ -92,7 +92,8 @@ enum DebuggerActionCode
     LogTimeStamps,
     VerboseLog,
     OperateByInstruction,
-    AutoDerefPointers,
+    CloseBuffersOnExit,
+    SwitchModeOnExit,
 
     UseDebuggingHelpers,
     UseCustomDebuggingHelperLocation,
@@ -125,6 +126,7 @@ enum DebuggerActionCode
     ShowStdNamespace,
     ShowQtNamespace,
     SortStructMembers,
+    AutoDerefPointers,
 
     // Source List
     ListSourceFiles,
index c3ffb66..f00f908 100644 (file)
@@ -561,6 +561,10 @@ QWidget *CommonOptionsPage::createPage(QWidget *parent)
         m_ui.checkBoxUseAlternatingRowColors);
     m_group.insert(theDebuggerAction(UseToolTipsInMainEditor),
         m_ui.checkBoxUseToolTipsInMainEditor);
+    m_group.insert(theDebuggerAction(CloseBuffersOnExit),
+        m_ui.checkBoxCloseBuffersOnExit);
+    m_group.insert(theDebuggerAction(SwitchModeOnExit),
+        m_ui.checkBoxSwitchModeOnExit);
     m_group.insert(theDebuggerAction(AutoDerefPointers), 0);
     m_group.insert(theDebuggerAction(UseToolTipsInLocalsView), 0);
     m_group.insert(theDebuggerAction(UseToolTipsInBreakpointsView), 0);
@@ -2127,12 +2131,14 @@ void DebuggerPluginPrivate::cleanupViews()
     //if (d->m_engine)
     //    d->m_engine->cleanup();
 
-    if (EditorManager *editorManager = EditorManager::instance()) {
-        QList<IEditor *> toClose;
-        foreach (IEditor *editor, editorManager->openedEditors())
-            if (editor->property("OpenedByDebugger").toBool())
-                toClose.append(editor);
-        editorManager->closeEditors(toClose);
+    if (theDebuggerBoolSetting(CloseBuffersOnExit)) {
+        if (EditorManager *editorManager = EditorManager::instance()) {
+            QList<IEditor *> toClose;
+            foreach (IEditor *editor, editorManager->openedEditors())
+                if (editor->property("OpenedByDebugger").toBool())
+                    toClose.append(editor);
+            editorManager->closeEditors(toClose);
+        }
     }
 }
 
@@ -2834,8 +2840,9 @@ void DebuggerPlugin::runControlFinished(DebuggerRunControl *runControl)
     Q_UNUSED(runControl);
     d->m_snapshotHandler->removeSnapshot(runControl);
     d->disconnectEngine();
-    if (d->m_snapshotHandler->size() == 0)
-        d->activatePreviousMode();
+    if (theDebuggerBoolSetting(SwitchModeOnExit))
+        if (d->m_snapshotHandler->size() == 0)
+            d->activatePreviousMode();
 }
 
 DebuggerLanguages DebuggerPlugin::activeLanguages() const