From: David Elliott Date: Fri, 20 Jul 2007 20:35:57 +0000 (+0000) Subject: wxCocoa: Implement wxTopLevelWindow::SetDefaultItem X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/e875c17db746544c0f02c628da521542d0f2f059 wxCocoa: Implement wxTopLevelWindow::SetDefaultItem Copyright 2007, Software 2000 Ltd. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@47600 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/include/wx/cocoa/toplevel.h b/include/wx/cocoa/toplevel.h index da0129e07d..4a4780e9b6 100644 --- a/include/wx/cocoa/toplevel.h +++ b/include/wx/cocoa/toplevel.h @@ -106,6 +106,8 @@ public: virtual void SetTitle( const wxString& title); virtual wxString GetTitle() const; + // Default button (item) + wxWindow *SetDefaultItem(wxWindow *win); // Things I may/may not do // virtual void SetIcons(const wxIconBundle& icons); diff --git a/src/cocoa/toplevel.mm b/src/cocoa/toplevel.mm index 83dd00623d..f2e44d4b44 100644 --- a/src/cocoa/toplevel.mm +++ b/src/cocoa/toplevel.mm @@ -36,6 +36,8 @@ #include "wx/cocoa/objc/NSView.h" #include "wx/cocoa/objc/NSWindow.h" #import +#import +#import // ---------------------------------------------------------------------------- // globals @@ -353,6 +355,28 @@ wxString wxTopLevelWindowCocoa::GetTitle() const return wxStringWithNSString([m_cocoaNSWindow title]); } +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]; + 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; +} + bool wxTopLevelWindowCocoa::ShowFullScreen(bool show, long style) { return false;