Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp	(revision 61973)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp	(revision 61974)
@@ -61,4 +61,7 @@
 #endif /* VBOX_WS_MAC */
     , m_fWasMinimized(false)
+#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+    , m_fIsMinimized(false)
+#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
 {
 }
@@ -537,4 +540,44 @@
 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */
 
+#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+void UIMachineWindowFullscreen::changeEvent(QEvent *pEvent)
+{
+    switch (pEvent->type())
+    {
+        case QEvent::WindowStateChange:
+        {
+            /* Watch for window state changes: */
+            QWindowStateChangeEvent *pChangeEvent = static_cast<QWindowStateChangeEvent*>(pEvent);
+            LogRel2(("GUI: UIMachineWindowFullscreen::changeEvent: Window state changed from %d to %d\n",
+                     (int)pChangeEvent->oldState(), (int)windowState()));
+            if (   windowState() == Qt::WindowMinimized
+                && pChangeEvent->oldState() == Qt::WindowNoState
+                && !m_fIsMinimized)
+            {
+                /* Mark window minimized, isMinimized() is not enough due to Qt5vsX11 fight: */
+                LogRel2(("GUI: UIMachineWindowFullscreen::changeEvent: Window minimized\n"));
+                m_fIsMinimized = true;
+            }
+            else
+            if (   windowState() == Qt::WindowNoState
+                && pChangeEvent->oldState() == Qt::WindowMinimized
+                && m_fIsMinimized)
+            {
+                /* Mark window restored, and do manual restoring with showInNecessaryMode(): */
+                LogRel2(("GUI: UIMachineWindowFullscreen::changeEvent: Window restored\n"));
+                m_fIsMinimized = false;
+                showInNecessaryMode();
+            }
+            break;
+        }
+        default:
+            break;
+    }
+
+    /* Call to base-class: */
+    UIMachineWindow::changeEvent(pEvent);
+}
+#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+
 #ifdef VBOX_WS_WIN
 # if QT_VERSION >= 0x050000
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h	(revision 61973)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.h	(revision 61974)
@@ -102,4 +102,9 @@
 #endif /* VBOX_WS_WIN || VBOX_WS_X11 */
 
+#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+    /** Handles @a pEvent about state change. */
+    void changeEvent(QEvent *pEvent);
+#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
+
 #ifdef VBOX_WS_WIN
 # if QT_VERSION >= 0x050000
@@ -124,4 +129,9 @@
       * Used to restore minimized state when the window shown again. */
     bool m_fWasMinimized;
+#if defined(VBOX_WS_X11) && QT_VERSION >= 0x050000
+    /** Holds whether the window is currently minimized.
+      * Used to restore full-screen state when the window restored again. */
+    bool m_fIsMinimized;
+#endif /* VBOX_WS_X11 && QT_VERSION >= 0x050000 */
 
     /** Factory support. */
