Cocoa: Implement screen availableGeometry.
authorMorten Johan Sorvig <morten.sorvig@nokia.com>
Fri, 16 Mar 2012 13:26:15 +0000 (14:26 +0100)
committerQt by Nokia <qt-info@nokia.com>
Wed, 21 Mar 2012 06:00:34 +0000 (07:00 +0100)
As usual the y coordinate needs to be inverted.

Change-Id: Iac9b48f9bdb475a3d5a76b930c2e138a625f1ef8
Reviewed-by: Bradley T. Hughes <bradley.hughes@nokia.com>
Reviewed-by: Marius Storm-Olsen <marius.storm-olsen@nokia.com>
src/plugins/platforms/cocoa/qcocoaintegration.h
src/plugins/platforms/cocoa/qcocoaintegration.mm

index 97e7a7f..fb3ee32 100644 (file)
@@ -61,6 +61,7 @@ public:
     ~QCocoaScreen();
 
     QRect geometry() const { return m_geometry; }
+    QRect availableGeometry() const { return m_availableGeometry; }
     int depth() const { return m_depth; }
     QImage::Format format() const { return m_format; }
     QSizeF physicalSize() const { return m_physicalSize; }
@@ -69,6 +70,7 @@ public:
 public:
     NSScreen *m_screen;
     QRect m_geometry;
+    QRect m_availableGeometry;
     int m_depth;
     QImage::Format m_format;
     QSizeF m_physicalSize;
index f5febd4..f91351a 100644 (file)
@@ -69,8 +69,12 @@ QCocoaScreen::QCocoaScreen(int screenIndex)
     :QPlatformScreen()
 {
     m_screen = [[NSScreen screens] objectAtIndex:screenIndex];
-    NSRect rect = [m_screen frame];
-    m_geometry = QRect(rect.origin.x,rect.origin.y,rect.size.width,rect.size.height);
+    NSRect frameRect = [m_screen frame];
+    m_geometry = QRect(frameRect.origin.x, frameRect.origin.y, frameRect.size.width, frameRect.size.height);
+    NSRect visibleRect = [m_screen visibleFrame];
+    m_availableGeometry = QRect(visibleRect.origin.x,
+                                frameRect.size.height - (visibleRect.origin.y + visibleRect.size.height), // invert y
+                                visibleRect.size.width, visibleRect.size.height);
 
     m_format = QImage::Format_RGB32;