forked from qt-creator/qt-creator
analyzer: simplify dockwidget setup
Change-Id: Id450ee1d6ad24707536f9b35e7868e5f8ce9dab2 Reviewed-on: http://codereview.qt.nokia.com/59 Reviewed-by: Qt Sanity Bot <qt_sanity_bot@ovi.com> Reviewed-by: hjk
This commit is contained in:
@@ -164,14 +164,9 @@ public:
|
|||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ToolDockWidgetData
|
const char * const INITIAL_DOCK_AREA = "initial_dock_area";
|
||||||
{
|
|
||||||
ToolDockWidgetData(Qt::DockWidgetArea a, QDockWidget *w) :
|
|
||||||
area(a), widget(w) {}
|
|
||||||
|
|
||||||
Qt::DockWidgetArea area;
|
|
||||||
QDockWidget *widget;
|
|
||||||
};
|
|
||||||
} // namespace Internal
|
} // namespace Internal
|
||||||
} // namespace Analyzer
|
} // namespace Analyzer
|
||||||
|
|
||||||
@@ -221,7 +216,7 @@ public:
|
|||||||
ActionContainer *m_viewsMenu;
|
ActionContainer *m_viewsMenu;
|
||||||
Utils::StatusLabel *m_statusLabel;
|
Utils::StatusLabel *m_statusLabel;
|
||||||
typedef QMap<IAnalyzerTool *, FancyMainWindowSettings> MainWindowSettingsMap;
|
typedef QMap<IAnalyzerTool *, FancyMainWindowSettings> MainWindowSettingsMap;
|
||||||
QMap<IAnalyzerTool *, QList<ToolDockWidgetData> > m_toolWidgets;
|
QMap<IAnalyzerTool *, QList<QDockWidget *> > m_toolWidgets;
|
||||||
DockWidgetEventFilter *m_resizeEventFilter;
|
DockWidgetEventFilter *m_resizeEventFilter;
|
||||||
|
|
||||||
MainWindowSettingsMap m_defaultSettings;
|
MainWindowSettingsMap m_defaultSettings;
|
||||||
@@ -655,16 +650,16 @@ void AnalyzerManager::toolSelected(int idx)
|
|||||||
|
|
||||||
ActionManager *am = ICore::instance()->actionManager();
|
ActionManager *am = ICore::instance()->actionManager();
|
||||||
|
|
||||||
foreach (const ToolDockWidgetData &widget, d->m_toolWidgets.value(oldTool)) {
|
foreach (QDockWidget *widget, d->m_toolWidgets.value(oldTool)) {
|
||||||
QAction *toggleViewAction = widget.widget->toggleViewAction();
|
QAction *toggleViewAction = widget->toggleViewAction();
|
||||||
am->unregisterAction(toggleViewAction, QString("Analyzer." + widget.widget->objectName()));
|
am->unregisterAction(toggleViewAction, QString("Analyzer." + widget->objectName()));
|
||||||
d->m_mainWindow->removeDockWidget(widget.widget);
|
d->m_mainWindow->removeDockWidget(widget);
|
||||||
///NOTE: QMainWindow (and FancyMainWindow) just look at @c findChildren<QDockWidget*>()
|
///NOTE: QMainWindow (and FancyMainWindow) just look at @c findChildren<QDockWidget*>()
|
||||||
///if we don't do this, all kind of havoc might happen, including:
|
///if we don't do this, all kind of havoc might happen, including:
|
||||||
///- improper saveState/restoreState
|
///- improper saveState/restoreState
|
||||||
///- improper list of qdockwidgets in popup menu
|
///- improper list of qdockwidgets in popup menu
|
||||||
///- ...
|
///- ...
|
||||||
widget.widget->setParent(0);
|
widget->setParent(0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -679,8 +674,8 @@ void AnalyzerManager::toolSelected(int idx)
|
|||||||
newTool->initializeDockWidgets();
|
newTool->initializeDockWidgets();
|
||||||
d->m_defaultSettings.insert(newTool, d->m_mainWindow->saveSettings());
|
d->m_defaultSettings.insert(newTool, d->m_mainWindow->saveSettings());
|
||||||
} else {
|
} else {
|
||||||
foreach (const ToolDockWidgetData &widget, d->m_toolWidgets.value(newTool))
|
foreach (QDockWidget *widget, d->m_toolWidgets.value(newTool))
|
||||||
d->addDock(widget.area, widget.widget);
|
d->addDock(Qt::DockWidgetArea(widget->property(INITIAL_DOCK_AREA).toInt()), widget);
|
||||||
}
|
}
|
||||||
|
|
||||||
loadToolSettings(newTool);
|
loadToolSettings(newTool);
|
||||||
@@ -737,10 +732,11 @@ QDockWidget *AnalyzerManager::createDockWidget(IAnalyzerTool *tool, const QStrin
|
|||||||
QTC_ASSERT(!widget->objectName().isEmpty(), return 0;);
|
QTC_ASSERT(!widget->objectName().isEmpty(), return 0;);
|
||||||
|
|
||||||
QDockWidget *dockWidget = d->m_mainWindow->addDockForWidget(widget);
|
QDockWidget *dockWidget = d->m_mainWindow->addDockForWidget(widget);
|
||||||
|
dockWidget->setProperty(INITIAL_DOCK_AREA, int(area));
|
||||||
d->m_dockWidgets << AnalyzerManagerPrivate::DockPtr(dockWidget);
|
d->m_dockWidgets << AnalyzerManagerPrivate::DockPtr(dockWidget);
|
||||||
dockWidget->setWindowTitle(title);
|
dockWidget->setWindowTitle(title);
|
||||||
|
|
||||||
d->m_toolWidgets[tool].push_back(ToolDockWidgetData(area, dockWidget));
|
d->m_toolWidgets[tool].push_back(dockWidget);
|
||||||
d->addDock(area, dockWidget);
|
d->addDock(area, dockWidget);
|
||||||
dockWidget->installEventFilter(d->m_resizeEventFilter);
|
dockWidget->installEventFilter(d->m_resizeEventFilter);
|
||||||
return dockWidget;
|
return dockWidget;
|
||||||
|
|||||||
Reference in New Issue
Block a user