From feb8276801ff0a375d5a9221b40d6b45d4552656 Mon Sep 17 00:00:00 2001 From: David Elliott Date: Thu, 24 Jun 2004 15:14:33 +0000 Subject: [PATCH] * Do not use class posing to handle target/action. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@28005 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/cocoa/NSButton.h | 14 ++++++++------ src/cocoa/NSButton.mm | 28 ++++++++++++++-------------- 2 files changed, 22 insertions(+), 20 deletions(-) diff --git a/include/wx/cocoa/NSButton.h b/include/wx/cocoa/NSButton.h index 0f027871cf..2a90d41451 100644 --- a/include/wx/cocoa/NSButton.h +++ b/include/wx/cocoa/NSButton.h @@ -4,16 +4,17 @@ // Author: David Elliott // Modified by: // Created: 2002/12/09 -// RCS-ID: $Id: -// Copyright: (c) 2002 David Elliott +// RCS-ID: $Id$ +// Copyright: (c) 2002-2004 David Elliott // Licence: wxWindows licence /////////////////////////////////////////////////////////////////////////////// -#ifndef __WX_COCOA_NSBUTTON_H__ -#define __WX_COCOA_NSBUTTON_H__ +#ifndef _WX_COCOA_NSBUTTON_H__ +#define _WX_COCOA_NSBUTTON_H__ #include "wx/hashmap.h" #include "wx/cocoa/ObjcAssociate.h" +#include "wx/cocoa/ObjcRef.h" WX_DECLARE_OBJC_HASHMAP(NSButton); @@ -28,8 +29,9 @@ public: sm_cocoaHash.erase(cocoaNSButton); } -public: virtual void Cocoa_wxNSButtonAction(void) = 0; +protected: + static const wxObjcAutoRefFromAlloc sm_cocoaTarget; }; -#endif // _WX_COCOA_NSBUTTON_H_ +#endif // _WX_COCOA_NSBUTTON_H__ diff --git a/src/cocoa/NSButton.mm b/src/cocoa/NSButton.mm index fe70ab7f63..e2436fca0a 100644 --- a/src/cocoa/NSButton.mm +++ b/src/cocoa/NSButton.mm @@ -4,8 +4,8 @@ // Author: David Elliott // Modified by: // Created: 2003/01/31 -// RCS-ID: $Id: -// Copyright: (c) 2003 David Elliott +// RCS-ID: $Id$ +// Copyright: (c) 2003-2004 David Elliott // Licence: wxWidgets licence ///////////////////////////////////////////////////////////////////////////// @@ -22,8 +22,6 @@ #include "wx/log.h" #endif // WX_PRECOMP -#include "wx/cocoa/ObjcPose.h" - #include "wx/cocoa/NSButton.h" #import @@ -33,34 +31,36 @@ WX_IMPLEMENT_OBJC_INTERFACE_HASHMAP(NSButton) // ============================================================================ -// @class wxPoserNSButton +// @class wxNSButtonTarget // ============================================================================ -@interface wxPoserNSButton : NSButton +@interface wxNSButtonTarget : NSObject { } - (void)wxNSButtonAction: (id)sender; -@end // wxPoserNSButton - -WX_IMPLEMENT_POSER(wxPoserNSButton); +@end // wxNSButtonTarget -@implementation wxPoserNSButton : NSButton +@implementation wxNSButtonTarget : NSObject - (void)wxNSButtonAction: (id)sender { - wxASSERT_MSG((id)self==sender,wxT("Received wxNSButtonAction from another object")); - wxCocoaNSButton *button = wxCocoaNSButton::GetFromCocoa(self); + wxCocoaNSButton *button = wxCocoaNSButton::GetFromCocoa(sender); wxCHECK_RET(button,wxT("wxNSButtonAction received without associated wx object")); button->Cocoa_wxNSButtonAction(); } -@end // implementation wxPoserNSButton +@end // implementation wxNSButtonTarget + +// ============================================================================ +// class wxCocoaNSButton +// ============================================================================ +const wxObjcAutoRefFromAlloc wxCocoaNSButton::sm_cocoaTarget = [[wxNSButtonTarget alloc] init]; void wxCocoaNSButton::AssociateNSButton(WX_NSButton cocoaNSButton) { if(cocoaNSButton) { sm_cocoaHash.insert(wxCocoaNSButtonHash::value_type(cocoaNSButton,this)); - [cocoaNSButton setTarget: cocoaNSButton]; + [cocoaNSButton setTarget: sm_cocoaTarget]; [cocoaNSButton setAction: @selector(wxNSButtonAction:)]; } } -- 2.45.2