@@ -195,6 +195,9 @@ CV_IMPL void cvDestroyWindow( const char* name)
195195// cout << "cvDestroyWindow" << endl;
196196 CVWindow *window =cvGetWindow (name);
197197if (window) {
198+ if ([windowstyleMask ] &NSFullScreenWindowMask ) {
199+ [windowtoggleFullScreen: nil ];
200+ }
198201 [windowclose ];
199202 [windowsremoveObjectForKey: [NSString stringWithFormat: @" %s " , name]];
200203 }
@@ -701,7 +704,11 @@ CvRect cvGetWindowRect_COCOA( const char* name )
701704void cvSetModeWindow_COCOA (const char * name,double prop_value )
702705{
703706 CVWindow *window =nil ;
707+
708+ #if MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_7
704709NSDictionary *fullscreenOptions =nil ;
710+ #endif
711+
705712NSAutoreleasePool * localpool =nil ;
706713
707714CV_FUNCNAME (" cvSetModeWindow_COCOA" );
@@ -725,6 +732,31 @@ void cvSetModeWindow_COCOA( const char* name, double prop_value )
725732
726733 localpool = [[NSAutoreleasePool alloc ]init ];
727734
735+ #if MAC_OS_X_VERSION_MAX_ALLOWED > MAC_OS_X_VERSION_10_6
736+ if ( ([windowstyleMask ] &NSFullScreenWindowMask ) && prop_value==CV_WINDOW_NORMAL )
737+ {
738+ [windowtoggleFullScreen: nil ];
739+
740+ window.status =CV_WINDOW_NORMAL;
741+ }
742+ else if ( !([windowstyleMask ] &NSFullScreenWindowMask ) && prop_value==CV_WINDOW_FULLSCREEN )
743+ {
744+ [windowsetCollectionBehavior: NSWindowCollectionBehaviorFullScreenPrimary];
745+
746+ NSScreen * screen = [windowscreen ];
747+
748+ NSRect frame = [screenframe ];
749+ [windowsetFrame: framedisplay: YES ];
750+
751+ [windowsetContentSize: frame.size];
752+
753+ [windowtoggleFullScreen: nil ];
754+
755+ [windowsetFrameTopLeftPoint: frame.origin];
756+
757+ window.status =CV_WINDOW_FULLSCREEN;
758+ }
759+ #else
728760 fullscreenOptions = [NSDictionary dictionaryWithObject: [NSNumber numberWithBool: YES ]forKey: NSFullScreenModeSetting ];
729761if ( [[windowcontentView ]isInFullScreenMode ] && prop_value==CV_WINDOW_NORMAL )
730762 {
@@ -736,7 +768,7 @@ void cvSetModeWindow_COCOA( const char* name, double prop_value )
736768 [[windowcontentView ]enterFullScreenMode: [NSScreen mainScreen ]withOptions: fullscreenOptions];
737769 window.status =CV_WINDOW_FULLSCREEN;
738770 }
739-
771+ # endif
740772 [localpooldrain ];
741773
742774 __END__;
@@ -810,7 +842,7 @@ void cvSetPropTopmost_COCOA( const char* name, const bool topmost )
810842CV_ERROR ( CV_StsNullPtr," NULL window" );
811843 }
812844
813- if ([[ windowcontentView ] isInFullScreenMode ] )
845+ if (([ windowstyleMask ] & NSFullScreenWindowMask ) )
814846 {
815847 EXIT;
816848 }