diff --git a/src/ui/MainRootWindow.qml b/src/ui/MainRootWindow.qml
index 8111f22..0468d92 100644
--- a/src/ui/MainRootWindow.qml
+++ b/src/ui/MainRootWindow.qml
@@ -196,47 +196,66 @@ ApplicationWindow {
         mainWindow.close()
     }
 
+    // On attempting an application close we check for:
+    //  Unsaved missions - then
+    //  Pending parameter writes - then
+    //  Active connections
+    onClosing: {
+        if (!_forceClose) {
+            unsavedMissionCloseDialog.check()
+            close.accepted = false
+        }
+    }
+
     MessageDialog {
-        id:                 activeConnectionsCloseDialog
+        id:                 unsavedMissionCloseDialog
         title:              qsTr("%1 close").arg(QGroundControl.appName)
-        text:               qsTr("There are still active connections to vehicles. Are you sure you want to exit?")
-        standardButtons:    StandardButton.Yes | StandardButton.Cancel
+        text:               qsTr("You have a mission edit in progress which has not been saved/sent. If you close you will lose changes. Are you sure you want to close?")
+        standardButtons:    StandardButton.Yes | StandardButton.No
         modality:           Qt.ApplicationModal
         visible:            false
-        onYes:              finishCloseProcess()
+        onYes:              pendingParameterWritesCloseDialog.check()
         function check() {
-            if (QGroundControl.multiVehicleManager.activeVehicle) {
-                activeConnectionsCloseDialog.open()
+            if (planMasterControllerPlan && planMasterControllerPlan.dirty) {
+                unsavedMissionCloseDialog.open()
             } else {
-                finishCloseProcess()
+                pendingParameterWritesCloseDialog.check()
             }
         }
     }
 
-    //-------------------------------------------------------------------------
-    //-- Check for unsaved missions
-
-    onClosing: {
-        // Check first for unsaved missions and active connections
-        if (!_forceClose) {
-            unsavedMissionCloseDialog.check()
-            close.accepted = false
+    MessageDialog {
+        id:                 pendingParameterWritesCloseDialog
+        title:              qsTr("%1 close").arg(QGroundControl.appName)
+        text:               qsTr("You have pending parameter updates to a vehicle. If you close you will lose changes. Are you sure you want to close?")
+        standardButtons:    StandardButton.Yes | StandardButton.No
+        modality:           Qt.ApplicationModal
+        visible:            false
+        onYes:              activeConnectionsCloseDialog.check()
+        function check() {
+            for (var index=0; index<QGroundControl.multiVehicleManager.vehicles.count; index++) {
+                if (QGroundControl.multiVehicleManager.vehicles.get(index).parameterManager.pendingWrites) {
+                    pendingParameterWritesCloseDialog.open()
+                    return
+                }
+            }
+            activeConnectionsCloseDialog.check()
         }
     }
 
     MessageDialog {
-        id:                 unsavedMissionCloseDialog
+        id:                 activeConnectionsCloseDialog
         title:              qsTr("%1 close").arg(QGroundControl.appName)
-        text:               qsTr("You have a mission edit in progress which has not been saved/sent. If you close you will lose changes. Are you sure you want to close?")
-        standardButtons:    StandardButton.Yes | StandardButton.No
+        text:               qsTr("There are still active connections to vehicles. Are you sure you want to exit?")
+        standardButtons:    StandardButton.Yes | StandardButton.Cancel
         modality:           Qt.ApplicationModal
         visible:            false
-        onYes:              activeConnectionsCloseDialog.check()
+        onYes:              finishCloseProcess()
         function check() {
-            if (planMasterControllerPlan && planMasterControllerPlan.dirty) {
-                unsavedMissionCloseDialog.open()
+            if (QGroundControl.multiVehicleManager.activeVehicle) {
+                activeConnectionsCloseDialog.open()
             } else {
-                activeConnectionsCloseDialog.check()
+                finishCloseProcess()
             }
         }
     }