FE/Qt: github:gh-197 and github:gh-243: Runtime UI / Windows host: A try to fix full... master
authorvboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>
Thu, 23 Oct 2025 14:08:21 +0000 (23 14:08 +0000)
committervboxsync <vboxsync@cfe28804-0f27-0410-a406-dd0f0b0b656f>
Thu, 23 Oct 2025 14:08:21 +0000 (23 14:08 +0000)
git-svn-id: https://www.virtualbox.org/svn/vbox/trunk@110963 cfe28804-0f27-0410-a406-dd0f0b0b656f

src/VBox/Frontends/VirtualBox/src/runtime/fullscreen/UIMachineWindowFullscreen.cpp
src/VBox/Frontends/VirtualBox/src/widgets/UIMiniToolBar.cpp

index 7df5d0a..fcf085d 100644 (file)
@@ -379,8 +379,9 @@ void UIMachineWindowFullscreen::placeOnScreen()
 
     /* Map window onto required screen: */
     windowHandle()->setScreen(qApp->screens().at(iHostScreen));
-    /* Set appropriate window size: */
+    /* Set appropriate window position&size: */
     resize(workingArea.size());
+    move(workingArea.topLeft());
 
 #elif defined(VBOX_WS_NIX)
 
@@ -458,11 +459,17 @@ void UIMachineWindowFullscreen::showInNecessaryMode()
         if (fWasMinimized)
             setWindowState(Qt::WindowNoState);
 
+        /* Exit full-screen if necessary: */
+        if (isFullScreen())
+            showNormal();
+
         /* Make sure window have appropriate geometry: */
         placeOnScreen();
 
-        /* Show window: */
-        showFullScreen();
+        /* First of all show window in normal mode
+         * then request full-screen mode async way: */
+        showNormal();
+        QTimer::singleShot(0, this, SLOT(showFullScreen()));
 
         /* Restore minimized state if necessary: */
         if (m_fWasMinimized || fWasMinimized)
index f0c5600..d13f971 100644 (file)
@@ -862,8 +862,10 @@ void UIMiniToolBar::sltShow()
         }
         case GeometryType_Full:
         {
-            /* Show full-screen: */
-            showFullScreen();
+            /* First of all show window in normal mode
+             * then request full-screen mode async way: */
+            showNormal();
+            QTimer::singleShot(0, this, SLOT(showFullScreen()));
             break;
         }
     }
@@ -963,17 +965,19 @@ void UIMiniToolBar::sltAdjust()
         }
         case GeometryType_Full:
         {
-            /* Map window onto required screen: */
-            LogRel(("GUI:  Map mini-toolbar for window #%d to screen %d of %d\n",
-                     m_iWindowIndex, iHostScreen, qApp->screens().size()));
-            windowHandle()->setScreen(qApp->screens().at(iHostScreen));
-
             /* Set appropriate window size: */
             const QSize newSize = workingArea.size();
             LogRel(("GUI:  Resize mini-toolbar for window #%d to %dx%d\n",
                      m_iWindowIndex, newSize.width(), newSize.height()));
             resize(newSize);
 
+            /* Map/move window onto required screen: */
+            const QPoint newPosition = workingArea.topLeft();
+            LogRel(("GUI:  Map&move mini-toolbar for window #%d to screen %d of %d\n",
+                     m_iWindowIndex, iHostScreen, qApp->screens().size()));
+            windowHandle()->setScreen(qApp->screens().at(iHostScreen));
+            move(newPosition);
+
             break;
         }
     }