0027510: Visualization, OpenGl_Window - do not ignore backing store resize on OS X
authorkgv <kgv@opencascade.com>
Tue, 17 May 2016 18:22:54 +0000 (21:22 +0300)
committerbugmaster <bugmaster@opencascade.com>
Thu, 19 May 2016 11:01:30 +0000 (14:01 +0300)
src/OpenGl/OpenGl_Window_1.mm

index c2b02b2..0b3c6dd 100644 (file)
@@ -255,7 +255,25 @@ void OpenGl_Window::Resize()
   if (myWidthPt  == aWidthPt
    && myHeightPt == aHeightPt)
   {
+  #if defined(TARGET_OS_IPHONE) && TARGET_OS_IPHONE
     return;
+  #else
+    // check backing store change (moving to another screen)
+    NSOpenGLContext* aGLCtx = myGlContext->myGContext;
+    NSView* aView = [aGLCtx view];
+    if (![aView respondsToSelector: @selector(convertSizeToBacking:)])
+    {
+      return;
+    }
+
+    NSRect aBounds = [aView bounds];
+    NSSize aRes    = [aView convertSizeToBacking: aBounds.size];
+    if (myWidth  == Standard_Integer(aRes.width)
+     && myHeight == Standard_Integer(aRes.height))
+    {
+      return;
+    }
+  #endif
   }
 
   myWidthPt  = aWidthPt;