From 02a759d4f5406ccdf356a48e83d9fc81639c963b Mon Sep 17 00:00:00 2001 From: hjk Date: Tue, 24 Jul 2018 15:40:35 +0200 Subject: [PATCH] Debugger: Make Perspective persistence more robust Always save on exit, but do not expect a valid perspective name on restart. The settings could get corrupted in the mean time etc. Change-Id: Ic0181607f46c3350a4193240d795d4c0d7c6815b Reviewed-by: Ulf Hermann --- src/plugins/debugger/debuggermainwindow.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/plugins/debugger/debuggermainwindow.cpp b/src/plugins/debugger/debuggermainwindow.cpp index cb69c99fd5b..6f08a02205a 100644 --- a/src/plugins/debugger/debuggermainwindow.cpp +++ b/src/plugins/debugger/debuggermainwindow.cpp @@ -85,6 +85,8 @@ DebuggerMainWindow::DebuggerMainWindow() DebuggerMainWindow::~DebuggerMainWindow() { + savePerspectiveHelper(m_currentPerspectiveId); + delete m_editorPlaceHolder; m_editorPlaceHolder = nullptr; // As we have to setParent(0) on dock widget that are not selected, @@ -332,8 +334,12 @@ void DebuggerMainWindow::loadPerspectiveHelper(const QByteArray &perspectiveId, ICore::addAdditionalContext(Context(Id::fromName(m_currentPerspectiveId))); - QTC_ASSERT(m_perspectiveForPerspectiveId.contains(m_currentPerspectiveId), return); const Perspective *perspective = m_perspectiveForPerspectiveId.value(m_currentPerspectiveId); + if (!perspective) { + QTC_ASSERT(!m_perspectiveForPerspectiveId.isEmpty(), return); + perspective = *m_perspectiveForPerspectiveId.begin(); + } + QTC_ASSERT(perspective, return); perspective->aboutToActivate(); for (const Perspective::Operation &operation : perspective->operations()) { QDockWidget *dock = m_dockForDockId.value(operation.dockId);