Index: /trunk/src/VBox/Main/DisplayImpl.cpp
===================================================================
--- /trunk/src/VBox/Main/DisplayImpl.cpp	(revision 35176)
+++ /trunk/src/VBox/Main/DisplayImpl.cpp	(revision 35177)
@@ -429,4 +429,5 @@
 
         maFramebuffers[ul].pFramebuffer = NULL;
+        maFramebuffers[ul].fDisabled = false;
 
         maFramebuffers[ul].xOrigin = 0;
@@ -3852,6 +3853,32 @@
     if (pScreen->u16Flags & VBVA_SCREEN_F_DISABLED)
     {
-        fireGuestMonitorDisabledEvent(pThis->mParent->getEventSource(), pScreen->u32ViewIndex);
+        pFBInfo->fDisabled = true;
+
+        /* Temporary: ask framebuffer to resize using a default format. The framebuffer will be black. */
+        pThis->handleDisplayResize(pScreen->u32ViewIndex, 0,
+                                   (uint8_t *)NULL,
+                                   0, pFBInfo->w, pFBInfo->h, pScreen->u16Flags);
+
+        fireGuestMonitorChangedEvent(pThis->mParent->getEventSource(),
+                                     GuestMonitorChangedEventType_Disabled,
+                                     pScreen->u32ViewIndex,
+                                     0, 0, 0, 0);
         return VINF_SUCCESS;
+    }
+
+    if (pFBInfo->fDisabled)
+    {
+        pFBInfo->fDisabled = false;
+        fireGuestMonitorChangedEvent(pThis->mParent->getEventSource(),
+                                     GuestMonitorChangedEventType_Enabled,
+                                     pScreen->u32ViewIndex,
+                                     pScreen->i32OriginX, pScreen->i32OriginY,
+                                     pScreen->u32Width, pScreen->u32Height);
+        if (pFBInfo->pFramebuffer.isNull())
+        {
+            /* @todo If no framebuffer, remember the resize parameters to issue a requestResize later. */
+            return VINF_SUCCESS;
+        }
+        /* If the framebuffer already set for the screen, do a regular resize. */
     }
 
@@ -3886,5 +3913,9 @@
     if (fNewOrigin)
     {
-        /* @todo May be framebuffer/display should be notified in this case. */
+        fireGuestMonitorChangedEvent(pThis->mParent->getEventSource(),
+                                     GuestMonitorChangedEventType_NewOrigin,
+                                     pScreen->u32ViewIndex,
+                                     pScreen->i32OriginX, pScreen->i32OriginY,
+                                     0, 0);
     }
 
Index: /trunk/src/VBox/Main/idl/VirtualBox.xidl
===================================================================
--- /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 35176)
+++ /trunk/src/VBox/Main/idl/VirtualBox.xidl	(revision 35177)
@@ -14765,5 +14765,5 @@
   <enum
     name="VBoxEventType"
-    uuid="ad800907-657f-4cd5-b14e-b609fd280a49"
+    uuid="e71c487f-755e-46e9-a476-dd6a5d134597"
     >
 
@@ -15013,7 +15013,7 @@
       </desc>
     </const>
-    <const name="OnGuestMonitorDisabled" value="70">
-      <desc>
-        See <link to="IGuestMonitorDisabledEvent">IGuestMonitorDisabledEvent</link>.
+    <const name="OnGuestMonitorChanged" value="70">
+      <desc>
+        See <link to="IGuestMonitorChangedEvent">IGuestMonitorChangedEvent</link>.
       </desc>
     </const>
@@ -16335,18 +16335,81 @@
   </interface>
 
+  <enum
+    name="GuestMonitorChangedEventType"
+    uuid="ef172985-7e36-4297-95be-e46396968d66"
+    >
+
+    <desc>
+      How the guest monitor has been changed.
+    </desc>
+
+    <const name="Enabled" value="0">
+      <desc>
+        The guest monitor has been enabled by the guest.
+      </desc>
+    </const>
+
+    <const name="Disabled" value="1">
+      <desc>
+        The guest monitor has been disabled by the guest.
+      </desc>
+    </const>
+
+    <const name="NewOrigin" value="2">
+      <desc>
+        The guest monitor origin has changed in the guest.
+      </desc>
+    </const>
+  </enum>
+
   <interface
-    name="IGuestMonitorDisabledEvent" extends="IEvent"
-    uuid="87760f7d-05fc-40d8-be04-5bf2763a51d5"
-    wsmap="managed" autogen="VBoxEvent" id="OnGuestMonitorDisabled"
+    name="IGuestMonitorChangedEvent" extends="IEvent"
+    uuid="0f7b8a22-c71f-4a36-8e5f-a77d01d76090"
+    wsmap="managed" autogen="VBoxEvent" id="OnGuestMonitorChanged"
     >
     <desc>
-      Notification when the guest disables one of its monitors.
+      Notification when the guest enables one of its monitors.
     </desc>
 
+    <attribute name="changeType" type="GuestMonitorChangedEventType" readonly="yes">
+      <desc>
+        What was changed for this guest monitor.
+      </desc>
+    </attribute>
+
     <attribute name="screenId" type="unsigned long" readonly="yes">
       <desc>
-        The monitor which was disabled.
-      </desc>
-    </attribute>
+        The monitor which was changed.
+      </desc>
+    </attribute>
+
+    <attribute name="originX" type="unsigned long" readonly="yes">
+      <desc>
+        Physical X origin relative to the primary screen.
+        Valid for Enabled and NewOrigin.
+      </desc>
+    </attribute>
+
+    <attribute name="originY" type="unsigned long" readonly="yes">
+      <desc>
+        Physical Y origin relative to the primary screen.
+        Valid for Enabled and NewOrigin.
+      </desc>
+    </attribute>
+
+    <attribute name="width" type="unsigned long" readonly="yes">
+      <desc>
+        Width of the screen.
+        Valid for Enabled.
+      </desc>
+    </attribute>
+
+    <attribute name="height" type="unsigned long" readonly="yes">
+      <desc>
+        Height of the screen.
+        Valid for Enabled.
+      </desc>
+    </attribute>
+
   </interface>
 
Index: /trunk/src/VBox/Main/include/DisplayImpl.h
===================================================================
--- /trunk/src/VBox/Main/include/DisplayImpl.h	(revision 35176)
+++ /trunk/src/VBox/Main/include/DisplayImpl.h	(revision 35177)
@@ -42,4 +42,5 @@
 
     ComPtr<IFramebuffer> pFramebuffer;
+    bool fDisabled;
 
     LONG xOrigin;
