Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.cpp	(revision 55741)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.cpp	(revision 55742)
@@ -63,8 +63,7 @@
     , m_configurationAccessLevel(ConfigurationAccessLevel_Null)
     , m_fPolished(false)
-    /* Loading/saving stuff: */
+    /* Serialization stuff: */
     , m_pSerializeProcess(0)
-    , m_fLoaded(false)
-    , m_fSaved(false)
+    , m_fSerializationIsInProgress(false)
     /* Status-bar stuff: */
     , m_pStatusBar(0)
@@ -220,6 +219,6 @@
     }
 
-    /* Mark as loaded: */
-    m_fLoaded = true;
+    /* Mark serialization finished: */
+    m_fSerializationIsInProgress = false;
 }
 
@@ -233,6 +232,6 @@
     }
 
-    /* Mark as saved: */
-    m_fSaved = true;
+    /* Mark serialization finished: */
+    m_fSerializationIsInProgress = false;
 }
 
@@ -257,6 +256,6 @@
 void UISettingsDialog::loadData(QVariant &data)
 {
-    /* Mark as not loaded: */
-    m_fLoaded = false;
+    /* Mark serialization started: */
+    m_fSerializationIsInProgress = true;
 
     /* Create settings loader: */
@@ -283,6 +282,6 @@
 void UISettingsDialog::saveData(QVariant &data)
 {
-    /* Mark as not saved: */
-    m_fSaved = false;
+    /* Mark serialization started: */
+    m_fSerializationIsInProgress = true;
 
     /* Create the 'settings saver': */
@@ -531,5 +530,5 @@
 void UISettingsDialog::reject()
 {
-    if (m_fLoaded)
+    if (!isSerializationInProgress())
         QIMainDialog::reject();
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.h	(revision 55741)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialog.h	(revision 55742)
@@ -73,4 +73,6 @@
     /** Returns the serialize process instance. */
     UISettingsSerializer* serializeProcess() const { return m_pSerializeProcess; }
+    /** Returns whether the serialization is in progress. */
+    bool isSerializationInProgress() const { return m_fSerializationIsInProgress; }
 
     /** Loads the @a data. */
@@ -143,8 +145,6 @@
     /** Holds the serialize process instance. */
     UISettingsSerializer *m_pSerializeProcess;
-
-    /* Loading/saving stuff: */
-    bool m_fLoaded;
-    bool m_fSaved;
+    /** Holds whether the serialization is in progress. */
+    bool m_fSerializationIsInProgress;
 
     /* Status bar widget: */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 55741)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/settings/UISettingsDialogSpecific.cpp	(revision 55742)
@@ -332,4 +332,12 @@
     connect(&vboxGlobal(), SIGNAL(sigMediumEnumerationFinished()), this, SLOT(sltAllowResetFirstRunFlag()));
 
+    /* Make sure settings window will be updated on session/machine state/data changes: */
+    connect(gVBoxEvents, SIGNAL(sigSessionStateChange(QString, KSessionState)),
+            this, SLOT(sltSessionStateChanged(QString, KSessionState)));
+    connect(gVBoxEvents, SIGNAL(sigMachineStateChange(QString, KMachineState)),
+            this, SLOT(sltMachineStateChanged(QString, KMachineState)));
+    connect(gVBoxEvents, SIGNAL(sigMachineDataChange(QString)),
+            this, SLOT(sltMachineDataChanged(QString)));
+
     /* Get corresponding machine (required to determine dialog type and page availability): */
     m_machine = vboxGlobal().virtualBox().FindMachine(m_strMachineId);
@@ -500,7 +508,4 @@
         return;
 
-    /* Disconnect global VBox events from this dialog: */
-    gVBoxEvents->disconnect(this);
-
     /* Prepare session: */
     m_session = configurationAccessLevel() == ConfigurationAccessLevel_Null ? CSession() :
@@ -528,7 +533,4 @@
     if (!m_session.isNull())
         return;
-
-    /* Disconnect global VBox events from this dialog: */
-    gVBoxEvents->disconnect(this);
 
     /* Prepare session: */
@@ -735,12 +737,4 @@
         m_console = CConsole();
     }
-
-    /* Make sure settings window will be updated on machine state/data changes: */
-    connect(gVBoxEvents, SIGNAL(sigSessionStateChange(QString, KSessionState)),
-            this, SLOT(sltSessionStateChanged(QString, KSessionState)));
-    connect(gVBoxEvents, SIGNAL(sigMachineStateChange(QString, KMachineState)),
-            this, SLOT(sltMachineStateChanged(QString, KMachineState)));
-    connect(gVBoxEvents, SIGNAL(sigMachineDataChange(QString)),
-            this, SLOT(sltMachineDataChanged(QString)));
 }
 
@@ -762,4 +756,8 @@
 void UISettingsDialogMachine::sltSessionStateChanged(QString strMachineId, KSessionState sessionState)
 {
+    /* Ignore if serialization is in progress: */
+    if (isSerializationInProgress())
+        return;
+
     /* Ignore if thats NOT our VM: */
     if (strMachineId != m_strMachineId)
@@ -779,4 +777,8 @@
 void UISettingsDialogMachine::sltMachineStateChanged(QString strMachineId, KMachineState machineState)
 {
+    /* Ignore if serialization is in progress: */
+    if (isSerializationInProgress())
+        return;
+
     /* Ignore if thats NOT our VM: */
     if (strMachineId != m_strMachineId)
@@ -796,4 +798,8 @@
 void UISettingsDialogMachine::sltMachineDataChanged(QString strMachineId)
 {
+    /* Ignore if serialization is in progress: */
+    if (isSerializationInProgress())
+        return;
+
     /* Ignore if thats NOT our VM: */
     if (strMachineId != m_strMachineId)
