From e0c691d13c4bf3e537a6b1de8d69bb30f9538776 Mon Sep 17 00:00:00 2001 From: David Elliott Date: Mon, 8 Sep 2003 19:00:45 +0000 Subject: [PATCH] Provide target/action mechanism for subclasses to use git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@23431 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- include/wx/cocoa/NSControl.h | 5 ++++- src/cocoa/NSControl.mm | 33 ++++++++++++++++++++++++++++++--- 2 files changed, 34 insertions(+), 4 deletions(-) diff --git a/include/wx/cocoa/NSControl.h b/include/wx/cocoa/NSControl.h index 36233401c2..92785ac86d 100644 --- a/include/wx/cocoa/NSControl.h +++ b/include/wx/cocoa/NSControl.h @@ -19,8 +19,11 @@ WX_DECLARE_OBJC_HASHMAP(NSControl); class wxCocoaNSControl { WX_DECLARE_OBJC_INTERFACE(NSControl) -protected: +public: + virtual void CocoaTarget_action() {} // virtual void Cocoa_didChangeText(void) = 0; +protected: + static struct objc_object *sm_cocoaTarget; }; #endif // _WX_COCOA_NSCONTROL_H_ diff --git a/src/cocoa/NSControl.mm b/src/cocoa/NSControl.mm index 01bd97f297..53d42d1697 100644 --- a/src/cocoa/NSControl.mm +++ b/src/cocoa/NSControl.mm @@ -19,12 +19,39 @@ #include "wx/wxprec.h" #ifndef WX_PRECOMP + #include "wx/log.h" #endif // WX_PRECOMP #include "wx/cocoa/NSControl.h" -// ---------------------------------------------------------------------------- -// globals -// ---------------------------------------------------------------------------- +#import + +// ============================================================================ +// @class wxNSControlTarget +// ============================================================================ +@interface wxNSControlTarget : NSObject +{ +} + +- (void)wxNSControlAction: (id)sender; +@end //interface wxNSControlTarget + +@implementation wxNSControlTarget : NSObject + +- (void)wxNSControlAction: (id)sender +{ + wxLogDebug("wxNSControlAction"); + wxCocoaNSControl *wxcontrol = wxCocoaNSControl::GetFromCocoa(sender); + wxCHECK_RET(wxcontrol,"wxNSControlAction received but no wxCocoaNSControl exists!"); + wxcontrol->CocoaTarget_action(); +} + +@end //implementation wxNSControlTarget + +// ============================================================================ +// wxNSControl +// ============================================================================ WX_IMPLEMENT_OBJC_INTERFACE(NSControl) +struct objc_object *wxCocoaNSControl::sm_cocoaTarget = [[wxNSControlTarget alloc] init]; + -- 2.49.0