=== modified file 'Makefile.in' --- Makefile.in 2014-06-11 15:08:00 +0000 +++ Makefile.in 2014-06-11 15:10:36 +0000 @@ -14601,7 +14601,7 @@ monodll_carbon_frame.o \ monodll_carbon_mdi.o \ monodll_carbon_metafile.o \ - monodll_carbon_overlay.o \ + monodll_osx_cocoa_overlay.o \ monodll_carbon_popupwin.o \ monodll_carbon_renderer.o \ monodll_carbon_settings.o \ @@ -14748,7 +14748,7 @@ monolib_carbon_frame.o \ monolib_carbon_mdi.o \ monolib_carbon_metafile.o \ - monolib_carbon_overlay.o \ + monolib_osx_cocoa_overlay.o \ monolib_carbon_popupwin.o \ monolib_carbon_renderer.o \ monolib_carbon_settings.o \ @@ -14895,7 +14895,7 @@ coredll_carbon_frame.o \ coredll_carbon_mdi.o \ coredll_carbon_metafile.o \ - coredll_carbon_overlay.o \ + coredll_osx_cocoa_overlay.o \ coredll_carbon_popupwin.o \ coredll_carbon_renderer.o \ coredll_carbon_settings.o \ @@ -15027,7 +15027,7 @@ corelib_carbon_frame.o \ corelib_carbon_mdi.o \ corelib_carbon_metafile.o \ - corelib_carbon_overlay.o \ + corelib_osx_cocoa_overlay.o \ corelib_carbon_popupwin.o \ corelib_carbon_renderer.o \ corelib_carbon_settings.o \ @@ -17774,6 +17774,9 @@ monodll_osx_cocoa_notebook.o: $(srcdir)/src/osx/cocoa/notebook.mm $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/notebook.mm +monodll_osx_cocoa_overla.o: $(srcdir)/src/osx/cocoa/overlay.mm $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm + monodll_osx_cocoa_radiobut.o: $(srcdir)/src/osx/cocoa/radiobut.mm $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/radiobut.mm @@ -21683,8 +21686,8 @@ @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@monodll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(MONODLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monodll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(MONODLL_ODEP) -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monodll_osx_cocoa_overlay.o: $(srcdir)/src/osx/cocoa/overlay.mm $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@monodll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(MONODLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp @@ -23642,6 +23645,9 @@ monolib_osx_cocoa_notebook.o: $(srcdir)/src/osx/cocoa/notebook.mm $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/notebook.mm +monolib_osx_cocoa_overlay.o: $(srcdir)/src/osx/cocoa/overlay.mm $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm + monolib_osx_cocoa_radiobut.o: $(srcdir)/src/osx/cocoa/radiobut.mm $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/radiobut.mm @@ -33584,8 +33590,8 @@ @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@coredll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(COREDLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(COREDLL_ODEP) -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_osx_cocoa_overlay.o: $(srcdir)/src/osx/cocoa/overlay.mm $(COREDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@coredll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(COREDLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp @@ -37961,8 +37967,8 @@ @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@corelib_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(CORELIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(CORELIB_ODEP) -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_osx_cocoa_overlay.o: $(srcdir)/src/osx/cocoa/overlay.mm $(CORELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@corelib_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(CORELIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp === modified file 'include/wx/overlay.h' --- include/wx/overlay.h 2014-06-11 15:08:00 +0000 +++ include/wx/overlay.h 2014-06-11 15:10:36 +0000 @@ -13,7 +13,7 @@ #include "wx/defs.h" -#if defined(__WXMAC__) && wxOSX_USE_CARBON +#if defined(__WXMAC__) && wxOSX_USE_COCOA_OR_CARBON #define wxHAS_NATIVE_OVERLAY 1 #elif defined(__WXDFB__) #define wxHAS_NATIVE_OVERLAY 1 === modified file 'include/wx/private/overlay.h' --- include/wx/private/overlay.h 2014-06-11 15:08:00 +0000 +++ include/wx/private/overlay.h 2014-06-11 15:10:36 +0000 @@ -16,7 +16,11 @@ #ifdef wxHAS_NATIVE_OVERLAY #if defined(__WXMAC__) +#if wxOSX_USE_CARBON #include "wx/osx/carbon/private/overlay.h" +#else + #include "wx/osx/cocoa/private/overlay.h" +#endif #elif defined(__WXDFB__) #include "wx/dfb/private/overlay.h" #else === modified file 'src/osx/cocoa/overlay.mm' --- src/osx/cocoa/overlay.mm 2014-06-11 15:08:00 +0000 +++ src/osx/cocoa/overlay.mm 2014-06-11 15:12:45 +0000 @@ -34,6 +34,7 @@ #include "wx/private/overlay.h" #ifdef wxHAS_NATIVE_OVERLAY +#import // ============================================================================ // implementation @@ -58,48 +59,6 @@ void wxOverlayImpl::CreateOverlayWindow() { - if ( m_window ) - { - m_overlayParentWindow = m_window->MacGetTopLevelWindowRef(); - [m_overlayParentWindow makeKeyAndOrderFront:nil]; - - NSView* view = m_window->GetHandle(); - - NSPoint viewOriginBase, viewOriginScreen; - viewOriginBase = [view convertPoint:NSMakePoint(0, 0) toView:nil]; - viewOriginScreen = [m_overlayParentWindow convertBaseToScreen:viewOriginBase]; - - NSSize viewSize = [view frame].size; - if ( [view isFlipped] ) - viewOriginScreen.y -= viewSize.height; - - m_overlayWindow=[[NSWindow alloc] initWithContentRect:NSMakeRect(viewOriginScreen.x,viewOriginScreen.y, - viewSize.width, - viewSize.height) - styleMask:NSBorderlessWindowMask - backing:NSBackingStoreBuffered - defer:YES]; - - [m_overlayParentWindow addChildWindow:m_overlayWindow ordered:NSWindowAbove]; - } - else - { - m_overlayParentWindow = NULL ; - CGRect cgbounds ; - cgbounds = CGDisplayBounds(CGMainDisplayID()); - - m_overlayWindow=[[NSWindow alloc] initWithContentRect:NSMakeRect(cgbounds.origin.x,cgbounds.origin.y, - cgbounds.size.width, - cgbounds.size.height) - styleMask:NSBorderlessWindowMask - backing:NSBackingStoreBuffered - defer:YES]; - } - [m_overlayWindow setOpaque:NO]; - [m_overlayWindow setIgnoresMouseEvents:YES]; - [m_overlayWindow setAlphaValue:1.0]; - - [m_overlayWindow orderFront:nil]; } void wxOverlayImpl::Init( wxDC* dc, int x , int y , int width , int height ) @@ -107,84 +66,54 @@ wxASSERT_MSG( !IsOk() , _("You cannot Init an overlay twice") ); m_window = dc->GetWindow(); - m_x = x ; - m_y = y ; - if ( dc->IsKindOf( CLASSINFO( wxClientDC ) )) - { - wxPoint origin = m_window->GetClientAreaOrigin(); - m_x += origin.x; - m_y += origin.y; - } - m_width = width ; - m_height = height ; - - CreateOverlayWindow(); - wxASSERT_MSG( m_overlayWindow != NULL , _("Couldn't create the overlay window") ); - m_overlayContext = (CGContextRef) [[m_overlayWindow graphicsContext] graphicsPort]; - wxASSERT_MSG( m_overlayContext != NULL , _("Couldn't init the context on the overlay window") ); - - int ySize = 0; - if ( m_window ) - { - NSView* view = m_window->GetHandle(); - NSSize viewSize = [view frame].size; - ySize = viewSize.height; - } - else - { - CGRect cgbounds ; - cgbounds = CGDisplayBounds(CGMainDisplayID()); - ySize = cgbounds.size.height; - - - - } - CGContextTranslateCTM( m_overlayContext, 0, ySize ); - CGContextScaleCTM( m_overlayContext, 1, -1 ); - CGContextTranslateCTM( m_overlayContext, -m_x , -m_y ); + m_overlayWindow = m_window->MacGetTopLevelWindowRef(); + + NSRect box = [m_overlayWindow frame]; + box.origin.x = 0; + box.origin.y = 0; + + if( [m_overlayWindow isVisible] ) + { + [m_overlayWindow discardCachedImage]; + [m_overlayWindow cacheImageInRect:box]; + } } void wxOverlayImpl::BeginDrawing( wxDC* dc) { - wxDCImpl *impl = dc->GetImpl(); - wxGCDCImpl *win_impl = wxDynamicCast(impl,wxGCDCImpl); - if (win_impl) - { - win_impl->SetGraphicsContext( wxGraphicsContext::CreateFromNative( m_overlayContext ) ); - dc->SetClippingRegion( m_x , m_y , m_width , m_height ) ; - } + } void wxOverlayImpl::EndDrawing( wxDC* dc) { - wxDCImpl *impl = dc->GetImpl(); - wxGCDCImpl *win_impl = wxDynamicCast(impl,wxGCDCImpl); - if (win_impl) - win_impl->SetGraphicsContext(NULL); - - CGContextFlush( m_overlayContext ); } void wxOverlayImpl::Clear(wxDC* WXUNUSED(dc)) { wxASSERT_MSG( IsOk() , _("You cannot Clear an overlay that is not inited") ); - CGRect box = CGRectMake( m_x - 1, m_y - 1 , m_width + 2 , m_height + 2 ); - CGContextClearRect( m_overlayContext, box ); + if( [m_overlayWindow isVisible] ) + { + [m_overlayWindow restoreCachedImage]; +// [m_overlayWindow flushWindow]; + } } void wxOverlayImpl::Reset() { - if ( m_overlayContext ) + if ( m_overlayContext) { m_overlayContext = NULL ; } // todo : don't dispose, only hide and reposition on next run - if (m_overlayWindow) + if (m_overlayWindow && [m_overlayWindow isVisible]) { - [m_overlayParentWindow removeChildWindow:m_overlayWindow]; - [m_overlayWindow release]; - m_overlayWindow = NULL ; + NSRect box = [m_overlayWindow frame]; + box.origin.x = 0; + box.origin.y = 0; + + [m_overlayWindow discardCachedImage]; + [m_overlayWindow cacheImageInRect:box]; } }