Commit 58de729c authored by Gus Grubba's avatar Gus Grubba

Merge pull request #2508 from dogmaphobic/checkValidWidget

Fixing crash bug.
parents 1d0d3024 d091759f
...@@ -329,25 +329,25 @@ void MainWindow::_showDockWidget(const QString& name, bool show) ...@@ -329,25 +329,25 @@ void MainWindow::_showDockWidget(const QString& name, bool show)
{ {
// Create the inner widget if we need to // Create the inner widget if we need to
if (!_mapName2DockWidget.contains(name)) { if (!_mapName2DockWidget.contains(name)) {
_createInnerDockWidget(name); if(!_createInnerDockWidget(name)) {
qWarning() << "Trying to load non existing widget:" << name;
return;
}
} }
Q_ASSERT(_mapName2DockWidget.contains(name)); Q_ASSERT(_mapName2DockWidget.contains(name));
QGCDockWidget* dockWidget = _mapName2DockWidget[name]; QGCDockWidget* dockWidget = _mapName2DockWidget[name];
Q_ASSERT(dockWidget); Q_ASSERT(dockWidget);
dockWidget->setVisible(show); dockWidget->setVisible(show);
Q_ASSERT(_mapName2Action.contains(name)); Q_ASSERT(_mapName2Action.contains(name));
_mapName2Action[name]->setChecked(show); _mapName2Action[name]->setChecked(show);
} }
/// Creates the specified inner dock widget and adds to the QDockWidget /// Creates the specified inner dock widget and adds to the QDockWidget
void MainWindow::_createInnerDockWidget(const QString& widgetName) bool MainWindow::_createInnerDockWidget(const QString& widgetName)
{ {
QGCDockWidget* widget = NULL; QGCDockWidget* widget = NULL;
QAction *action = _mapName2Action[widgetName]; QAction *action = _mapName2Action[widgetName];
if(action) {
switch(action->data().toInt()) { switch(action->data().toInt()) {
case MAVLINK_INSPECTOR: case MAVLINK_INSPECTOR:
widget = new QGCMAVLinkInspector(widgetName, action, qgcApp()->toolbox()->mavlinkProtocol(),this); widget = new QGCMAVLinkInspector(widgetName, action, qgcApp()->toolbox()->mavlinkProtocol(),this);
...@@ -371,11 +371,14 @@ void MainWindow::_createInnerDockWidget(const QString& widgetName) ...@@ -371,11 +371,14 @@ void MainWindow::_createInnerDockWidget(const QString& widgetName)
widget= new QGCTabbedInfoView(widgetName, action, this); widget= new QGCTabbedInfoView(widgetName, action, this);
break; break;
} }
if(action->data().toInt() == INFO_VIEW) { if(action->data().toInt() == INFO_VIEW) {
qobject_cast<QGCTabbedInfoView*>(widget)->addSource(mavlinkDecoder); qobject_cast<QGCTabbedInfoView*>(widget)->addSource(mavlinkDecoder);
} }
if(widget) {
_mapName2DockWidget[widgetName] = widget; _mapName2DockWidget[widgetName] = widget;
}
}
return widget != NULL;
} }
void MainWindow::_hideAllDockWidgets(void) void MainWindow::_hideAllDockWidgets(void)
......
...@@ -221,7 +221,7 @@ private: ...@@ -221,7 +221,7 @@ private:
void _loadCurrentViewState(void); void _loadCurrentViewState(void);
#ifndef __mobile__ #ifndef __mobile__
void _createInnerDockWidget(const QString& widgetName); bool _createInnerDockWidget(const QString& widgetName);
void _buildCommonWidgets(void); void _buildCommonWidgets(void);
void _hideAllDockWidgets(void); void _hideAllDockWidgets(void);
void _showDockWidget(const QString &name, bool show); void _showDockWidget(const QString &name, bool show);
......
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