From: Kevin Ollivier Date: Tue, 24 Feb 2009 05:51:52 +0000 (+0000) Subject: Turn off the annoying beep when a key down is passed all the way up the handler chain. X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/9130dfd78408e3e5c2c99740a89201055812d647 Turn off the annoying beep when a key down is passed all the way up the handler chain. git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@59114 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/osx/cocoa/nonownedwnd.mm b/src/osx/cocoa/nonownedwnd.mm index d6857babc4..73e3fa9cbc 100644 --- a/src/osx/cocoa/nonownedwnd.mm +++ b/src/osx/cocoa/nonownedwnd.mm @@ -61,6 +61,8 @@ wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p ) // wx native implementation classes // +typedef void (*wxOSX_NoResponderHandlerPtr)(NSView* self, SEL _cmd, SEL selector); + @interface wxNSWindow : NSWindow { @@ -69,7 +71,7 @@ wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p ) - (void)setImplementation: (wxNonOwnedWindowCocoaImpl *) theImplementation; - (wxNonOwnedWindowCocoaImpl*) implementation; - +- (void)noResponderFor: (SEL) selector; @end @implementation wxNSWindow @@ -84,6 +86,15 @@ wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p ) return impl; } +// NB: if we don't do this, all key downs that get handled lead to a NSBeep +- (void)noResponderFor: (SEL) selector +{ + if (selector != @selector(keyDown:)) + { + wxOSX_NoResponderHandlerPtr superimpl = (wxOSX_NoResponderHandlerPtr) [[self superclass] instanceMethodForSelector:@selector(noResponderFor:)]; + superimpl(self, @selector(noResponderFor:), selector); + } +} @end @@ -95,7 +106,7 @@ wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p ) - (void)setImplementation: (wxNonOwnedWindowCocoaImpl *) theImplementation; - (wxNonOwnedWindowCocoaImpl*) implementation; - +- (void)noResponderFor: (SEL) selector; @end @implementation wxNSPanel @@ -110,6 +121,16 @@ wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p ) return impl; } +// NB: if we don't do this, all key downs that get handled lead to a NSBeep +- (void)noResponderFor: (SEL) selector +{ + if (selector != @selector(keyDown:)) + { + wxOSX_NoResponderHandlerPtr superimpl = (wxOSX_NoResponderHandlerPtr) [[self superclass] instanceMethodForSelector:@selector(noResponderFor:)]; + superimpl(self, @selector(noResponderFor:), selector); + } +} + @end