Browse Source

Fix crash when enabling Advanced Tuning

Disable closing app on last window close. This will close
the app on every widget spawned in QML that closes (MessageBox)
QGC4.4
Stefan Dunca 6 years ago
parent
commit
99f2faa7e9
  1. 4
      src/AutoPilotPlugins/APM/APMTuningComponentCopter.qml
  2. 4
      src/AutoPilotPlugins/PX4/PX4TuningComponentCopter.qml
  3. 4
      src/AutoPilotPlugins/PX4/PX4TuningComponentPlane.qml
  4. 7
      src/QGCApplication.cc
  5. 20
      src/QGCApplication.h

4
src/AutoPilotPlugins/APM/APMTuningComponentCopter.qml

@ -64,8 +64,8 @@ SetupPage { @@ -64,8 +64,8 @@ SetupPage {
ExclusiveGroup { id: returnAltRadioGroup }
Component.onCompleted: {
// Advanced tuning is hacked out due to Qt crash with Qml Charts and a QGuiApplication
//showAdvanced = !ScreenTools.isMobile
// We use QtCharts only on Desktop platforms
showAdvanced = !ScreenTools.isMobile
// Qml Sliders have a strange behavior in which they first set Slider::value to some internal
// setting and then set Slider::value to the bound properties value. If you have an onValueChanged

4
src/AutoPilotPlugins/PX4/PX4TuningComponentCopter.qml

@ -29,8 +29,8 @@ SetupPage { @@ -29,8 +29,8 @@ SetupPage {
width: availableWidth
Component.onCompleted: {
// Advanced tuning is hacked out due to Qt crash with Qml Charts and a QGuiApplication
//showAdvanced = !ScreenTools.isMobile
// We use QtCharts only on Desktop platforms
showAdvanced = !ScreenTools.isMobile
}
FactPanelController {

4
src/AutoPilotPlugins/PX4/PX4TuningComponentPlane.qml

@ -29,8 +29,8 @@ SetupPage { @@ -29,8 +29,8 @@ SetupPage {
width: availableWidth
Component.onCompleted: {
// Advanced tuning is hacked out due to Qt crash with Qml Charts and a QGuiApplication
//showAdvanced = !ScreenTools.isMobile
// We use QtCharts only on Desktop platforms
showAdvanced = !ScreenTools.isMobile
}
FactPanelController {

7
src/QGCApplication.cc

@ -158,7 +158,11 @@ static QObject* shapeFileHelperSingletonFactory(QQmlEngine*, QJSEngine*) @@ -158,7 +158,11 @@ static QObject* shapeFileHelperSingletonFactory(QQmlEngine*, QJSEngine*)
}
QGCApplication::QGCApplication(int &argc, char* argv[], bool unitTesting)
#if defined(__mobile__)
: QGuiApplication (argc, argv)
#else
: QApplication (argc, argv)
#endif
, _runningUnitTests (unitTesting)
{
_app = this;
@ -555,9 +559,6 @@ bool QGCApplication::_initForNormalAppBoot() @@ -555,9 +559,6 @@ bool QGCApplication::_initForNormalAppBoot()
QSettings settings;
// Exit main application when last window is closed
connect(this, &QGCApplication::lastWindowClosed, this, QGCApplication::quit);
_qmlAppEngine = toolbox()->corePlugin()->createRootWindow(this);
// Safe to show popup error messages now that main window is created

20
src/QGCApplication.h

@ -35,7 +35,25 @@ class QGCSingleton; @@ -35,7 +35,25 @@ class QGCSingleton;
class QGCToolbox;
class QGCFileDownload;
class QGCApplication : public QGuiApplication
/**
* @brief The main application and management class.
*
* This class is started by the main method and provides
* the central management unit of the groundstation application.
*
* Needs QApplication base to support QtCharts module. This way
* we avoid application crashing on 5.12 when using the module.
* We don't have QtWidgets on mobile, avoid using it.
*
* Note: `lastWindowClosed` will be sent by MessageBox popups and other
* dialogs, that are spawned in QML, when they are closed
**/
class QGCApplication :
#if defined(__mobile__)
public QGuiApplication
#else
public QApplication
#endif
{
Q_OBJECT

Loading…
Cancel
Save