X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/03859c918c4c1c740291ca6e90ee2d9d6166b11b..d363c7dbb097801935c0e5c5b05e4d1b4f592032:/src/cocoa/toplevel.mm diff --git a/src/cocoa/toplevel.mm b/src/cocoa/toplevel.mm index 3e73b00ceb..cf8559d9de 100644 --- a/src/cocoa/toplevel.mm +++ b/src/cocoa/toplevel.mm @@ -6,7 +6,7 @@ // Created: 2002/11/27 // RCS-ID: $Id$ // Copyright: (c) 2002 David Elliott -// Licence: wxWidgets licence +// Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// // ============================================================================ @@ -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. @@ -222,7 +223,7 @@ void wxTopLevelWindowCocoa::CocoaDelegate_windowDidBecomeKey(void) wxLogTrace(wxTRACE_COCOA,wxT("wxTopLevelWindowCocoa=%p::CocoaDelegate_windowDidBecomeKey"),this); wxActivateEvent event(wxEVT_ACTIVATE, true, GetId()); event.SetEventObject(this); - GetEventHandler()->ProcessEvent(event); + HandleWindowEvent(event); } void wxTopLevelWindowCocoa::CocoaDelegate_windowDidResignKey(void) @@ -230,7 +231,7 @@ void wxTopLevelWindowCocoa::CocoaDelegate_windowDidResignKey(void) wxLogTrace(wxTRACE_COCOA,wxT("wxTopLevelWindowCocoa=%p::CocoaDelegate_windowDidResignKey"),this); wxActivateEvent event(wxEVT_ACTIVATE, false, GetId()); event.SetEventObject(this); - GetEventHandler()->ProcessEvent(event); + HandleWindowEvent(event); } void wxTopLevelWindowCocoa::CocoaDelegate_windowDidBecomeMain(void) @@ -301,7 +302,7 @@ bool wxTopLevelWindowCocoa::Show(bool show) // is shown. I doubt this will cause any problems though. wxSizeEvent event(GetSize(), GetId()); event.SetEventObject(this); - GetEventHandler()->ProcessEvent(event); + HandleWindowEvent(event); [m_cocoaNSWindow makeKeyAndOrderFront:m_cocoaNSWindow]; } @@ -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; }