diff --git a/include/wx/osx/cocoa/private.h b/include/wx/osx/cocoa/private.h index 694dc97ece..ed70b80794 100644 --- a/include/wx/osx/cocoa/private.h +++ b/include/wx/osx/cocoa/private.h @@ -418,7 +418,13 @@ public: @end - void WXDLLIMPEXP_CORE wxOSXCocoaClassAddWXMethods(Class c); + // this enum declares which methods should not be overridden in the native view classes + enum wxOSXSkipOverrides { + wxOSXSKIP_NONE = 0x0, + wxOSXSKIP_DRAW = 0x1 + }; + + void WXDLLIMPEXP_CORE wxOSXCocoaClassAddWXMethods(Class c, wxOSXSkipOverrides skipFlags = wxOSXSKIP_NONE); /* We need this for ShowModal, as the sheet just disables the parent window and diff --git a/src/osx/cocoa/notebook.mm b/src/osx/cocoa/notebook.mm index 0a3862ac24..853b810e49 100644 --- a/src/osx/cocoa/notebook.mm +++ b/src/osx/cocoa/notebook.mm @@ -87,7 +87,7 @@ if (!initialized) { initialized = YES; - wxOSXCocoaClassAddWXMethods( self ); + wxOSXCocoaClassAddWXMethods( self, wxOSXSKIP_DRAW ); } } diff --git a/src/osx/cocoa/window.mm b/src/osx/cocoa/window.mm index d0f90d0545..ea145aafb3 100644 --- a/src/osx/cocoa/window.mm +++ b/src/osx/cocoa/window.mm @@ -2418,7 +2418,7 @@ void wxWidgetCocoaImpl::controlTextDidChange() #endif -void wxOSXCocoaClassAddWXMethods(Class c) +void wxOSXCocoaClassAddWXMethods(Class c, wxOSXSkipOverrides skipFlags) { #if OBJC_API_VERSION < 2 @@ -2465,7 +2465,9 @@ void wxOSXCocoaClassAddWXMethods(Class c) #if !wxOSX_USE_NATIVE_FLIPPED wxOSX_CLASS_ADD_METHOD(c, @selector(isFlipped), (IMP) wxOSX_isFlipped, "c@:" ) #endif - wxOSX_CLASS_ADD_METHOD(c, @selector(drawRect:), (IMP) wxOSX_drawRect, "v@:{_NSRect={_NSPoint=ff}{_NSSize=ff}}" ) + + if ( !(skipFlags & wxOSXSKIP_DRAW) ) + wxOSX_CLASS_ADD_METHOD(c, @selector(drawRect:), (IMP) wxOSX_drawRect, "v@:{_NSRect={_NSPoint=ff}{_NSSize=ff}}" ) wxOSX_CLASS_ADD_METHOD(c, @selector(controlAction:), (IMP) wxOSX_controlAction, "v@:@" ) wxOSX_CLASS_ADD_METHOD(c, @selector(controlDoubleAction:), (IMP) wxOSX_controlDoubleAction, "v@:@" )