]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/toplevel.mm
Workaround for #15404: wxRichTextCtrl: caret does not disappear when focus is lost...
[wxWidgets.git] / src / cocoa / toplevel.mm
index 626dba27737cb9a1c940651b6dd1bf567beebdbb..17ca72dde4545178e287a8768496725585413c16 100644 (file)
@@ -4,9 +4,8 @@
 // Author:      David Elliott
 // Modified by:
 // Created:     2002/11/27
-// RCS-ID:      $Id$
 // Copyright:   (c) 2002 David Elliott
-// Licence:     wxWidgets licence
+// Licence:     wxWindows licence
 ///////////////////////////////////////////////////////////////////////////////
 
 // ============================================================================
@@ -32,6 +31,7 @@
 
 #include "wx/cocoa/autorelease.h"
 #include "wx/cocoa/string.h"
+#include "wx/cocoa/ObjcRef.h"
 
 #include "wx/cocoa/objc/NSView.h"
 #include "wx/cocoa/objc/NSWindow.h"
@@ -190,8 +190,8 @@ void wxTopLevelWindowCocoa::SetNSWindow(WX_NSWindow cocoaNSWindow)
     bool need_debug = cocoaNSWindow || m_cocoaNSWindow;
     if(need_debug) wxLogTrace(wxTRACE_COCOA_RetainRelease,wxT("wxTopLevelWindowCocoa=%p::SetNSWindow [m_cocoaNSWindow=%p retainCount]=%d"),this,m_cocoaNSWindow,[m_cocoaNSWindow retainCount]);
     DisassociateNSWindow(m_cocoaNSWindow);
-    [cocoaNSWindow retain];
-    [m_cocoaNSWindow release];
+    wxGCSafeRetain(cocoaNSWindow);
+    wxGCSafeRelease(m_cocoaNSWindow);
     m_cocoaNSWindow = cocoaNSWindow;
     // NOTE: We are no longer using posing so we won't get events on the
     // window's view unless it was explicitly created as the wx view class.
@@ -352,21 +352,26 @@ wxString wxTopLevelWindowCocoa::GetTitle() const
 wxWindow* wxTopLevelWindowCocoa::SetDefaultItem(wxWindow *win)
 {
     wxWindow *old = wxTopLevelWindowBase::SetDefaultItem(win);
-    NSView *newView = win->GetNSView();
 
     NSCell *newCell;
-    // newView does not have to be an NSControl, we only cast to NSControl*
-    // to silence the warning about cell not being implemented.
-    if(newView != nil && [newView respondsToSelector:@selector(cell)])
-        newCell = [(NSControl*)newView cell];
+    if(win != NULL)
+    {
+        NSView *newView = win->GetNSView();
+        // newView does not have to be an NSControl, we only cast to NSControl*
+        // to silence the warning about cell not being implemented.
+        if(newView != nil && [newView respondsToSelector:@selector(cell)])
+            newCell = [(NSControl*)newView cell];
+        else
+            newCell = nil;
+    
+        if(newCell != nil && ![newCell isKindOfClass:[NSButtonCell class]])
+        {   // It's not an NSButtonCell, set the default to nil.
+            newCell = nil;
+        }
+    }
     else
         newCell = nil;
 
-    if(newCell != nil && ![newCell isKindOfClass:[NSButtonCell class]])
-    {   // It's not an NSButtonCell, set the default to nil.
-        newCell = nil;
-    }
-
     [GetNSWindow() setDefaultButtonCell:(NSButtonCell*)newCell];
     return old;
 }