X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/be136f073819d425818049008ca286ff39c4cb10..55410bb4f67febe1ca20654f078ea4fb9a6223ae:/src/osx/cocoa/nonownedwnd.mm diff --git a/src/osx/cocoa/nonownedwnd.mm b/src/osx/cocoa/nonownedwnd.mm index e2ce53b5a6..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,18 +86,51 @@ 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 -@interface wxNSPanel : wxNSWindow +@interface wxNSPanel : NSPanel { + wxNonOwnedWindowCocoaImpl* impl; } +- (void)setImplementation: (wxNonOwnedWindowCocoaImpl *) theImplementation; +- (wxNonOwnedWindowCocoaImpl*) implementation; +- (void)noResponderFor: (SEL) selector; @end @implementation wxNSPanel +- (void)setImplementation: (wxNonOwnedWindowCocoaImpl *) theImplementation +{ + impl = theImplementation; +} + +- (wxNonOwnedWindowCocoaImpl*) implementation +{ + 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 @@ -257,11 +292,7 @@ long style, long extraStyle, const wxString& name ) if ( style & wxFRAME_TOOL_WINDOW ) { - if ( ( style & wxSTAY_ON_TOP ) ) - level = kCGUtilityWindowLevel; - else - level = kCGFloatingWindowLevel ; - + windowstyle |= NSTitledWindowMask | NSUtilityWindowMask; } else if ( ( style & wxPOPUP_WINDOW ) ) { @@ -325,12 +356,11 @@ long style, long extraStyle, const wxString& name ) if ( extraStyle & wxFRAME_EX_METAL) windowstyle |= NSTexturedBackgroundWindowMask; + if ( ( style & wxFRAME_FLOAT_ON_PARENT ) || ( style & wxFRAME_TOOL_WINDOW ) ) + level = kCGFloatingWindowLevel; + if ( ( style & wxSTAY_ON_TOP ) ) level = kCGUtilityWindowLevel; -/* - if ( ( style & wxFRAME_FLOAT_ON_PARENT ) ) - group = GetWindowGroupOfClass(kFloatingWindowClass); - */ NSRect r = wxToNSRect( NULL, wxRect( pos, size) );