X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/09a9eb2069fe15a010efebe0b5378376a2c337fa..c443ff6f5350df36902af42d0193e53d79dd6a14:/src/osx/cocoa/nonownedwnd.mm diff --git a/src/osx/cocoa/nonownedwnd.mm b/src/osx/cocoa/nonownedwnd.mm index bdee26db1a..2823a386cc 100644 --- a/src/osx/cocoa/nonownedwnd.mm +++ b/src/osx/cocoa/nonownedwnd.mm @@ -57,6 +57,26 @@ wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p ) return wxPoint( x, y); } +bool shouldHandleSelector(SEL selector) +{ + if (selector == @selector(noop:) + || selector == @selector(complete:) + || selector == @selector(deleteBackward:) + || selector == @selector(deleteForward:) + || selector == @selector(insertNewline:) + || selector == @selector(insertTab:) + || selector == @selector(keyDown:) + || selector == @selector(keyUp:) + || selector == @selector(scrollPageUp:) + || selector == @selector(scrollPageDown:) + || selector == @selector(scrollToBeginningOfDocument:) + || selector == @selector(scrollToEndOfDocument:)) + return false; + + return true; + +} + // // wx native implementation classes // @@ -64,7 +84,6 @@ wxPoint wxFromNSPoint( NSView* parent, const NSPoint& p ) typedef void (*wxOSX_NoResponderHandlerPtr)(NSView* self, SEL _cmd, SEL selector); @interface wxNSWindow : NSWindow - { wxNonOwnedWindowCocoaImpl* impl; } @@ -86,13 +105,22 @@ typedef void (*wxOSX_NoResponderHandlerPtr)(NSView* self, SEL _cmd, SEL selector return impl; } +- (void)doCommandBySelector:(SEL)selector +{ + if (shouldHandleSelector(selector) && + !(selector == @selector(cancel:) || selector == @selector(cancelOperation:)) ) + [super doCommandBySelector:selector]; +} + + // 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:)) + if (selector != @selector(keyDown:) && selector != @selector(keyUp:)) { - wxOSX_NoResponderHandlerPtr superimpl = (wxOSX_NoResponderHandlerPtr) [[self superclass] instanceMethodForSelector:@selector(noResponderFor:)]; - superimpl(self, @selector(noResponderFor:), selector); + [super noResponderFor:selector]; +// wxOSX_NoResponderHandlerPtr superimpl = (wxOSX_NoResponderHandlerPtr) [[self superclass] instanceMethodForSelector:@selector(noResponderFor:)]; +// superimpl(self, @selector(noResponderFor:), selector); } } @@ -126,13 +154,20 @@ typedef void (*wxOSX_NoResponderHandlerPtr)(NSView* self, SEL _cmd, SEL selector return impl; } -// NB: if we don't do this, all key downs that get handled lead to a NSBeep +- (void)doCommandBySelector:(SEL)selector +{ + if (shouldHandleSelector(selector)) + [super doCommandBySelector:selector]; +} + +// NB: if we don't do this, it seems that all events that end here lead to a NSBeep - (void)noResponderFor: (SEL) selector { - if (selector != @selector(keyDown:)) + if (selector != @selector(keyDown:) && selector != @selector(keyUp:)) { - wxOSX_NoResponderHandlerPtr superimpl = (wxOSX_NoResponderHandlerPtr) [[self superclass] instanceMethodForSelector:@selector(noResponderFor:)]; - superimpl(self, @selector(noResponderFor:), selector); + [super noResponderFor:selector]; +// wxOSX_NoResponderHandlerPtr superimpl = (wxOSX_NoResponderHandlerPtr) [[self superclass] instanceMethodForSelector:@selector(noResponderFor:)]; +// superimpl(self, @selector(noResponderFor:), selector); } } @@ -285,8 +320,8 @@ void wxNonOwnedWindowCocoaImpl::Destroy() wxPendingDelete.Append( new wxDeferredObjectDeleter( this ) ); } -void wxNonOwnedWindowCocoaImpl::Create( wxWindow* parent, const wxPoint& pos, const wxSize& size, -long style, long extraStyle, const wxString& name ) +void wxNonOwnedWindowCocoaImpl::Create( wxWindow* WXUNUSED(parent), const wxPoint& pos, const wxSize& size, +long style, long extraStyle, const wxString& WXUNUSED(name) ) { static wxNonOwnedWindowController* controller = NULL; @@ -398,9 +433,6 @@ long style, long extraStyle, const wxString& name ) [m_macWindow setDelegate:controller]; [m_macWindow setAcceptsMouseMovedEvents: YES]; - - if ( ( style & wxPOPUP_WINDOW ) ) - [m_macWindow makeKeyAndOrderFront:nil]; } @@ -423,7 +455,7 @@ bool wxNonOwnedWindowCocoaImpl::Show(bool show) { if ( show ) { - [m_macWindow orderFront:nil]; + [m_macWindow makeKeyAndOrderFront:nil]; [[m_macWindow contentView] setNeedsDisplay:YES]; } else @@ -431,7 +463,7 @@ bool wxNonOwnedWindowCocoaImpl::Show(bool show) return true; } -bool wxNonOwnedWindowCocoaImpl::ShowWithEffect(bool show, wxShowEffect effect, unsigned timeout) +bool wxNonOwnedWindowCocoaImpl::ShowWithEffect(bool show, wxShowEffect WXUNUSED(effect), unsigned WXUNUSED(timeout)) { return Show(show); } @@ -447,7 +479,7 @@ bool wxNonOwnedWindowCocoaImpl::SetTransparent(wxByte alpha) return true; } -bool wxNonOwnedWindowCocoaImpl::SetBackgroundColour(const wxColour& col ) +bool wxNonOwnedWindowCocoaImpl::SetBackgroundColour(const wxColour& WXUNUSED(col) ) { return true; } @@ -469,7 +501,7 @@ void wxNonOwnedWindowCocoaImpl::SetExtraStyle( long exStyle ) } } -bool wxNonOwnedWindowCocoaImpl::SetBackgroundStyle(wxBackgroundStyle style) +bool wxNonOwnedWindowCocoaImpl::SetBackgroundStyle(wxBackgroundStyle WXUNUSED(style)) { return true; } @@ -511,7 +543,7 @@ void wxNonOwnedWindowCocoaImpl::GetContentArea( int& left, int &top, int &width, height = rect.size.height; } -bool wxNonOwnedWindowCocoaImpl::SetShape(const wxRegion& region) +bool wxNonOwnedWindowCocoaImpl::SetShape(const wxRegion& WXUNUSED(region)) { return false; } @@ -539,7 +571,7 @@ void wxNonOwnedWindowCocoaImpl::Iconize( bool iconize ) [m_macWindow deminiaturize:nil]; } -void wxNonOwnedWindowCocoaImpl::Maximize(bool maximize) +void wxNonOwnedWindowCocoaImpl::Maximize(bool WXUNUSED(maximize)) { [m_macWindow zoom:nil]; } @@ -558,7 +590,7 @@ bool wxNonOwnedWindowCocoaImpl::IsFullScreen() const return m_macFullScreenData != NULL ; } -bool wxNonOwnedWindowCocoaImpl::ShowFullScreen(bool show, long style) +bool wxNonOwnedWindowCocoaImpl::ShowFullScreen(bool show, long WXUNUSED(style)) { if ( show ) {