From 5398a2e05001914ec3d83fd30f9f7e3f6a9e29be Mon Sep 17 00:00:00 2001 From: Stefan Csomor Date: Mon, 9 Feb 2009 09:01:19 +0000 Subject: [PATCH] common drawing code for osx-cocoa and osx-carbon, also since 10.5 HIShapeRef is in ApplicationServices, so this can be used for all osx-cocoa builds as native wxRegion implementation git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@58804 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- Makefile.in | 84 ++++++++-------- build/bakefiles/files.bkl | 3 +- include/wx/osx/carbon/private.h | 1 + include/wx/osx/region.h | 2 +- include/wx/osx/window.h | 5 +- include/wx/region.h | 2 +- src/osx/carbon/region.cpp | 120 +++++++++++++++++------ src/osx/carbon/window.cpp | 37 ++++--- src/osx/window_osx.cpp | 166 ++++++++++++++------------------ 9 files changed, 234 insertions(+), 186 deletions(-) diff --git a/Makefile.in b/Makefile.in index 0b96ebe4f5..60aedcd906 100644 --- a/Makefile.in +++ b/Makefile.in @@ -4995,7 +4995,6 @@ COND_TOOLKIT_OSX_CARBON___GUI_SRC_OBJECTS = \ monodll_notebmac.o \ monodll_carbon_printdlg.o \ monodll_carbon_radiobut.o \ - monodll_carbon_region.o \ monodll_carbon_scrolbar.o \ monodll_carbon_slider.o \ monodll_carbon_spinbutt.o \ @@ -5061,7 +5060,6 @@ COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS = \ monodll_fontpickerg.o \ monodll_generic_listctrl.o \ monodll_prntdlgg.o \ - monodll_regiong.o \ monodll_generic_statusbr.o @COND_TOOLKIT_OSX_COCOA@__GUI_SRC_OBJECTS = $(COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS) COND_TOOLKIT_PM___GUI_SRC_OBJECTS = \ @@ -6809,7 +6807,6 @@ COND_TOOLKIT_OSX_CARBON___GUI_SRC_OBJECTS_1 = \ monolib_notebmac.o \ monolib_carbon_printdlg.o \ monolib_carbon_radiobut.o \ - monolib_carbon_region.o \ monolib_carbon_scrolbar.o \ monolib_carbon_slider.o \ monolib_carbon_spinbutt.o \ @@ -6875,7 +6872,6 @@ COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS_1 = \ monolib_fontpickerg.o \ monolib_generic_listctrl.o \ monolib_prntdlgg.o \ - monolib_regiong.o \ monolib_generic_statusbr.o @COND_TOOLKIT_OSX_COCOA@__GUI_SRC_OBJECTS_1 = $(COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS_1) COND_TOOLKIT_PM___GUI_SRC_OBJECTS_1 = \ @@ -8769,7 +8765,6 @@ COND_TOOLKIT_OSX_CARBON___GUI_SRC_OBJECTS_2 = \ coredll_notebmac.o \ coredll_carbon_printdlg.o \ coredll_carbon_radiobut.o \ - coredll_carbon_region.o \ coredll_carbon_scrolbar.o \ coredll_carbon_slider.o \ coredll_carbon_spinbutt.o \ @@ -8835,7 +8830,6 @@ COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS_2 = \ coredll_fontpickerg.o \ coredll_generic_listctrl.o \ coredll_prntdlgg.o \ - coredll_regiong.o \ coredll_generic_statusbr.o @COND_TOOLKIT_OSX_COCOA@__GUI_SRC_OBJECTS_2 = $(COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS_2) COND_TOOLKIT_PM___GUI_SRC_OBJECTS_2 = \ @@ -10279,7 +10273,6 @@ COND_TOOLKIT_OSX_CARBON___GUI_SRC_OBJECTS_3 = \ corelib_notebmac.o \ corelib_carbon_printdlg.o \ corelib_carbon_radiobut.o \ - corelib_carbon_region.o \ corelib_carbon_scrolbar.o \ corelib_carbon_slider.o \ corelib_carbon_spinbutt.o \ @@ -10345,7 +10338,6 @@ COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS_3 = \ corelib_fontpickerg.o \ corelib_generic_listctrl.o \ corelib_prntdlgg.o \ - corelib_regiong.o \ corelib_generic_statusbr.o @COND_TOOLKIT_OSX_COCOA@__GUI_SRC_OBJECTS_3 = $(COND_TOOLKIT_OSX_COCOA___GUI_SRC_OBJECTS_3) COND_TOOLKIT_PM___GUI_SRC_OBJECTS_3 = \ @@ -11821,6 +11813,7 @@ COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS = \ monodll_carbon_renderer.o \ monodll_carbon_settings.o \ monodll_statbrma.o \ + monodll_carbon_region.o \ monodll_utilscocoa.o @COND_PLATFORM_MACOSX_1@__OSX_CARBON_COCOA_SRC_OBJECTS = $(COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS) COND_PLATFORM_MACOSX_1___OSX_LOWLEVEL_SRC_OBJECTS = \ @@ -11980,6 +11973,7 @@ COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_0 = \ monolib_carbon_renderer.o \ monolib_carbon_settings.o \ monolib_statbrma.o \ + monolib_carbon_region.o \ monolib_utilscocoa.o @COND_PLATFORM_MACOSX_1@__OSX_CARBON_COCOA_SRC_OBJECTS_0 = $(COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_0) COND_PLATFORM_MACOSX_1___OSX_LOWLEVEL_SRC_OBJECTS_17 = \ @@ -12139,6 +12133,7 @@ COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_8 = \ coredll_carbon_renderer.o \ coredll_carbon_settings.o \ coredll_statbrma.o \ + coredll_carbon_region.o \ coredll_utilscocoa.o @COND_PLATFORM_MACOSX_1@__OSX_CARBON_COCOA_SRC_OBJECTS_8 = $(COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_8) COND_PLATFORM_MACOSX_1___OSX_LOWLEVEL_SRC_OBJECTS_1_1 = \ @@ -12218,6 +12213,7 @@ COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_9 = \ corelib_carbon_renderer.o \ corelib_carbon_settings.o \ corelib_statbrma.o \ + corelib_carbon_region.o \ corelib_utilscocoa.o @COND_PLATFORM_MACOSX_1@__OSX_CARBON_COCOA_SRC_OBJECTS_9 = $(COND_PLATFORM_MACOSX_1___OSX_CARBON_COCOA_SRC_OBJECTS_9) COND_PLATFORM_MACOSX_1___OSX_LOWLEVEL_SRC_OBJECTS_1_4 = \ @@ -14869,9 +14865,6 @@ monodll_carbon_printdlg.o: $(srcdir)/src/osx/carbon/printdlg.cpp $(MONODLL_ODEP) monodll_carbon_radiobut.o: $(srcdir)/src/osx/carbon/radiobut.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/radiobut.cpp -monodll_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(MONODLL_ODEP) - $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp - monodll_carbon_scrolbar.o: $(srcdir)/src/osx/carbon/scrolbar.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/scrolbar.cpp @@ -15226,6 +15219,9 @@ monodll_cocoa_utilsexc.o: $(srcdir)/src/cocoa/utilsexc.mm $(MONODLL_ODEP) monodll_src_cocoa_window.o: $(srcdir)/src/cocoa/window.mm $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/cocoa/window.mm +monodll_regiong.o: $(srcdir)/src/generic/regiong.cpp $(MONODLL_ODEP) + $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp + monodll_os2_accel.o: $(srcdir)/src/os2/accel.cpp $(MONODLL_ODEP) $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/os2/accel.cpp @@ -17917,18 +17913,18 @@ monodll_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONODLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monodll_statbrma.o: $(srcdir)/src/osx/carbon/statbrma.cpp $(MONODLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/statbrma.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@monodll_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monodll_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(MONODLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@monodll_utilscocoa.o: $(srcdir)/src/osx/carbon/utilscocoa.mm $(MONODLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/carbon/utilscocoa.mm @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monodll_utilscocoa.o: $(srcdir)/src/osx/carbon/utilscocoa.mm $(MONODLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_OBJCXXFLAGS) $(srcdir)/src/osx/carbon/utilscocoa.mm -@COND_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monodll_regiong.o: $(srcdir)/src/generic/regiong.cpp $(MONODLL_ODEP) -@COND_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp - -@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@monodll_regiong.o: $(srcdir)/src/generic/regiong.cpp $(MONODLL_ODEP) -@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp - @COND_USE_GUI_1@monodll_accelcmn.o: $(srcdir)/src/common/accelcmn.cpp $(MONODLL_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONODLL_CXXFLAGS) $(srcdir)/src/common/accelcmn.cpp @@ -19546,9 +19542,6 @@ monolib_carbon_printdlg.o: $(srcdir)/src/osx/carbon/printdlg.cpp $(MONOLIB_ODEP) monolib_carbon_radiobut.o: $(srcdir)/src/osx/carbon/radiobut.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/osx/carbon/radiobut.cpp -monolib_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(MONOLIB_ODEP) - $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp - monolib_carbon_scrolbar.o: $(srcdir)/src/osx/carbon/scrolbar.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/osx/carbon/scrolbar.cpp @@ -19903,6 +19896,9 @@ monolib_cocoa_utilsexc.o: $(srcdir)/src/cocoa/utilsexc.mm $(MONOLIB_ODEP) monolib_src_cocoa_window.o: $(srcdir)/src/cocoa/window.mm $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/cocoa/window.mm +monolib_regiong.o: $(srcdir)/src/generic/regiong.cpp $(MONOLIB_ODEP) + $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp + monolib_os2_accel.o: $(srcdir)/src/os2/accel.cpp $(MONOLIB_ODEP) $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/os2/accel.cpp @@ -22594,18 +22590,18 @@ monolib_sound_sdl.o: $(srcdir)/src/unix/sound_sdl.cpp $(MONOLIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monolib_statbrma.o: $(srcdir)/src/osx/carbon/statbrma.cpp $(MONOLIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/osx/carbon/statbrma.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@monolib_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monolib_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(MONOLIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@monolib_utilscocoa.o: $(srcdir)/src/osx/carbon/utilscocoa.mm $(MONOLIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/carbon/utilscocoa.mm @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monolib_utilscocoa.o: $(srcdir)/src/osx/carbon/utilscocoa.mm $(MONOLIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_OBJCXXFLAGS) $(srcdir)/src/osx/carbon/utilscocoa.mm -@COND_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@monolib_regiong.o: $(srcdir)/src/generic/regiong.cpp $(MONOLIB_ODEP) -@COND_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp - -@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@monolib_regiong.o: $(srcdir)/src/generic/regiong.cpp $(MONOLIB_ODEP) -@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp - @COND_USE_GUI_1@monolib_accelcmn.o: $(srcdir)/src/common/accelcmn.cpp $(MONOLIB_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(MONOLIB_CXXFLAGS) $(srcdir)/src/common/accelcmn.cpp @@ -24883,9 +24879,6 @@ coredll_carbon_printdlg.o: $(srcdir)/src/osx/carbon/printdlg.cpp $(COREDLL_ODEP) coredll_carbon_radiobut.o: $(srcdir)/src/osx/carbon/radiobut.cpp $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/radiobut.cpp -coredll_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(COREDLL_ODEP) - $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp - coredll_carbon_scrolbar.o: $(srcdir)/src/osx/carbon/scrolbar.cpp $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/scrolbar.cpp @@ -25240,6 +25233,9 @@ coredll_utilsexc.o: $(srcdir)/src/cocoa/utilsexc.mm $(COREDLL_ODEP) coredll_src_cocoa_window.o: $(srcdir)/src/cocoa/window.mm $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/cocoa/window.mm +coredll_regiong.o: $(srcdir)/src/generic/regiong.cpp $(COREDLL_ODEP) + $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp + coredll_os2_accel.o: $(srcdir)/src/os2/accel.cpp $(COREDLL_ODEP) $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/os2/accel.cpp @@ -27454,18 +27450,18 @@ coredll_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(COREDLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_statbrma.o: $(srcdir)/src/osx/carbon/statbrma.cpp $(COREDLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/statbrma.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@coredll_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(COREDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(COREDLL_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@coredll_utilscocoa.o: $(srcdir)/src/osx/carbon/utilscocoa.mm $(COREDLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/carbon/utilscocoa.mm @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_utilscocoa.o: $(srcdir)/src/osx/carbon/utilscocoa.mm $(COREDLL_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_OBJCXXFLAGS) $(srcdir)/src/osx/carbon/utilscocoa.mm -@COND_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@coredll_regiong.o: $(srcdir)/src/generic/regiong.cpp $(COREDLL_ODEP) -@COND_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp - -@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@coredll_regiong.o: $(srcdir)/src/generic/regiong.cpp $(COREDLL_ODEP) -@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp - @COND_USE_GUI_1@coredll_accelcmn.o: $(srcdir)/src/common/accelcmn.cpp $(COREDLL_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(COREDLL_CXXFLAGS) $(srcdir)/src/common/accelcmn.cpp @@ -28387,9 +28383,6 @@ corelib_carbon_printdlg.o: $(srcdir)/src/osx/carbon/printdlg.cpp $(CORELIB_ODEP) corelib_carbon_radiobut.o: $(srcdir)/src/osx/carbon/radiobut.cpp $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/radiobut.cpp -corelib_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(CORELIB_ODEP) - $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp - corelib_carbon_scrolbar.o: $(srcdir)/src/osx/carbon/scrolbar.cpp $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/scrolbar.cpp @@ -28744,6 +28737,9 @@ corelib_utilsexc.o: $(srcdir)/src/cocoa/utilsexc.mm $(CORELIB_ODEP) corelib_src_cocoa_window.o: $(srcdir)/src/cocoa/window.mm $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/cocoa/window.mm +corelib_regiong.o: $(srcdir)/src/generic/regiong.cpp $(CORELIB_ODEP) + $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp + corelib_os2_accel.o: $(srcdir)/src/os2/accel.cpp $(CORELIB_ODEP) $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/os2/accel.cpp @@ -30958,18 +30954,18 @@ corelib_win32.o: $(srcdir)/src/univ/themes/win32.cpp $(CORELIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_statbrma.o: $(srcdir)/src/osx/carbon/statbrma.cpp $(CORELIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/statbrma.cpp +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@corelib_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(CORELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp + +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_carbon_region.o: $(srcdir)/src/osx/carbon/region.cpp $(CORELIB_ODEP) +@COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/osx/carbon/region.cpp + @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@corelib_utilscocoa.o: $(srcdir)/src/osx/carbon/utilscocoa.mm $(CORELIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_CARBON_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/carbon/utilscocoa.mm @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_utilscocoa.o: $(srcdir)/src/osx/carbon/utilscocoa.mm $(CORELIB_ODEP) @COND_PLATFORM_MACOSX_1_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_OBJCXXFLAGS) $(srcdir)/src/osx/carbon/utilscocoa.mm -@COND_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@corelib_regiong.o: $(srcdir)/src/generic/regiong.cpp $(CORELIB_ODEP) -@COND_TOOLKIT_OSX_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp - -@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@corelib_regiong.o: $(srcdir)/src/generic/regiong.cpp $(CORELIB_ODEP) -@COND_TOOLKIT_COCOA_USE_GUI_1_WXUNIV_0@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/generic/regiong.cpp - @COND_USE_GUI_1@corelib_accelcmn.o: $(srcdir)/src/common/accelcmn.cpp $(CORELIB_ODEP) @COND_USE_GUI_1@ $(CXXC) -c -o $@ $(CORELIB_CXXFLAGS) $(srcdir)/src/common/accelcmn.cpp diff --git a/build/bakefiles/files.bkl b/build/bakefiles/files.bkl index 804601dd15..ef2cc9efb1 100644 --- a/build/bakefiles/files.bkl +++ b/build/bakefiles/files.bkl @@ -2254,6 +2254,7 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/osx/carbon/renderer.cpp src/osx/carbon/settings.cpp src/osx/carbon/statbrma.cpp + src/osx/carbon/region.cpp src/osx/carbon/utilscocoa.mm @@ -2281,7 +2282,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/osx/carbon/notebmac.cpp src/osx/carbon/printdlg.cpp src/osx/carbon/radiobut.cpp - src/osx/carbon/region.cpp src/osx/carbon/scrolbar.cpp src/osx/carbon/slider.cpp src/osx/carbon/spinbutt.cpp @@ -2462,7 +2462,6 @@ IMPORTANT: please read docs/tech/tn0016.txt before modifying this file! src/generic/fontpickerg.cpp src/generic/listctrl.cpp src/generic/prntdlgg.cpp - src/generic/regiong.cpp src/generic/statusbr.cpp diff --git a/include/wx/osx/carbon/private.h b/include/wx/osx/carbon/private.h index 088fe282f3..16580178cb 100644 --- a/include/wx/osx/carbon/private.h +++ b/include/wx/osx/carbon/private.h @@ -56,6 +56,7 @@ WXDLLIMPEXP_BASE wxString wxMacFindFolder(short vRefNum, Boolean createFolder); template EventParamType wxMacGetEventParamType() { wxFAIL_MSG( wxT("Unknown Param Type") ); return 0; } +template<> inline EventParamType wxMacGetEventParamType() { return typeHIShapeRef; } template<> inline EventParamType wxMacGetEventParamType() { return typeQDRgnHandle; } template<> inline EventParamType wxMacGetEventParamType() { return typeControlRef; } template<> inline EventParamType wxMacGetEventParamType() { return typeWindowRef; } diff --git a/include/wx/osx/region.h b/include/wx/osx/region.h index ea68dd8757..e085282079 100644 --- a/include/wx/osx/region.h +++ b/include/wx/osx/region.h @@ -1,4 +1,4 @@ -#if wxOSX_USE_CARBON +#if wxOSX_USE_COCOA_OR_CARBON #include "wx/osx/carbon/region.h" #else #define wxRegionGeneric wxRegion diff --git a/include/wx/osx/window.h b/include/wx/osx/window.h index d228363115..d5693becf3 100644 --- a/include/wx/osx/window.h +++ b/include/wx/osx/window.h @@ -163,11 +163,12 @@ public: wxWindowMac *FindItemByHWND(WXHWND hWnd, bool controlOnly = false) const; virtual void TriggerScrollEvent( wxEventType scrollEvent ) ; - virtual bool MacDoRedraw( void* updatergn , long time ) ; - // this should not be overriden in classes above wxWindowMac // because it is called from its destructor via DeleteChildren virtual void RemoveChild( wxWindowBase *child ); + + virtual bool MacDoRedraw( long time ) ; + virtual void MacPaintChildrenBorders(); virtual void MacPaintBorders( int left , int top ) ; void MacPaintGrowBox(); diff --git a/include/wx/region.h b/include/wx/region.h index 103306be89..915ed71d2a 100644 --- a/include/wx/region.h +++ b/include/wx/region.h @@ -183,7 +183,7 @@ protected: // ports with Combine() in this class #if defined(__WXPALMOS__) || \ defined(__WXMSW__) || \ - ( defined(__WXMAC__) && wxOSX_USE_CARBON ) || \ + ( defined(__WXMAC__) && wxOSX_USE_COCOA_OR_CARBON ) || \ defined(__WXPM__) #define wxHAS_REGION_COMBINE diff --git a/src/osx/carbon/region.cpp b/src/osx/carbon/region.cpp index b2d0c251ca..ef66179aa0 100644 --- a/src/osx/carbon/region.cpp +++ b/src/osx/carbon/region.cpp @@ -16,7 +16,7 @@ #include "wx/gdicmn.h" #endif -#include "wx/osx/uma.h" +#include "wx/osx/private.h" IMPLEMENT_DYNAMIC_CLASS(wxRegion, wxGDIObject) IMPLEMENT_DYNAMIC_CLASS(wxRegionIterator, wxObject) @@ -101,9 +101,9 @@ wxRegion::wxRegion(size_t n, const wxPoint *points, wxPolygonFillMode WXUNUSED(f wxUnusedVar(n); wxUnusedVar(points); -#ifndef __LP64__ - - // TODO : any APIs ? +#if 0 + // no non-QD APIs available + // TODO : remove ? // OS X somehow does not collect the region invisibly as before, so sometimes things // get drawn on screen instead of just being combined into a region, therefore we allocate a temp gworld now @@ -405,7 +405,15 @@ wxRegionIterator::wxRegionIterator(const wxRegion& region) * Reset iterator for a new /e region. */ -#ifndef __LP64__ +class RegionToRectsCallbackData +{ +public : + wxRect* m_rects ; + long m_current ; +}; + +#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 + OSStatus wxMacRegionToRectsCounterCallback( UInt16 message, RgnHandle WXUNUSED(region), const Rect *WXUNUSED(rect), void *data ) { @@ -422,13 +430,6 @@ OSStatus wxMacRegionToRectsCounterCallback( return noErr; } -class RegionToRectsCallbackData -{ -public : - wxRect* m_rects ; - long m_current ; -}; - OSStatus wxMacRegionToRectsSetterCallback( UInt16 message, RgnHandle WXUNUSED(region), const Rect *rect, void *data ) { @@ -440,6 +441,39 @@ OSStatus wxMacRegionToRectsSetterCallback( return noErr; } + +#endif + +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 + +OSStatus wxOSXRegionToRectsCounterCallback( + int message, HIShapeRef WXUNUSED(region), const CGRect *WXUNUSED(rect), void *data ) +{ + long *m_numRects = (long*) data ; + if ( message == kHIShapeEnumerateInit ) + { + (*m_numRects) = 0 ; + } + else if (message == kHIShapeEnumerateRect) + { + (*m_numRects) += 1 ; + } + + return noErr; +} + +OSStatus wxOSXRegionToRectsSetterCallback( + int message, HIShapeRef WXUNUSED(region), const CGRect *rect, void *data ) +{ + if (message == kHIShapeEnumerateRect) + { + RegionToRectsCallbackData *cb = (RegionToRectsCallbackData*) data ; + cb->m_rects[cb->m_current++] = wxRect( rect->origin.x , rect->origin.y , rect->size.width , rect->size.height ) ; + } + + return noErr; +} + #endif void wxRegionIterator::Reset(const wxRegion& region) @@ -459,35 +493,59 @@ void wxRegionIterator::Reset(const wxRegion& region) } else { -#ifdef __LP64__ +#if 0 + // fallback code in case we ever need it again // copying this to a path and dissecting the path would be an option m_numRects = 1; m_rects = new wxRect[m_numRects]; m_rects[0] = m_region.GetBox(); +#endif -#else - RegionToRectsUPP proc = (RegionToRectsUPP) wxMacRegionToRectsCounterCallback; - - OSStatus err = noErr; - RgnHandle rgn = NewRgn(); - HIShapeGetAsQDRgn(OTHER_M_REGION(region), rgn); - - err = QDRegionToRects (rgn, kQDParseRegionFromTopLeft, proc, (void*)&m_numRects); - if (err == noErr) +#if MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5 + if ( HIShapeEnumerate != NULL ) { - proc = (RegionToRectsUPP) wxMacRegionToRectsSetterCallback; - m_rects = new wxRect[m_numRects]; - RegionToRectsCallbackData data ; - data.m_rects = m_rects ; - data.m_current = 0 ; - QDRegionToRects( rgn , kQDParseRegionFromTopLeft, proc, (void*)&data ); + OSStatus err = HIShapeEnumerate (OTHER_M_REGION(region), kHIShapeParseFromTopLeft, wxOSXRegionToRectsCounterCallback, + (void*)&m_numRects); + if (err == noErr) + { + m_rects = new wxRect[m_numRects]; + RegionToRectsCallbackData data ; + data.m_rects = m_rects ; + data.m_current = 0 ; + HIShapeEnumerate( OTHER_M_REGION(region), kHIShapeParseFromTopLeft, wxOSXRegionToRectsSetterCallback, + (void*)&data ); + } + else + { + m_numRects = 0; + } } else +#endif { - m_numRects = 0; - } - DisposeRgn( rgn ); +#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5 + OSStatus err = noErr; + RgnHandle rgn = NewRgn(); + HIShapeGetAsQDRgn(OTHER_M_REGION(region), rgn); + + err = QDRegionToRects (rgn, kQDParseRegionFromTopLeft, wxMacRegionToRectsCounterCallback + , (void*)&m_numRects); + if (err == noErr) + { + m_rects = new wxRect[m_numRects]; + RegionToRectsCallbackData data ; + data.m_rects = m_rects ; + data.m_current = 0 ; + QDRegionToRects( rgn , kQDParseRegionFromTopLeft, wxMacRegionToRectsSetterCallback, + (void*)&data ); + } + else + { + m_numRects = 0; + } + DisposeRgn( rgn ); #endif + } } } diff --git a/src/osx/carbon/window.cpp b/src/osx/carbon/window.cpp index f56dde4393..2e9a26ff25 100644 --- a/src/osx/carbon/window.cpp +++ b/src/osx/carbon/window.cpp @@ -131,24 +131,23 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl { case kEventControlDraw : { - RgnHandle updateRgn = NULL ; - RgnHandle allocatedRgn = NULL ; + HIShapeRef updateRgn = NULL ; + HIMutableShapeRef allocatedRgn = NULL ; wxRegion visRegion = thisWindow->MacGetVisibleRegion() ; - if ( cEvent.GetParameter(kEventParamRgnHandle, &updateRgn) != noErr ) + // according to the docs: redraw entire control if param not present + if ( cEvent.GetParameter(kEventParamShape, &updateRgn) != noErr ) { - HIShapeGetAsQDRgn( visRegion.GetWXHRGN(), updateRgn ); + updateRgn = visRegion.GetWXHRGN(); } else { if ( thisWindow->MacGetLeftBorderSize() != 0 || thisWindow->MacGetTopBorderSize() != 0 ) { // as this update region is in native window locals we must adapt it to wx window local - allocatedRgn = NewRgn() ; - CopyRgn( updateRgn , allocatedRgn ) ; - + allocatedRgn = HIShapeCreateMutableCopy(updateRgn); + HIShapeOffset(allocatedRgn, thisWindow->MacGetLeftBorderSize() , thisWindow->MacGetTopBorderSize()); // hide the given region by the new region that must be shifted - OffsetRgn( allocatedRgn , thisWindow->MacGetLeftBorderSize() , thisWindow->MacGetTopBorderSize() ) ; updateRgn = allocatedRgn ; } } @@ -210,9 +209,23 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl CGContextClearRect( cgContext, bounds ); } - if ( thisWindow->MacDoRedraw( updateRgn , cEvent.GetTicks() ) ) - result = noErr ; - + if ( !HIShapeIsEmpty(updateRgn) ) + { + // refcount increase because wxRegion constructor takes ownership of the native region + CFRetain(updateRgn); + thisWindow->GetUpdateRegion() = wxRegion(updateRgn); + if ( !thisWindow->MacDoRedraw( cEvent.GetTicks() ) ) + { + // for native controls: call their native paint method + if ( !thisWindow->MacIsUserPane() || + ( thisWindow->IsTopLevel() && thisWindow->GetBackgroundStyle() == wxBG_STYLE_SYSTEM ) ) + { + if ( thisWindow->GetBackgroundStyle() != wxBG_STYLE_TRANSPARENT ) + CallNextEventHandler( handler ,event ) ; + } + } + thisWindow->MacPaintChildrenBorders(); + } thisWindow->MacSetCGContextRef( NULL ) ; } @@ -221,7 +234,7 @@ static pascal OSStatus wxMacWindowControlEventHandler( EventHandlerCallRef handl } if ( allocatedRgn ) - DisposeRgn( allocatedRgn ) ; + CFRelease( allocatedRgn ) ; } break ; diff --git a/src/osx/window_osx.cpp b/src/osx/window_osx.cpp index 5e8a0b9f46..d5a4f2a756 100644 --- a/src/osx/window_osx.cpp +++ b/src/osx/window_osx.cpp @@ -1818,116 +1818,96 @@ void wxWindowMac::MacUpdateClippedRects() const /* This function must not change the updatergn ! */ -bool wxWindowMac::MacDoRedraw( void* updatergnr , long time ) +bool wxWindowMac::MacDoRedraw( long time ) { bool handled = false ; -#if wxOSX_USE_CARBON - Rect updatebounds ; - RgnHandle updatergn = (RgnHandle) updatergnr ; - GetRegionBounds( updatergn , &updatebounds ) ; + + wxRegion formerUpdateRgn = m_updateRegion; + wxRegion clientUpdateRgn = formerUpdateRgn; - // wxLogDebug(wxT("update for %s bounds %d, %d, %d, %d"), wxString(GetClassInfo()->GetClassName()).c_str(), updatebounds.left, updatebounds.top , updatebounds.right , updatebounds.bottom ) ; + wxSize sz = GetClientSize() ; + wxPoint origin = GetClientAreaOrigin() ; + + clientUpdateRgn.Intersect(origin.x , origin.y , origin.x + sz.x , origin.y + sz.y); + + // first send an erase event to the entire update area + { + // for the toplevel window this really is the entire area + // for all the others only their client area, otherwise they + // might be drawing with full alpha and eg put blue into + // the grow-box area of a scrolled window (scroll sample) + wxDC* dc = new wxWindowDC(this); + if ( IsTopLevel() ) + dc->SetDeviceClippingRegion(formerUpdateRgn); + else + dc->SetDeviceClippingRegion(clientUpdateRgn); - if ( !EmptyRgn(updatergn) ) - { - RgnHandle newupdate = NewRgn() ; - wxSize point = GetClientSize() ; - wxPoint origin = GetClientAreaOrigin() ; - SetRectRgn( newupdate , origin.x , origin.y , origin.x + point.x , origin.y + point.y ) ; - SectRgn( newupdate , updatergn , newupdate ) ; + wxEraseEvent eevent( GetId(), dc ); + eevent.SetEventObject( this ); + HandleWindowEvent( eevent ); + delete dc ; + } - // first send an erase event to the entire update area - { - // for the toplevel window this really is the entire area - // for all the others only their client area, otherwise they - // might be drawing with full alpha and eg put blue into - // the grow-box area of a scrolled window (scroll sample) - wxDC* dc = new wxWindowDC(this); - if ( IsTopLevel() ) - dc->SetDeviceClippingRegion(wxRegion(HIShapeCreateWithQDRgn(updatergn))); - else - dc->SetDeviceClippingRegion(wxRegion(HIShapeCreateWithQDRgn(newupdate))); + MacPaintGrowBox(); - wxEraseEvent eevent( GetId(), dc ); - eevent.SetEventObject( this ); - HandleWindowEvent( eevent ); - delete dc ; - } + // calculate a client-origin version of the update rgn and set m_updateRegion to that + clientUpdateRgn.Offset( -origin.x , -origin.y ); + m_updateRegion = clientUpdateRgn ; - MacPaintGrowBox(); + if ( !m_updateRegion.Empty() ) + { + // paint the window itself - // calculate a client-origin version of the update rgn and set m_updateRegion to that - OffsetRgn( newupdate , -origin.x , -origin.y ) ; - m_updateRegion = wxRegion(HIShapeCreateWithQDRgn(newupdate)) ; - DisposeRgn( newupdate ) ; + wxPaintEvent event; + event.SetTimestamp(time); + event.SetEventObject(this); + handled = HandleWindowEvent(event); + } - if ( !m_updateRegion.Empty() ) - { - // paint the window itself + m_updateRegion = formerUpdateRgn; + return handled; +} - wxPaintEvent event; - event.SetTimestamp(time); - event.SetEventObject(this); - if ( !HandleWindowEvent(event) ) - { - // for native controls: call their native paint method - if ( !MacIsUserPane() || ( IsTopLevel() && GetBackgroundStyle() == wxBG_STYLE_SYSTEM ) ) - { - if ( wxTheApp->MacGetCurrentEvent() != NULL && wxTheApp->MacGetCurrentEventHandlerCallRef() != NULL - && GetBackgroundStyle() != wxBG_STYLE_TRANSPARENT ) - CallNextEventHandler( - (EventHandlerCallRef)wxTheApp->MacGetCurrentEventHandlerCallRef() , - (EventRef) wxTheApp->MacGetCurrentEvent() ) ; - } - } - - handled = true ; - } +void wxWindowMac::MacPaintChildrenBorders() +{ + // now we cannot rely on having its borders drawn by a window itself, as it does not + // get the updateRgn wide enough to always do so, so we do it from the parent + // this would also be the place to draw any custom backgrounds for native controls + // in Composited windowing + wxPoint clientOrigin = GetClientAreaOrigin() ; - // now we cannot rely on having its borders drawn by a window itself, as it does not - // get the updateRgn wide enough to always do so, so we do it from the parent - // this would also be the place to draw any custom backgrounds for native controls - // in Composited windowing - wxPoint clientOrigin = GetClientAreaOrigin() ; + wxWindowMac *child; + int x, y, w, h; + for (wxWindowList::compatibility_iterator node = GetChildren().GetFirst(); node; node = node->GetNext()) + { + child = node->GetData(); + if (child == NULL) + continue; + if (child == m_vScrollBar) + continue; + if (child == m_hScrollBar) + continue; + if (child->IsTopLevel()) + continue; + if (!child->IsShown()) + continue; - wxWindowMac *child; - int x, y, w, h; - for (wxWindowList::compatibility_iterator node = GetChildren().GetFirst(); node; node = node->GetNext()) + // only draw those in the update region (add a safety margin of 10 pixels for shadow effects + + child->GetPosition( &x, &y ); + child->GetSize( &w, &h ); + + if ( m_updateRegion.Contains(clientOrigin.x+x-10, clientOrigin.y+y-10, w+20, h+20) ) { - child = node->GetData(); - if (child == NULL) - continue; - if (child == m_vScrollBar) - continue; - if (child == m_hScrollBar) - continue; - if (child->IsTopLevel()) - continue; - if (!child->IsShown()) - continue; - - // only draw those in the update region (add a safety margin of 10 pixels for shadow effects - - child->GetPosition( &x, &y ); - child->GetSize( &w, &h ); - Rect childRect = { y , x , y + h , x + w } ; - OffsetRect( &childRect , clientOrigin.x , clientOrigin.y ) ; - InsetRect( &childRect , -10 , -10) ; - - if ( RectInRgn( &childRect , updatergn ) ) + // paint custom borders + wxNcPaintEvent eventNc( child->GetId() ); + eventNc.SetEventObject( child ); + if ( !child->HandleWindowEvent( eventNc ) ) { - // paint custom borders - wxNcPaintEvent eventNc( child->GetId() ); - eventNc.SetEventObject( child ); - if ( !child->HandleWindowEvent( eventNc ) ) - { - child->MacPaintBorders(0, 0) ; - } + child->MacPaintBorders(0, 0) ; } } } -#endif - return handled ; } -- 2.45.2