Index: opencv/modules/highgui/src/window.cpp
===================================================================
--- opencv/modules/highgui/src/window.cpp	(revision 8637)
+++ opencv/modules/highgui/src/window.cpp	(working copy)
@@ -62,6 +62,8 @@
             cvSetModeWindow_GTK(name,prop_value);
         #elif defined (HAVE_CARBON)
             cvSetModeWindow_CARBON(name,prop_value);
+        #elif defined (HAVE_COCOA)
+            cvSetModeWindow_COCOA(name,prop_value);
         #endif
     break;
 
@@ -99,6 +101,8 @@
             return cvGetModeWindow_GTK(name);
         #elif defined (HAVE_CARBON)
             return cvGetModeWindow_CARBON(name);
+        #elif defined (HAVE_COCOA)
+            return cvGetModeWindow_COCOA(name);
         #else
             return -1;
         #endif
Index: opencv/modules/highgui/src/window_cocoa.mm
===================================================================
--- opencv/modules/highgui/src/window_cocoa.mm	(revision 8637)
+++ opencv/modules/highgui/src/window_cocoa.mm	(working copy)
@@ -109,13 +109,15 @@
 	CvMouseCallback mouseCallback;
 	void *mouseParam;
 	BOOL autosize;
-	BOOL firstContent; 
+	BOOL firstContent;
+    int status;
 }
 @property(assign) CvMouseCallback mouseCallback;
 @property(assign) void *mouseParam;
 @property(assign) BOOL autosize;
 @property(assign) BOOL firstContent; 
 @property(retain) NSMutableDictionary *sliders;
+@property(readwrite) int status;
 - (CVView *)contentView;
 - (void)cvSendMouseEvent:(NSEvent *)event type:(int)type flags:(int)flags;
 - (void)cvMouseEvent:(NSEvent *)event;
@@ -533,6 +535,75 @@
 	return returnCode;
 }
 
+double cvGetModeWindow_COCOA( const char* name )
+{
+    double result = -1;
+    CVWindow *window = nil;
+
+    CV_FUNCNAME( "cvGetModeWindow_COCOA" );
+
+    __BEGIN__;
+    if( name == NULL )
+    {
+        CV_ERROR( CV_StsNullPtr, "NULL name string" );
+    }
+
+    window = cvGetWindow( name );
+    if ( window == NULL )
+    {
+        CV_ERROR( CV_StsNullPtr, "NULL window" );
+    }
+
+    result = window.status;
+
+    __END__;
+    return result;
+}
+
+void cvSetModeWindow_COCOA( const char* name, double prop_value )
+{
+    CVWindow *window = nil;
+    NSDictionary *fullscreenOptions = nil;
+    NSAutoreleasePool* localpool = nil;
+
+    CV_FUNCNAME( "cvSetModeWindow_COCOA" );
+
+    __BEGIN__;
+    if( name == NULL )
+    {
+        CV_ERROR( CV_StsNullPtr, "NULL name string" );
+    }
+
+    window = cvGetWindow(name);
+    if ( window == NULL )
+    {
+        CV_ERROR( CV_StsNullPtr, "NULL window" );
+    }
+
+    if ( [window autosize] )
+    {
+        return;
+    }
+
+    localpool = [[NSAutoreleasePool alloc] init];
+
+    fullscreenOptions = [NSDictionary dictionaryWithObject:[NSNumber numberWithBool:YES] forKey:NSFullScreenModeSetting];
+    if ( [[window contentView] isInFullScreenMode] && prop_value==CV_WINDOW_NORMAL )
+    {
+        [[window contentView] exitFullScreenModeWithOptions:fullscreenOptions];
+        window.status=CV_WINDOW_NORMAL;
+    }
+    else if( ![[window contentView] isInFullScreenMode] && prop_value==CV_WINDOW_FULLSCREEN )
+    {
+        [[window contentView] enterFullScreenMode:[NSScreen mainScreen] withOptions:fullscreenOptions];
+        window.status=CV_WINDOW_FULLSCREEN;
+    }
+
+    [localpool drain];
+
+    __END__;
+}
+
 @implementation CVWindow 
 
 @synthesize mouseCallback;
@@ -540,6 +611,7 @@
 @synthesize autosize;
 @synthesize firstContent; 
 @synthesize sliders;
+@synthesize status;
 
 - (void)cvSendMouseEvent:(NSEvent *)event type:(int)type flags:(int)flags {
 	//cout << "cvSendMouseEvent" << endl; 
@@ -787,9 +859,11 @@
 	NSAutoreleasePool* localpool = [[NSAutoreleasePool alloc] init];
 	CVWindow *cvwindow = (CVWindow *)[self window];
 	int height = 0;
-	for(NSString *key in [cvwindow sliders]) {
-		height += [[[cvwindow sliders] valueForKey:key] frame].size.height;
-	}
+    if ([cvwindow respondsToSelector:@selector(sliders)]) {
+        for(NSString *key in [cvwindow sliders]) {
+            height += [[[cvwindow sliders] valueForKey:key] frame].size.height;
+        }
+    }
 	
 
 	NSRect imageRect = {{0,0}, {[image size].width, [image size].height}};
Index: opencv/modules/highgui/src/precomp.hpp
===================================================================
--- opencv/modules/highgui/src/precomp.hpp	(revision 8637)
+++ opencv/modules/highgui/src/precomp.hpp	(working copy)
@@ -172,10 +172,12 @@
 void cvSetModeWindow_W32(const char* name, double prop_value);
 void cvSetModeWindow_GTK(const char* name, double prop_value);
 void cvSetModeWindow_CARBON(const char* name, double prop_value);
+void cvSetModeWindow_COCOA(const char* name, double prop_value);
 
 double cvGetModeWindow_W32(const char* name);
 double cvGetModeWindow_GTK(const char* name);
 double cvGetModeWindow_CARBON(const char* name);
+double cvGetModeWindow_COCOA(const char* name);
 
 double cvGetPropWindowAutoSize_W32(const char* name);
 double cvGetPropWindowAutoSize_GTK(const char* name);
