X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0bcac6c79fcda4e3539cb60a7896c75c2ade6ff2..c8fdb345a0467b910260af935353b360bfcbd4f0:/src/osx/cocoa/nonownedwnd.mm diff --git a/src/osx/cocoa/nonownedwnd.mm b/src/osx/cocoa/nonownedwnd.mm index e5e031a604..b6e4af920f 100644 --- a/src/osx/cocoa/nonownedwnd.mm +++ b/src/osx/cocoa/nonownedwnd.mm @@ -132,6 +132,14 @@ typedef void (*wxOSX_NoResponderHandlerPtr)(NSView* self, SEL _cmd, SEL selector } } +// We need this for borderless windows, i.e. shaped windows or windows without +// a title bar. For more info, see: +// http://lists.apple.com/archives/cocoa-dev/2008/May/msg02091.html +- (BOOL)canBecomeKeyWindow +{ + return YES; +} + @end @interface wxNSPanel : NSPanel @@ -186,7 +194,7 @@ typedef void (*wxOSX_NoResponderHandlerPtr)(NSView* self, SEL _cmd, SEL selector // controller // -@interface wxNonOwnedWindowController : NSObject +@interface wxNonOwnedWindowController : NSObject wxOSX_10_6_AND_LATER() { } @@ -343,9 +351,9 @@ wxNonOwnedWindowCocoaImpl::~wxNonOwnedWindowCocoaImpl() [m_macWindow release]; } -void wxNonOwnedWindowCocoaImpl::Destroy() +void wxNonOwnedWindowCocoaImpl::WillBeDestroyed() { - wxPendingDelete.Append( new wxDeferredObjectDeleter( this ) ); + [m_macWindow setDelegate:nil]; } void wxNonOwnedWindowCocoaImpl::Create( wxWindow* WXUNUSED(parent), const wxPoint& pos, const wxSize& size, @@ -449,6 +457,7 @@ long style, long extraStyle, const wxString& WXUNUSED(name) ) NSRect r = wxToNSRect( NULL, wxRect( pos, size) ); [m_macWindow setImplementation:this]; + r = [NSWindow contentRectForFrameRect:r styleMask:windowstyle]; [m_macWindow initWithContentRect:r styleMask:windowstyle @@ -481,7 +490,8 @@ void wxNonOwnedWindowCocoaImpl::Lower() void wxNonOwnedWindowCocoaImpl::ShowWithoutActivating() { - [[m_macWindow contentView] setNeedsDisplay:YES]; + [m_macWindow orderFront:nil]; + [[m_macWindow contentView] setNeedsDisplay: YES]; } bool wxNonOwnedWindowCocoaImpl::Show(bool show) @@ -493,7 +503,7 @@ bool wxNonOwnedWindowCocoaImpl::Show(bool show) [m_macWindow makeKeyAndOrderFront:nil]; else [m_macWindow orderFront:nil]; - ShowWithoutActivating(); + [[m_macWindow contentView] setNeedsDisplay: YES]; } else [m_macWindow orderOut:nil]; @@ -556,8 +566,14 @@ void wxNonOwnedWindowCocoaImpl::SetWindowStyleFlag( long style ) } } -bool wxNonOwnedWindowCocoaImpl::SetBackgroundStyle(wxBackgroundStyle WXUNUSED(style)) +bool wxNonOwnedWindowCocoaImpl::SetBackgroundStyle(wxBackgroundStyle style) { + if ( style == wxBG_STYLE_TRANSPARENT ) + { + [m_macWindow setOpaque:NO]; + [m_macWindow setBackgroundColor:[NSColor clearColor]]; + } + return true; } @@ -600,7 +616,10 @@ void wxNonOwnedWindowCocoaImpl::GetContentArea( int& left, int &top, int &width, bool wxNonOwnedWindowCocoaImpl::SetShape(const wxRegion& WXUNUSED(region)) { - return false; + [m_macWindow setOpaque:NO]; + [m_macWindow setBackgroundColor:[NSColor clearColor]]; + + return true; } void wxNonOwnedWindowCocoaImpl::SetTitle( const wxString& title, wxFontEncoding encoding ) @@ -708,6 +727,16 @@ bool wxNonOwnedWindowCocoaImpl::IsActive() return [m_macWindow isKeyWindow]; } +void wxNonOwnedWindowCocoaImpl::SetModified(bool modified) +{ + [m_macWindow setDocumentEdited:modified]; +} + +bool wxNonOwnedWindowCocoaImpl::IsModified() const +{ + return [m_macWindow isDocumentEdited]; +} + wxNonOwnedWindowImpl* wxNonOwnedWindowImpl::CreateNonOwnedWindow( wxNonOwnedWindow* wxpeer, wxWindow* parent, const wxPoint& pos, const wxSize& size, long style, long extraStyle, const wxString& name ) {