Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp	(revision 36363)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.cpp	(revision 36364)
@@ -171,7 +171,11 @@
         /* Not used *
         case KVBoxEventType_OnCPUChange:
-        case KVBoxEventType_OnVRDEServerChange:
-        case KVBoxEventType_OnVRDEServerInfoChange:
-         */
+         */
+        case KVBoxEventType_OnVRDEServerChanged:
+        case KVBoxEventType_OnVRDEServerInfoChanged:
+        {
+            emit sigVRDEChange();
+            break;
+        }
         case KVBoxEventType_OnUSBControllerChanged:
         {
Index: trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.h	(revision 36363)
+++ trunk/src/VBox/Frontends/VirtualBox/src/globals/UIMainEventListener.h	(revision 36364)
@@ -68,4 +68,5 @@
     void sigNetworkAdapterChange(CNetworkAdapter adapter);
     void sigMediumChange(CMediumAttachment attachment);
+    void sigVRDEChange();
     void sigUSBControllerChange();
     void sigUSBDeviceStateChange(CUSBDevice device, bool fAttached, CVirtualBoxErrorInfo error);
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp	(revision 36363)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.cpp	(revision 36364)
@@ -72,4 +72,6 @@
         << KVBoxEventType_OnNetworkAdapterChanged
         << KVBoxEventType_OnMediumChanged
+        << KVBoxEventType_OnVRDEServerChanged
+        << KVBoxEventType_OnVRDEServerInfoChanged
         << KVBoxEventType_OnUSBControllerChanged
         << KVBoxEventType_OnUSBDeviceStateChanged
@@ -109,4 +111,8 @@
     connect(pListener->getWrapped(), SIGNAL(sigMediumChange(CMediumAttachment)),
             this, SIGNAL(sigMediumChange(CMediumAttachment)),
+            Qt::QueuedConnection);
+
+    connect(pListener->getWrapped(), SIGNAL(sigVRDEChange()),
+            this, SIGNAL(sigVRDEChange()),
             Qt::QueuedConnection);
 
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.h	(revision 36363)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIConsoleEventHandler.h	(revision 36364)
@@ -42,4 +42,5 @@
     void sigNetworkAdapterChange(CNetworkAdapter adapter);
     void sigMediumChange(CMediumAttachment attachment);
+    void sigVRDEChange();
     void sigUSBControllerChange();
     void sigUSBDeviceStateChange(CUSBDevice device, bool fAttached, CVirtualBoxErrorInfo error);
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 36363)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UIMachineMenuBar.cpp	(revision 36364)
@@ -237,5 +237,4 @@
     pMenu->addAction(pActionsPool->action(UIActionIndex_Simple_NetworkAdaptersDialog));
     pMenu->addAction(pActionsPool->action(UIActionIndex_Simple_SharedFoldersDialog));
-    pMenu->addSeparator();
     pMenu->addAction(pActionsPool->action(UIActionIndex_Toggle_VRDEServer));
     pMenu->addSeparator();
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 36363)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.cpp	(revision 36364)
@@ -110,4 +110,7 @@
             this, SLOT(sltAdditionsChange()));
 
+    connect(gConsoleEvents, SIGNAL(sigVRDEChange()),
+            this, SLOT(sltVRDEChange()));
+
     connect(gConsoleEvents, SIGNAL(sigNetworkAdapterChange(CNetworkAdapter)),
             this, SIGNAL(sigNetworkAdapterChange(CNetworkAdapter)));
@@ -603,4 +606,20 @@
 }
 
+void UISession::sltVRDEChange()
+{
+    /* Get machine: */
+    const CMachine &machine = session().GetMachine();
+    /* Get VRDE server: */
+    const CVRDEServer &server = machine.GetVRDEServer();
+    bool fIsVRDEServerAvailable = !server.isNull();
+    /* Show/Hide VRDE action depending on VRDE server availability status: */
+    uimachine()->actionsPool()->action(UIActionIndex_Toggle_VRDEServer)->setVisible(fIsVRDEServerAvailable);
+    /* Check/Uncheck VRDE action depending on VRDE server activity status: */
+    if (fIsVRDEServerAvailable)
+        uimachine()->actionsPool()->action(UIActionIndex_Toggle_VRDEServer)->setChecked(server.GetEnabled());
+    /* Notify listeners about VRDE change: */
+    emit sigVRDEChange();
+}
+
 void UISession::sltAdditionsChange()
 {
@@ -967,16 +986,4 @@
     }
 
-    /* VRDE stuff: */
-    {
-        /* Get VRDE server: */
-        CVRDEServer server = machine.GetVRDEServer();
-        bool fIsVRDEServerAvailable = !server.isNull();
-        /* Show/Hide VRDE action depending on VRDE server availability status: */
-        uimachine()->actionsPool()->action(UIActionIndex_Toggle_VRDEServer)->setVisible(fIsVRDEServerAvailable);
-        /* Check/Uncheck VRDE action depending on VRDE server activity status: */
-        if (fIsVRDEServerAvailable)
-            uimachine()->actionsPool()->action(UIActionIndex_Toggle_VRDEServer)->setChecked(server.GetEnabled());
-    }
-
     /* Network stuff: */
     {
Index: trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h
===================================================================
--- trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 36363)
+++ trunk/src/VBox/Frontends/VirtualBox/src/runtime/UISession.h	(revision 36364)
@@ -168,4 +168,5 @@
     void sigNetworkAdapterChange(const CNetworkAdapter &networkAdapter);
     void sigMediumChange(const CMediumAttachment &mediumAttachment);
+    void sigVRDEChange();
     void sigUSBControllerChange();
     void sigUSBDeviceStateChange(const CUSBDevice &device, bool bIsAttached, const CVirtualBoxErrorInfo &error);
@@ -194,4 +195,5 @@
     void sltStateChange(KMachineState state);
     void sltAdditionsChange();
+    void sltVRDEChange();
 
 private:
