Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.h	(revision 27533)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxConsoleWnd.h	(revision 27534)
@@ -42,4 +42,5 @@
 #endif
 #ifdef Q_WS_MAC
+# include "VBoxUtils.h"
 # include <ApplicationServices/ApplicationServices.h>
 # ifndef QT_MAC_USE_COCOA
@@ -74,5 +75,5 @@
     virtual ~VBoxConsoleWnd();
 
-    bool isWindowMaximized() const
+    bool isWindowMaximized()
     {
 #ifdef Q_WS_MAC
@@ -80,5 +81,5 @@
          * maximize the window. This situation has to be considered when
          * checking for maximized or fullscreen mode. */
-        return !isTrueSeamless() && QMainWindow::isMaximized();
+        return !isTrueSeamless() && ::darwinIsWindowMaximized(this);
 #else /* Q_WS_MAC */
         return QMainWindow::isMaximized();
Index: /trunk/src/VBox/Frontends/VirtualBox/src/VBoxSelectorWnd.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/VBoxSelectorWnd.cpp	(revision 27533)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/VBoxSelectorWnd.cpp	(revision 27534)
@@ -734,5 +734,9 @@
             .arg (mNormalGeo.x()).arg (y)
             .arg (mNormalGeo.width()).arg (mNormalGeo.height());
+#ifdef Q_WS_MAC
+        if (::darwinIsWindowMaximized(this))
+#else /* Q_WS_MAC */
         if (isMaximized())
+#endif /* !Q_WS_MAC */
             winPos += QString (",%1").arg (VBoxDefs::GUI_LastWindowPosition_Max);
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/darwin/VBoxUtils-darwin-cocoa.mm
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/darwin/VBoxUtils-darwin-cocoa.mm	(revision 27533)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/darwin/VBoxUtils-darwin-cocoa.mm	(revision 27534)
@@ -185,7 +185,22 @@
 }
 
+bool darwinIsWindowMaximized(NativeWindowRef aWindow)
+{
+    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+    
+    bool fResult = [aWindow isZoomed];
+
+    [pool release];
+    return fResult;
+}
+
 float darwinSmallFontSize()
 {
-    return [NSFont systemFontSizeForControlSize: NSSmallControlSize];
-}
-
+    NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
+
+    float size = [NSFont systemFontSizeForControlSize: NSSmallControlSize];
+
+    [pool release];
+    return size;
+}
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/darwin/VBoxUtils-darwin.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/darwin/VBoxUtils-darwin.cpp	(revision 27533)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/darwin/VBoxUtils-darwin.cpp	(revision 27534)
@@ -105,4 +105,15 @@
 {
     ::darwinSetShowsResizeIndicatorImpl (::darwinToNativeWindow (aWidget), aEnabled);
+}
+
+bool darwinIsWindowMaximized(QWidget *aWidget)
+{
+#ifdef QT_MAC_USE_COCOA
+    /* Currently only necessary in the Cocoa version */
+    return ::darwinIsWindowMaximized(::darwinToNativeWindow(aWidget));
+#else /* QT_MAC_USE_COCOA */
+    NOREF (aWidget);
+    return false;
+#endif /* !QT_MAC_USE_COCOA */
 }
 
Index: /trunk/src/VBox/Frontends/VirtualBox/src/darwin/VBoxUtils-darwin.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/darwin/VBoxUtils-darwin.h	(revision 27533)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/darwin/VBoxUtils-darwin.h	(revision 27534)
@@ -93,4 +93,6 @@
 void darwinWindowInvalidateShadowImpl (NativeWindowRef aWindow);
 int  darwinWindowToolBarHeight (NativeWindowRef aWindow);
+bool darwinIsWindowMaximized(NativeWindowRef aWindow);
+
 float darwinSmallFontSize();
 bool darwinSetFrontMostProcess();
@@ -172,4 +174,5 @@
 void darwinWindowInvalidateShadow (QWidget *aWidget);
 int  darwinWindowToolBarHeight (QWidget *aWidget);
+bool darwinIsWindowMaximized(QWidget *aWidget);
 QString darwinSystemLanguage (void);
 QPixmap darwinCreateDragPixmap (const QPixmap& aPixmap, const QString &aText);
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 27533)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.cpp	(revision 27534)
@@ -30,4 +30,5 @@
 /* Local includes */
 #include "VBoxGlobal.h"
+#include "VBoxUtils.h"
 
 #include "UIActionsPool.h"
@@ -260,5 +261,5 @@
         {
             QResizeEvent *pResizeEvent = static_cast<QResizeEvent*>(pEvent);
-            if (!isMaximized())
+            if (!isMaximizedChecked())
             {
                 m_normalGeometry.setSize(pResizeEvent->size());
@@ -272,5 +273,5 @@
         case QEvent::Move:
         {
-            if (!isMaximized())
+            if (!isMaximizedChecked())
             {
                 m_normalGeometry.moveTo(geometry().x(), geometry().y());
@@ -559,4 +560,5 @@
     CMachine machine = session().GetMachine();
 
+    printf("bla\n");
     /* Save extra-data settings: */
     {
@@ -564,5 +566,5 @@
                                     .arg(m_normalGeometry.x()).arg(m_normalGeometry.y())
                                     .arg(m_normalGeometry.width()).arg(m_normalGeometry.height());
-        if (isMaximized())
+        if (isMaximizedChecked())
             strWindowPosition += QString(",%1").arg(VBoxDefs::GUI_LastWindowPosition_Max);
         QString strPositionAddress = m_uScreenId == 0 ? QString("%1").arg(VBoxDefs::GUI_LastWindowPosition) :
@@ -595,2 +597,12 @@
 }
 
+bool UIMachineWindowNormal::isMaximizedChecked()
+{
+#ifdef Q_WS_MAC
+    /* On the Mac the WindowStateChange signal doesn't seems to be delivered
+     * when the user get out of the maximized state. So check this ourself. */
+    return ::darwinIsWindowMaximized(this);
+#endif /* !Q_WS_MAC */
+    return isMaximized();
+}
+
Index: /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.h
===================================================================
--- /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.h	(revision 27533)
+++ /trunk/src/VBox/Frontends/VirtualBox/src/runtime/normal/UIMachineWindowNormal.h	(revision 27534)
@@ -106,4 +106,5 @@
     /* Other members: */
     void showSimple();
+    bool isMaximizedChecked();
 
     /* Indicators pool: */
