You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

278 lines
11 KiB

  1. === modified file 'Makefile.in'
  2. --- Makefile.in 2014-01-26 11:10:36 +0000
  3. +++ Makefile.in 2014-01-26 11:15:53 +0000
  4. @@ -14601,7 +14601,7 @@
  5. monodll_carbon_frame.o \
  6. monodll_carbon_mdi.o \
  7. monodll_carbon_metafile.o \
  8. - monodll_carbon_overlay.o \
  9. + monodll_osx_cocoa_overlay.o \
  10. monodll_carbon_popupwin.o \
  11. monodll_carbon_renderer.o \
  12. monodll_carbon_settings.o \
  13. @@ -14748,7 +14748,7 @@
  14. monolib_carbon_frame.o \
  15. monolib_carbon_mdi.o \
  16. monolib_carbon_metafile.o \
  17. - monolib_carbon_overlay.o \
  18. + monolib_osx_cocoa_overlay.o \
  19. monolib_carbon_popupwin.o \
  20. monolib_carbon_renderer.o \
  21. monolib_carbon_settings.o \
  22. @@ -14895,7 +14895,7 @@
  23. coredll_carbon_frame.o \
  24. coredll_carbon_mdi.o \
  25. coredll_carbon_metafile.o \
  26. - coredll_carbon_overlay.o \
  27. + coredll_osx_cocoa_overlay.o \
  28. coredll_carbon_popupwin.o \
  29. coredll_carbon_renderer.o \
  30. coredll_carbon_settings.o \
  31. @@ -15027,7 +15027,7 @@
  32. corelib_carbon_frame.o \
  33. corelib_carbon_mdi.o \
  34. corelib_carbon_metafile.o \
  35. - corelib_carbon_overlay.o \
  36. + corelib_osx_cocoa_overlay.o \
  37. corelib_carbon_popupwin.o \
  38. corelib_carbon_renderer.o \
  39. corelib_carbon_settings.o \
  40. @@ -17774,6 +17774,9 @@
  41. monodll_osx_cocoa_notebook.o: $(srcdir)/src/osx/cocoa/notebook.mm $(MONODLL_ODEP)
  42. $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/notebook.mm
  43. +monodll_osx_cocoa_overla.o: $(srcdir)/src/osx/cocoa/overlay.mm $(MONODLL_ODEP)
  44. + $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm
  45. +
  46. monodll_osx_cocoa_radiobut.o: $(srcdir)/src/osx/cocoa/radiobut.mm $(MONODLL_ODEP)
  47. $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/radiobut.mm
  48. @@ -23642,6 +23645,9 @@
  49. monolib_osx_cocoa_notebook.o: $(srcdir)/src/osx/cocoa/notebook.mm $(MONOLIB_ODEP)
  50. $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/notebook.mm
  51. +monolib_osx_cocoa_overlay.o: $(srcdir)/src/osx/cocoa/overlay.mm $(MONOLIB_ODEP)
  52. + $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm
  53. +
  54. monolib_osx_cocoa_radiobut.o: $(srcdir)/src/osx/cocoa/radiobut.mm $(MONOLIB_ODEP)
  55. $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/cocoa/radiobut.mm
  56. @@ -33584,8 +33590,8 @@
  57. @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@coredll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(COREDLL_ODEP)
  58. @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp
  59. -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(COREDLL_ODEP)
  60. -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp
  61. +@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)
  62. +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm
  63. @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@coredll_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(COREDLL_ODEP)
  64. @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp
  65. @@ -37961,8 +37967,8 @@
  66. @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@corelib_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(CORELIB_ODEP)
  67. @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp
  68. -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(CORELIB_ODEP)
  69. -@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp
  70. +@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)
  71. +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/cocoa/overlay.mm
  72. @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@corelib_carbon_overlay.o: $(srcdir)/src/osx/carbon/overlay.cpp $(CORELIB_ODEP)
  73. @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_IPHONE_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/overlay.cpp
  74. === modified file 'include/wx/overlay.h'
  75. --- include/wx/overlay.h 2014-01-26 11:10:36 +0000
  76. +++ include/wx/overlay.h 2014-01-26 11:10:44 +0000
  77. @@ -13,7 +13,7 @@
  78. #include "wx/defs.h"
  79. -#if defined(__WXMAC__) && wxOSX_USE_CARBON
  80. +#if defined(__WXMAC__) && wxOSX_USE_COCOA_OR_CARBON
  81. #define wxHAS_NATIVE_OVERLAY 1
  82. #elif defined(__WXDFB__)
  83. #define wxHAS_NATIVE_OVERLAY 1
  84. === modified file 'include/wx/private/overlay.h'
  85. --- include/wx/private/overlay.h 2014-01-26 11:10:36 +0000
  86. +++ include/wx/private/overlay.h 2014-01-26 11:10:44 +0000
  87. @@ -16,7 +16,11 @@
  88. #ifdef wxHAS_NATIVE_OVERLAY
  89. #if defined(__WXMAC__)
  90. +#if wxOSX_USE_CARBON
  91. #include "wx/osx/carbon/private/overlay.h"
  92. +#else
  93. + #include "wx/osx/cocoa/private/overlay.h"
  94. +#endif
  95. #elif defined(__WXDFB__)
  96. #include "wx/dfb/private/overlay.h"
  97. #else
  98. === modified file 'src/osx/cocoa/overlay.mm'
  99. --- src/osx/cocoa/overlay.mm 2014-01-26 11:10:36 +0000
  100. +++ src/osx/cocoa/overlay.mm 2014-01-26 11:10:44 +0000
  101. @@ -34,6 +34,7 @@
  102. #include "wx/private/overlay.h"
  103. #ifdef wxHAS_NATIVE_OVERLAY
  104. +#import <Foundation/NSGeometry.h>
  105. // ============================================================================
  106. // implementation
  107. @@ -58,48 +59,6 @@
  108. void wxOverlayImpl::CreateOverlayWindow()
  109. {
  110. - if ( m_window )
  111. - {
  112. - m_overlayParentWindow = m_window->MacGetTopLevelWindowRef();
  113. - [m_overlayParentWindow makeKeyAndOrderFront:nil];
  114. -
  115. - NSView* view = m_window->GetHandle();
  116. -
  117. - NSPoint viewOriginBase, viewOriginScreen;
  118. - viewOriginBase = [view convertPoint:NSMakePoint(0, 0) toView:nil];
  119. - viewOriginScreen = [m_overlayParentWindow convertBaseToScreen:viewOriginBase];
  120. -
  121. - NSSize viewSize = [view frame].size;
  122. - if ( [view isFlipped] )
  123. - viewOriginScreen.y -= viewSize.height;
  124. -
  125. - m_overlayWindow=[[NSWindow alloc] initWithContentRect:NSMakeRect(viewOriginScreen.x,viewOriginScreen.y,
  126. - viewSize.width,
  127. - viewSize.height)
  128. - styleMask:NSBorderlessWindowMask
  129. - backing:NSBackingStoreBuffered
  130. - defer:YES];
  131. -
  132. - [m_overlayParentWindow addChildWindow:m_overlayWindow ordered:NSWindowAbove];
  133. - }
  134. - else
  135. - {
  136. - m_overlayParentWindow = NULL ;
  137. - CGRect cgbounds ;
  138. - cgbounds = CGDisplayBounds(CGMainDisplayID());
  139. -
  140. - m_overlayWindow=[[NSWindow alloc] initWithContentRect:NSMakeRect(cgbounds.origin.x,cgbounds.origin.y,
  141. - cgbounds.size.width,
  142. - cgbounds.size.height)
  143. - styleMask:NSBorderlessWindowMask
  144. - backing:NSBackingStoreBuffered
  145. - defer:YES];
  146. - }
  147. - [m_overlayWindow setOpaque:NO];
  148. - [m_overlayWindow setIgnoresMouseEvents:YES];
  149. - [m_overlayWindow setAlphaValue:1.0];
  150. -
  151. - [m_overlayWindow orderFront:nil];
  152. }
  153. void wxOverlayImpl::Init( wxDC* dc, int x , int y , int width , int height )
  154. @@ -107,84 +66,50 @@
  155. wxASSERT_MSG( !IsOk() , _("You cannot Init an overlay twice") );
  156. m_window = dc->GetWindow();
  157. - m_x = x ;
  158. - m_y = y ;
  159. - if ( dc->IsKindOf( CLASSINFO( wxClientDC ) ))
  160. - {
  161. - wxPoint origin = m_window->GetClientAreaOrigin();
  162. - m_x += origin.x;
  163. - m_y += origin.y;
  164. - }
  165. - m_width = width ;
  166. - m_height = height ;
  167. -
  168. - CreateOverlayWindow();
  169. - wxASSERT_MSG( m_overlayWindow != NULL , _("Couldn't create the overlay window") );
  170. - m_overlayContext = (CGContextRef) [[m_overlayWindow graphicsContext] graphicsPort];
  171. - wxASSERT_MSG( m_overlayContext != NULL , _("Couldn't init the context on the overlay window") );
  172. -
  173. - int ySize = 0;
  174. - if ( m_window )
  175. - {
  176. - NSView* view = m_window->GetHandle();
  177. - NSSize viewSize = [view frame].size;
  178. - ySize = viewSize.height;
  179. - }
  180. - else
  181. - {
  182. - CGRect cgbounds ;
  183. - cgbounds = CGDisplayBounds(CGMainDisplayID());
  184. - ySize = cgbounds.size.height;
  185. -
  186. -
  187. -
  188. - }
  189. - CGContextTranslateCTM( m_overlayContext, 0, ySize );
  190. - CGContextScaleCTM( m_overlayContext, 1, -1 );
  191. - CGContextTranslateCTM( m_overlayContext, -m_x , -m_y );
  192. + m_overlayWindow = m_window->MacGetTopLevelWindowRef();
  193. +
  194. + NSRect box = [m_overlayWindow frame];
  195. +
  196. + if( [m_overlayWindow isVisible] )
  197. + {
  198. + [m_overlayWindow discardCachedImage];
  199. + [m_overlayWindow cacheImageInRect:box];
  200. + }
  201. }
  202. void wxOverlayImpl::BeginDrawing( wxDC* dc)
  203. {
  204. - wxDCImpl *impl = dc->GetImpl();
  205. - wxGCDCImpl *win_impl = wxDynamicCast(impl,wxGCDCImpl);
  206. - if (win_impl)
  207. - {
  208. - win_impl->SetGraphicsContext( wxGraphicsContext::CreateFromNative( m_overlayContext ) );
  209. - dc->SetClippingRegion( m_x , m_y , m_width , m_height ) ;
  210. - }
  211. +
  212. }
  213. void wxOverlayImpl::EndDrawing( wxDC* dc)
  214. {
  215. - wxDCImpl *impl = dc->GetImpl();
  216. - wxGCDCImpl *win_impl = wxDynamicCast(impl,wxGCDCImpl);
  217. - if (win_impl)
  218. - win_impl->SetGraphicsContext(NULL);
  219. -
  220. - CGContextFlush( m_overlayContext );
  221. }
  222. void wxOverlayImpl::Clear(wxDC* WXUNUSED(dc))
  223. {
  224. wxASSERT_MSG( IsOk() , _("You cannot Clear an overlay that is not inited") );
  225. - CGRect box = CGRectMake( m_x - 1, m_y - 1 , m_width + 2 , m_height + 2 );
  226. - CGContextClearRect( m_overlayContext, box );
  227. + if( [m_overlayWindow isVisible] )
  228. + {
  229. + [m_overlayWindow restoreCachedImage];
  230. +// [m_overlayWindow flushWindow];
  231. + }
  232. }
  233. void wxOverlayImpl::Reset()
  234. {
  235. - if ( m_overlayContext )
  236. + if ( m_overlayContext)
  237. {
  238. m_overlayContext = NULL ;
  239. }
  240. // todo : don't dispose, only hide and reposition on next run
  241. - if (m_overlayWindow)
  242. + if (m_overlayWindow && [m_overlayWindow isVisible])
  243. {
  244. - [m_overlayParentWindow removeChildWindow:m_overlayWindow];
  245. - [m_overlayWindow release];
  246. - m_overlayWindow = NULL ;
  247. + NSRect box = [m_overlayWindow frame];
  248. +
  249. + [m_overlayWindow discardCachedImage];
  250. + [m_overlayWindow cacheImageInRect:box];
  251. }
  252. }