From 8d384fc6ad49a7883294dd76bd5e3e1b78292616 Mon Sep 17 00:00:00 2001
From: Friedemann Kleint <Friedemann.Kleint@nokia.com>
Date: Tue, 6 Apr 2010 11:23:11 +0200
Subject: [PATCH] Fix QSettings keys of FancyMainWindow in QtCreator.ini.

Do not use localized Window Titles. Use objectName
or default to dockWidget<n>".

Task-number: QTCREATORBUG-1059
---
 src/libs/utils/fancymainwindow.cpp        | 10 ++++++++--
 src/libs/utils/fancymainwindow.h          |  4 +++-
 src/plugins/debugger/debuggermanager.cpp  | 12 ++++++++++++
 src/plugins/designer/formeditorw.cpp      |  5 +++++
 src/plugins/qmlinspector/qmlinspector.cpp |  4 ++++
 5 files changed, 32 insertions(+), 3 deletions(-)

diff --git a/src/libs/utils/fancymainwindow.cpp b/src/libs/utils/fancymainwindow.cpp
index cf845989a16..29703ae63f0 100644
--- a/src/libs/utils/fancymainwindow.cpp
+++ b/src/libs/utils/fancymainwindow.cpp
@@ -65,8 +65,14 @@ FancyMainWindow::~FancyMainWindow()
 QDockWidget *FancyMainWindow::addDockForWidget(QWidget *widget)
 {
     QDockWidget *dockWidget = new QDockWidget(widget->windowTitle(), this);
-    dockWidget->setObjectName(widget->windowTitle());
     dockWidget->setWidget(widget);
+    // Set an object name to be used in settings, derive from widget name
+    const QString objectName = widget->objectName();
+    if (objectName.isEmpty()) {
+        dockWidget->setObjectName(QLatin1String("dockWidget") + QString::number(d->m_dockWidgets.size() + 1));
+    } else {
+        dockWidget->setObjectName(objectName + QLatin1String("DockWidget"));
+    }
     connect(dockWidget->toggleViewAction(), SIGNAL(triggered()),
         this, SLOT(onDockActionTriggered()), Qt::QueuedConnection);
     connect(dockWidget, SIGNAL(visibilityChanged(bool)),
@@ -172,7 +178,7 @@ void FancyMainWindow::saveSettings(QSettings *settings) const
     }
 }
 
-void FancyMainWindow::restoreSettings(QSettings *settings)
+void FancyMainWindow::restoreSettings(const QSettings *settings)
 {
     QHash<QString, QVariant> hash;
     foreach (const QString &key, settings->childKeys()) {
diff --git a/src/libs/utils/fancymainwindow.h b/src/libs/utils/fancymainwindow.h
index b319b08d89f..35593ba7f5d 100644
--- a/src/libs/utils/fancymainwindow.h
+++ b/src/libs/utils/fancymainwindow.h
@@ -50,6 +50,8 @@ public:
     explicit FancyMainWindow(QWidget *parent = 0);
     virtual ~FancyMainWindow();
 
+    /* The widget passed in should have an objectname set
+     * which will then be used as key for QSettings. */
     QDockWidget *addDockForWidget(QWidget *widget);
     QList<QDockWidget *> dockWidgets() const;
 
@@ -57,7 +59,7 @@ public:
     bool isLocked() const;
 
     void saveSettings(QSettings *settings) const;
-    void restoreSettings(QSettings *settings);
+    void restoreSettings(const QSettings *settings);
     QHash<QString, QVariant> saveSettings() const;
     void restoreSettings(const QHash<QString, QVariant> &settings);
 
diff --git a/src/plugins/debugger/debuggermanager.cpp b/src/plugins/debugger/debuggermanager.cpp
index bde5f76ac25..a764d1bb898 100644
--- a/src/plugins/debugger/debuggermanager.cpp
+++ b/src/plugins/debugger/debuggermanager.cpp
@@ -364,15 +364,26 @@ void DebuggerManager::init()
     d->m_statusLabel->setMinimumSize(QSize(30, 10));
 
     d->m_breakWindow = new BreakWindow(this);
+    d->m_breakWindow->setObjectName(QLatin1String("CppDebugBreakpoints"));
     d->m_modulesWindow = new ModulesWindow(this);
+    d->m_modulesWindow->setObjectName(QLatin1String("CppDebugModules"));
     d->m_outputWindow = new DebuggerOutputWindow;
+    d->m_outputWindow->setObjectName(QLatin1String("CppDebugOutput"));
+
     d->m_registerWindow = new RegisterWindow(this);
+    d->m_registerWindow->setObjectName(QLatin1String("CppDebugRegisters"));
     d->m_snapshotWindow = new SnapshotWindow(this);
+    d->m_snapshotWindow->setObjectName(QLatin1String("CppDebugSnapshots"));
     d->m_stackWindow = new StackWindow(this);
+    d->m_stackWindow->setObjectName(QLatin1String("CppDebugStack"));
     d->m_sourceFilesWindow = new SourceFilesWindow;
+    d->m_sourceFilesWindow->setObjectName(QLatin1String("CppDebugSources"));
     d->m_threadsWindow = new ThreadsWindow;
+    d->m_threadsWindow->setObjectName(QLatin1String("CppDebugThreads"));
     d->m_localsWindow = new WatchWindow(WatchWindow::LocalsType, this);
+    d->m_localsWindow->setObjectName(QLatin1String("CppDebugLocals"));
     d->m_watchersWindow = new WatchWindow(WatchWindow::WatchersType, this);
+    d->m_watchersWindow->setObjectName(QLatin1String("CppDebugWatchers"));
     d->m_statusTimer = new QTimer(this);
 
     d->m_mainWindow = qobject_cast<Debugger::Internal::DebuggerMainWindow*>(DebuggerUISwitcher::instance()->mainWindow());
@@ -598,6 +609,7 @@ void DebuggerManager::init()
     d->m_threadsDock = uiSwitcher->createDockWidget(LANG_CPP, d->m_threadsWindow);
 
     QSplitter *localsAndWatchers = new Core::MiniSplitter(Qt::Vertical);
+    localsAndWatchers->setObjectName(QLatin1String("CppDebugLocalsAndWatchers"));
     localsAndWatchers->setWindowTitle(d->m_localsWindow->windowTitle());
     localsAndWatchers->addWidget(d->m_localsWindow);
     localsAndWatchers->addWidget(d->m_watchersWindow);
diff --git a/src/plugins/designer/formeditorw.cpp b/src/plugins/designer/formeditorw.cpp
index 50eedbed1ba..f8770f5b486 100644
--- a/src/plugins/designer/formeditorw.cpp
+++ b/src/plugins/designer/formeditorw.cpp
@@ -347,25 +347,30 @@ void FormEditorW::initDesignerSubWindows()
 
     QDesignerWidgetBoxInterface *wb = QDesignerComponents::createWidgetBox(m_formeditor, 0);
     wb->setWindowTitle(tr("Widget Box"));
+    wb->setObjectName(QLatin1String("WidgetBox"));
     m_formeditor->setWidgetBox(wb);
     m_designerSubWindows[WidgetBoxSubWindow] = wb;
 
     QDesignerObjectInspectorInterface *oi = QDesignerComponents::createObjectInspector(m_formeditor, 0);
     oi->setWindowTitle(tr("Object Inspector"));
+    oi->setObjectName(QLatin1String("ObjectInspector"));
     m_formeditor->setObjectInspector(oi);
     m_designerSubWindows[ObjectInspectorSubWindow] = oi;
 
     QDesignerPropertyEditorInterface *pe = QDesignerComponents::createPropertyEditor(m_formeditor, 0);
     pe->setWindowTitle(tr("Property Editor"));
+    pe->setObjectName(QLatin1String("PropertyEditor"));
     m_formeditor->setPropertyEditor(pe);
     m_designerSubWindows[PropertyEditorSubWindow] = pe;
 
     QWidget *se = QDesignerComponents::createSignalSlotEditor(m_formeditor, 0);
     se->setWindowTitle(tr("Signals && Slots Editor"));
+    se->setObjectName(QLatin1String("SignalsAndSlotsEditor"));
     m_designerSubWindows[SignalSlotEditorSubWindow] = se;
 
     QDesignerActionEditorInterface *ae = QDesignerComponents::createActionEditor(m_formeditor, 0);
     ae->setWindowTitle(tr("Action Editor"));
+    ae->setObjectName(QLatin1String("ActionEditor"));
     m_formeditor->setActionEditor(ae);
     m_designerSubWindows[ActionEditorSubWindow] = ae;
 }
diff --git a/src/plugins/qmlinspector/qmlinspector.cpp b/src/plugins/qmlinspector/qmlinspector.cpp
index b208cb42f41..cd0d3b5b69c 100644
--- a/src/plugins/qmlinspector/qmlinspector.cpp
+++ b/src/plugins/qmlinspector/qmlinspector.cpp
@@ -176,6 +176,7 @@ QmlInspector::QmlInspector(QObject *parent)
     m_propertiesWidget = new Internal::ObjectPropertiesView;
     m_watchTableView = new Internal::WatchTableView(m_watchTableModel);
     m_frameRateWidget = new Internal::CanvasFrameRate;
+    m_frameRateWidget->setObjectName(QLatin1String("QmlDebugFrameRate"));
     m_expressionWidget = new Internal::ExpressionQueryWidget(Internal::ExpressionQueryWidget::SeparateEntryMode);
 }
 
@@ -315,6 +316,7 @@ void QmlInspector::createDockWidgets()
     treeOptionBarLayout->addWidget(m_engineSpinBox);
 
     QWidget *treeWindow = new QWidget;
+    treeWindow->setObjectName(QLatin1String("QmlDebugTree"));
     treeWindow->setWindowTitle(tr("Object Tree"));
     QVBoxLayout *treeWindowLayout = new QVBoxLayout(treeWindow);
     treeWindowLayout->setMargin(0);
@@ -358,6 +360,7 @@ void QmlInspector::createDockWidgets()
     leftSplitter->setStretchFactor(1, 1);
 
     Core::MiniSplitter *propSplitter = new Core::MiniSplitter(Qt::Horizontal);
+    propSplitter->setObjectName(QLatin1String("QmlDebugProperties"));
     propSplitter->addWidget(leftSplitter);
     propSplitter->addWidget(m_expressionWidget);
     propSplitter->setStretchFactor(0, 2);
@@ -367,6 +370,7 @@ void QmlInspector::createDockWidgets()
 
 
     InspectorOutputWidget *inspectorOutput = new InspectorOutputWidget();
+    inspectorOutput->setObjectName(QLatin1String("QmlDebugInspectorOutput"));
     connect(this, SIGNAL(statusMessage(QString)),
             inspectorOutput, SLOT(addInspectorStatus(QString)));
 
-- 
GitLab