Index: /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainWindow.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainWindow.cpp	(revision 81254)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainWindow.cpp	(revision 81255)
@@ -21,4 +21,7 @@
 /* GUI includes: */
 #include "QIMainWindow.h"
+#ifdef VBOX_WS_MAC
+# include "VBoxUtils-darwin.h"
+#endif
 #ifdef VBOX_WS_X11
 # include "UICommon.h"
@@ -75,6 +78,7 @@
 }
 
-void QIMainWindow::restoreGeometry()
+void QIMainWindow::restoreGeometry(const QRect &rect)
 {
+    m_geometry = rect;
 #if defined(VBOX_WS_MAC) || defined(VBOX_WS_WIN)
     /* Use the old approach for OSX/Win: */
@@ -90,2 +94,16 @@
         showMaximized();
 }
+
+QRect QIMainWindow::currentGeometry() const
+{
+    return m_geometry;
+}
+
+bool QIMainWindow::isCurrentlyMaximized() const
+{
+#ifdef VBOX_WS_MAC
+    return ::darwinIsWindowMaximized(this);
+#else
+    return isMaximized();
+#endif
+}
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainWindow.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainWindow.h	(revision 81254)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extensions/QIMainWindow.h	(revision 81255)
@@ -53,6 +53,13 @@
     virtual bool shouldBeMaximized() const { return false; }
 
-    /** Restores the cached window geometry. */
-    void restoreGeometry();
+    /** Restores the window geometry to passed @a rect. */
+    void restoreGeometry(const QRect &rect);
+
+    /** Returns current window geometry. */
+    QRect currentGeometry() const;
+    /** Returns whether the window is currently maximized. */
+    bool isCurrentlyMaximized() const;
+
+private:
 
     /** Holds the cached window geometry. */
Index: /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 81254)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/extradata/UIExtraDataManager.cpp	(revision 81255)
@@ -1682,11 +1682,8 @@
     /* Load window geometry: */
     {
-        /* Load geometry: */
-        m_geometry = gEDataManager->extraDataManagerGeometry(this);
-
-        /* Restore geometry: */
+        const QRect geo = gEDataManager->extraDataManagerGeometry(this);
         LogRel2(("GUI: UIExtraDataManagerWindow: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n",
-                 m_geometry.x(), m_geometry.y(), m_geometry.width(), m_geometry.height()));
-        restoreGeometry();
+                 geo.x(), geo.y(), geo.width(), geo.height()));
+        restoreGeometry(geo);
     }
 
@@ -1706,12 +1703,8 @@
     /* Save window geometry: */
     {
-        /* Save geometry: */
-#ifdef VBOX_WS_MAC
-        gEDataManager->setExtraDataManagerGeometry(m_geometry, ::darwinIsWindowMaximized(this));
-#else /* VBOX_WS_MAC */
-        gEDataManager->setExtraDataManagerGeometry(m_geometry, isMaximized());
-#endif /* !VBOX_WS_MAC */
-        LogRel2(("GUI: UIExtraDataManagerWindow: Geometry saved as: Origin=%dx%d, Size=%dx%d\n",
-                 m_geometry.x(), m_geometry.y(), m_geometry.width(), m_geometry.height()));
+        const QRect geo = currentGeometry();
+        LogRel2(("GUI: UIExtraDataManagerWindow: Saving geometry as: Origin=%dx%d, Size=%dx%d\n",
+                 geo.x(), geo.y(), geo.width(), geo.height()));
+        gEDataManager->setExtraDataManagerGeometry(geo, isCurrentlyMaximized());
     }
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp	(revision 81254)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/manager/UIVirtualBoxManager.cpp	(revision 81255)
@@ -225,6 +225,7 @@
 
     /* Restore the geometry cached by the window: */
-    resize(m_geometry.size());
-    move(m_geometry.topLeft());
+    const QRect geo = currentGeometry();
+    resize(geo.size());
+    move(geo.topLeft());
 }
 #endif /* VBOX_WS_X11 */
@@ -1490,11 +1491,8 @@
     /* Load window geometry: */
     {
-        /* Load geometry: */
-        m_geometry = gEDataManager->selectorWindowGeometry(this);
-
-        /* Restore geometry: */
+        const QRect geo = gEDataManager->selectorWindowGeometry(this);
         LogRel2(("GUI: UIVirtualBoxManager: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n",
-                 m_geometry.x(), m_geometry.y(), m_geometry.width(), m_geometry.height()));
-        restoreGeometry();
+                 geo.x(), geo.y(), geo.width(), geo.height()));
+        restoreGeometry(geo);
     }
 }
@@ -1504,11 +1502,8 @@
     /* Save window geometry: */
     {
-#ifdef VBOX_WS_MAC
-        gEDataManager->setSelectorWindowGeometry(m_geometry, ::darwinIsWindowMaximized(this));
-#else /* VBOX_WS_MAC */
-        gEDataManager->setSelectorWindowGeometry(m_geometry, isMaximized());
-#endif /* !VBOX_WS_MAC */
-        LogRel2(("GUI: UIVirtualBoxManager: Geometry saved as: Origin=%dx%d, Size=%dx%d\n",
-                 m_geometry.x(), m_geometry.y(), m_geometry.width(), m_geometry.height()));
+        const QRect geo = currentGeometry();
+        LogRel2(("GUI: UIVirtualBoxManager: Saving geometry as: Origin=%dx%d, Size=%dx%d\n",
+                 geo.x(), geo.y(), geo.width(), geo.height()));
+        gEDataManager->setSelectorWindowGeometry(geo, isCurrentlyMaximized());
     }
 }
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.cpp	(revision 81254)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/information/UIVMInformationDialog.cpp	(revision 81255)
@@ -254,11 +254,8 @@
     /* Load window geometry: */
     {
-        /* Load geometry: */
-        m_geometry = gEDataManager->sessionInformationDialogGeometry(this, m_pMachineWindow);
-
-        /* Restore geometry: */
+        const QRect geo = gEDataManager->sessionInformationDialogGeometry(this, m_pMachineWindow);
         LogRel2(("GUI: UIVMInformationDialog: Restoring geometry to: Origin=%dx%d, Size=%dx%d\n",
-                 m_geometry.x(), m_geometry.y(), m_geometry.width(), m_geometry.height()));
-        restoreGeometry();
+                 geo.x(), geo.y(), geo.width(), geo.height()));
+        restoreGeometry(geo);
     }
 }
@@ -268,12 +265,8 @@
     /* Save window geometry: */
     {
-        /* Save geometry: */
-#ifdef VBOX_WS_MAC
-        gEDataManager->setSessionInformationDialogGeometry(m_geometry, ::darwinIsWindowMaximized(this));
-#else /* VBOX_WS_MAC */
-        gEDataManager->setSessionInformationDialogGeometry(m_geometry, isMaximized());
-#endif /* !VBOX_WS_MAC */
-        LogRel2(("GUI: UIVMInformationDialog: Geometry saved as: Origin=%dx%d, Size=%dx%d\n",
-                 m_geometry.x(), m_geometry.y(), m_geometry.width(), m_geometry.height()));
+        const QRect geo = currentGeometry();
+        LogRel2(("GUI: UIVMInformationDialog: Saving geometry as: Origin=%dx%d, Size=%dx%d\n",
+                 geo.x(), geo.y(), geo.width(), geo.height()));
+        gEDataManager->setSessionInformationDialogGeometry(geo, isCurrentlyMaximized());
     }
 }
