]> git.saurik.com Git - wxWidgets.git/blobdiff - src/cocoa/toplevel.mm
Fix wxLaunchDefaultBrowser on wxMSW for local files/directories: the bug could be...
[wxWidgets.git] / src / cocoa / toplevel.mm
index 626dba27737cb9a1c940651b6dd1bf567beebdbb..b4b55f1b530ea87b6d352f35a09910eb74bc274a 100644 (file)
@@ -32,6 +32,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 +191,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 +353,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;
 }