Rebased ref, commits from common ancestor: commit fa9be6c6417a9ad3245ec9dd7d2927f52ed3e42c Author: Douglas Mencken <dougmenc...@gmail.com> Date: Sat Dec 27 06:25:11 2014 -0500
remove now-unused OUTPATH, fix solenv/bin/modules/installer (macosx_x86_64 is not "the only one"; use ::globals::os MACOSX) + add PLATFORM_MACOSX_POWERPC to isValidPlatform @ desktop/source/deployment/misc/dp_platform.cxx related commit: 3104fba6051328cb827042272fc6bccf05ccf5fb Change-Id: Iced611e001ce69860d001b10c84d12a568b40a59 diff --git a/configure.ac b/configure.ac index e1316e0..450b770 100644 --- a/configure.ac +++ b/configure.ac @@ -3956,7 +3956,6 @@ darwin*) CPUNAME=POWERPC RTL_ARCH=PowerPC PLATFORMID=macosx_powerpc - OUTPATH=unxmacxp ;; i*86) AC_MSG_ERROR([Can't build 64-bit code in 32-bit OS]) diff --git a/desktop/source/deployment/misc/dp_platform.cxx b/desktop/source/deployment/misc/dp_platform.cxx index 7f217f1..ff5c6a1 100644 --- a/desktop/source/deployment/misc/dp_platform.cxx +++ b/desktop/source/deployment/misc/dp_platform.cxx @@ -57,6 +57,7 @@ #define PLATFORM_FREEBSD_X86_64 "freebsd_x86_64" #define PLATFORM_NETBSD_X86 "netbsd_x86" #define PLATFORM_NETBSD_X86_64 "netbsd_x86_64" +#define PLATFORM_MACOSX_POWERPC "macosx_powerpc" #define PLATFORM_MACOSX_X86 "macosx_x86" #define PLATFORM_MACOSX_X86_64 "macosx_x86_64" #define PLATFORM_OPENBSD_X86 "openbsd_x86" @@ -169,6 +170,8 @@ namespace ret = checkOSandCPU("NetBSD", "x86"); else if (token == PLATFORM_NETBSD_X86_64) ret = checkOSandCPU("NetBSD", "X86_64"); + else if (token == PLATFORM_MACOSX_POWERPC) + ret = checkOSandCPU("MacOSX", "PowerPC"); else if (token == PLATFORM_MACOSX_X86) ret = checkOSandCPU("MacOSX", "x86"); else if (token == PLATFORM_MACOSX_X86_64) diff --git a/solenv/bin/modules/installer/download.pm b/solenv/bin/modules/installer/download.pm index 37a9123..22bed72 100644 --- a/solenv/bin/modules/installer/download.pm +++ b/solenv/bin/modules/installer/download.pm @@ -584,7 +584,7 @@ sub resolve_variables_in_downloadname elsif ( $installer::globals::issolarissparcbuild ) { $os = "solsparc"; } elsif ( $installer::globals::issolarisx86build ) { $os = "solia"; } elsif ( $installer::globals::islinuxbuild ) { $os = "linux"; } - elsif ( $installer::globals::platformid eq 'macosx_x86_64' ) { $os = "macosxx"; } + elsif ( $installer::globals::os eq 'MACOSX' ) { $os = "macosx"; } else { $os = ""; } $downloadname =~ s/\{os\}/$os/; diff --git a/solenv/bin/modules/installer/parameter.pm b/solenv/bin/modules/installer/parameter.pm index d32df73..f8fa66a 100644 --- a/solenv/bin/modules/installer/parameter.pm +++ b/solenv/bin/modules/installer/parameter.pm @@ -275,7 +275,7 @@ sub setglobalvariables } } - if ( $installer::globals::platformid eq 'macosx_x86_64') + if ( $installer::globals::os eq 'MACOSX') { $installer::globals::ismacbuild = 1; diff --git a/solenv/bin/modules/installer/simplepackage.pm b/solenv/bin/modules/installer/simplepackage.pm index 6d77e41..fa9b96c 100644 --- a/solenv/bin/modules/installer/simplepackage.pm +++ b/solenv/bin/modules/installer/simplepackage.pm @@ -665,7 +665,7 @@ sub create_simple_package my $extensionfolder = get_extensions_dir($subfolderdir); installer::systemactions::remove_empty_dirs_in_folder($extensionfolder); - if ( $installer::globals::platformid eq 'macosx_x86_64' ) + if ( $installer::globals::os eq 'MACOSX' ) { installer::worker::put_scpactions_into_installset("$installdir/$packagename"); } commit 91dec9edcaddba34a0e9019cb8f9c2316c3c9cae Author: Douglas Mencken <dougmenc...@gmail.com> Date: Wed Dec 24 10:47:02 2014 -0500 use -lobjc-gnu and GNUstep libraries when compiler is GCC (for: vcl, apple_remote, sfx2, avmedia-quicktime, fpicker-aqua, shell-macbe1) {note: path to GNUstep libraries is currently hard-coded} Change-Id: Ia28778f3e262e71c87c48e71fbfd9001d5d6ac7a diff --git a/apple_remote/Library_AppleRemote.mk b/apple_remote/Library_AppleRemote.mk index cf48553..5d8cbfd 100644 --- a/apple_remote/Library_AppleRemote.mk +++ b/apple_remote/Library_AppleRemote.mk @@ -17,6 +17,10 @@ $(eval $(call gb_Library_use_system_darwin_frameworks,AppleRemote,\ IOKit \ )) +$(eval $(call gb_Library_add_libs,AppleRemote,\ + $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \ +)) + $(eval $(call gb_Library_add_objcobjects,AppleRemote,\ apple_remote/source/KeyspanFrontRowControl \ apple_remote/source/AppleRemote \ diff --git a/avmedia/Library_avmediaQuickTime.mk b/avmedia/Library_avmediaQuickTime.mk index 20bf9c3..8bc097d 100644 --- a/avmedia/Library_avmediaQuickTime.mk +++ b/avmedia/Library_avmediaQuickTime.mk @@ -35,6 +35,10 @@ $(eval $(call gb_Library_use_system_darwin_frameworks,avmediaQuickTime,\ QTKit \ )) +$(eval $(call gb_Library_add_libs,avmediaQuickTime,\ + $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \ +)) + $(eval $(call gb_Library_add_objcxxobjects,avmediaQuickTime,\ avmedia/source/quicktime/framegrabber \ avmedia/source/quicktime/manager \ diff --git a/fpicker/Library_fps_aqua.mk b/fpicker/Library_fps_aqua.mk index e4b7ef5..c8a2dc5 100644 --- a/fpicker/Library_fps_aqua.mk +++ b/fpicker/Library_fps_aqua.mk @@ -44,4 +44,8 @@ $(eval $(call gb_Library_add_objcxxobjects,fps_aqua,\ fpicker/source/aqua/SalAquaPicker \ )) +$(eval $(call gb_Library_add_libs,fps_aqua,\ + $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \ +)) + # vim: set noet sw=4 ts=4: diff --git a/sfx2/Library_sfx.mk b/sfx2/Library_sfx.mk index 0a1100e..61a73c6 100644 --- a/sfx2/Library_sfx.mk +++ b/sfx2/Library_sfx.mk @@ -319,7 +319,7 @@ $(eval $(call gb_Library_add_objcxxobjects,sfx,\ sfx2/source/appl/shutdowniconaqua \ )) $(eval $(call gb_Library_add_libs,sfx,\ - -lobjc \ + $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \ )) $(eval $(call gb_Library_use_system_darwin_frameworks,sfx,\ Cocoa \ diff --git a/shell/Library_macbe.mk b/shell/Library_macbe.mk index c693e11..5b13704 100644 --- a/shell/Library_macbe.mk +++ b/shell/Library_macbe.mk @@ -18,6 +18,10 @@ $(eval $(call gb_Library_use_system_darwin_frameworks,macbe1,\ SystemConfiguration \ )) +$(eval $(call gb_Library_add_libs,macbe1,\ + $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \ +)) + $(eval $(call gb_Library_use_libraries,macbe1,\ cppu \ cppuhelper \ diff --git a/vcl/Library_vcl.mk b/vcl/Library_vcl.mk index e8df725..64aacc8 100644 --- a/vcl/Library_vcl.mk +++ b/vcl/Library_vcl.mk @@ -89,7 +89,7 @@ $(eval $(call gb_Library_add_libs,vcl,\ -framework IOKit \ -F/System/Library/PrivateFrameworks \ -framework CoreUI \ - -lobjc \ + $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),-lobjc,-lobjc-gnu -L/usr/GNUstep/System/Library/Libraries -lgnustep-base -lgnustep-gui) \ )) endif ifeq ($(OS),MACOSX) commit 354fafac0f9306aac289a65e20cecfbd31b2c371 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Fri Dec 26 09:48:06 2014 -0500 lingucomponent:MacOSXSpell: switch off for OS X 10.5 Change-Id: I8f8eb6717b904aa4c231466ee7a1b873bc0035c1 diff --git a/Repository.mk b/Repository.mk index 2cd86cb..63a7404 100644 --- a/Repository.mk +++ b/Repository.mk @@ -489,7 +489,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \ AppleRemote \ ) \ fps_aqua \ - MacOSXSpell \ + $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),MacOSXSpell) \ ) \ )) diff --git a/lingucomponent/Module_lingucomponent.mk b/lingucomponent/Module_lingucomponent.mk index 92d582c..68dcb78 100644 --- a/lingucomponent/Module_lingucomponent.mk +++ b/lingucomponent/Module_lingucomponent.mk @@ -14,7 +14,9 @@ $(eval $(call gb_Module_add_targets,lingucomponent,\ Library_guesslang \ Library_hyphen \ Library_lnth \ - $(if $(filter MACOSX,$(OS)),Library_MacOSXSpell) \ + $(if $(filter MACOSX,$(OS)),\ + $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),Library_MacOSXSpell) \ + ) \ Library_spell \ StaticLibrary_ulingu \ )) diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk index f23e4bf..db899fd 100644 --- a/postprocess/Rdb_services.mk +++ b/postprocess/Rdb_services.mk @@ -132,7 +132,7 @@ $(eval $(call gb_Rdb_add_components,services,\ $(call gb_Helper_optional,AVMEDIA,avmedia/source/quicktime/avmediaQuickTime) \ ) \ ) \ - lingucomponent/source/spellcheck/macosxspell/MacOSXSpell \ + $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),lingucomponent/source/spellcheck/macosxspell/MacOSXSpell) \ fpicker/source/aqua/fps_aqua \ shell/source/backends/macbe/macbe1 \ vcl/vcl.macosx \ commit 420445c20788606cd260ce6f9345376bc51f2838 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Thu Dec 25 16:19:29 2014 -0500 Disable OOoSpotlightImporter extension for OS X 10.5 Change-Id: I0d9c48d511094fe3a5464f6abc811c2fb33bab4e diff --git a/Repository.mk b/Repository.mk index f6bb591..2cd86cb 100644 --- a/Repository.mk +++ b/Repository.mk @@ -208,7 +208,7 @@ endif ifeq ($(OS),MACOSX) $(eval $(call gb_Helper_register_libraries,PLAINLIBS_NONE, \ - OOoSpotlightImporter \ + $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),OOoSpotlightImporter) \ )) endif diff --git a/extensions/Module_extensions.mk b/extensions/Module_extensions.mk index fa527f5..c7d478c 100644 --- a/extensions/Module_extensions.mk +++ b/extensions/Module_extensions.mk @@ -113,9 +113,9 @@ endif # ENABLE_NPAPI_FROM_BROWSER=TRUE ifeq ($(OS),MACOSX) $(eval $(call gb_Module_add_targets,extensions,\ - Library_OOoSpotlightImporter \ - Package_mdibundle \ - Package_OOoSpotlightImporter \ + $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),Library_OOoSpotlightImporter) \ + $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),Package_mdibundle) \ + $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),Package_OOoSpotlightImporter) \ )) endif # OS=MACOSX diff --git a/scp2/source/ooo/file_ooo.scp b/scp2/source/ooo/file_ooo.scp index 5f31ae4..f19e822 100644 --- a/scp2/source/ooo/file_ooo.scp +++ b/scp2/source/ooo/file_ooo.scp @@ -582,6 +582,7 @@ End #endif #ifdef MACOSX +#if MACOSX_SDK_VERSION >= 1060 File gid_File_Spotlight_Bundle TXT_FILE_BODY; Dir = FILELIST_DIR; @@ -596,6 +597,7 @@ File gid_File_Spotlight_Bundle_lib Styles = (FILELIST,USE_INTERNAL_RIGHTS); End #endif +#endif File gid_File_Images TXT_FILE_BODY; commit b578f7efb30e8790ae555191d1cc90717ee6a0a5 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Wed Dec 24 15:03:00 2014 -0500 avmedia: disable avmediaQuickTime for OS X 10.5 + fix `OBJC_EXPORT is not defined' and `cannot convert to NSError**' Change-Id: I4842a74feffe9707b031b81c7941eccac0211ce0 diff --git a/Repository.mk b/Repository.mk index 9e101bb..f6bb591 100644 --- a/Repository.mk +++ b/Repository.mk @@ -299,7 +299,9 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \ $(call gb_Helper_optional,AVMEDIA,avmedia) \ $(if $(filter MACOSX,$(OS)),\ $(if $(filter-out 1050 1060,$(MACOSX_SDK_VERSION)),avmediaMacAVF) \ - $(if $(ENABLE_MACOSX_SANDBOX),,avmediaQuickTime) \ + $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)), \ + $(if $(ENABLE_MACOSX_SANDBOX),,avmediaQuickTime) \ + ) \ ) \ $(call gb_Helper_optional,SCRIPTING, \ basctl \ diff --git a/avmedia/Module_avmedia.mk b/avmedia/Module_avmedia.mk index 27b588d..f2eecc3 100644 --- a/avmedia/Module_avmedia.mk +++ b/avmedia/Module_avmedia.mk @@ -36,12 +36,14 @@ $(eval $(call gb_Module_add_targets,avmedia,\ endif ifeq ($(OS),MACOSX) +ifneq (1050,$(MACOSX_SDK_VERSION)) ifneq ($(ENABLE_MACOSX_SANDBOX),TRUE) $(eval $(call gb_Module_add_targets,avmedia,\ Library_avmediaQuickTime \ )) endif endif +endif ifeq ($(OS),MACOSX) ifneq (1050,$(MACOSX_SDK_VERSION)) diff --git a/avmedia/source/quicktime/framegrabber.mm b/avmedia/source/quicktime/framegrabber.mm index 7f7ee59..fa4c0f8 100644 --- a/avmedia/source/quicktime/framegrabber.mm +++ b/avmedia/source/quicktime/framegrabber.mm @@ -74,7 +74,7 @@ bool FrameGrabber::create( const ::rtl::OUString& rURL ) // create the Movie - mpMovie = [mpMovie initWithURL:aURL error:nil]; + mpMovie = [mpMovie initWithURL:aURL error:reinterpret_cast<NSError **>(nil)]; if(mpMovie) { [mpMovie retain]; diff --git a/avmedia/source/quicktime/quicktimecommon.hxx b/avmedia/source/quicktime/quicktimecommon.hxx index 8c1711d..b01a21e 100644 --- a/avmedia/source/quicktime/quicktimecommon.hxx +++ b/avmedia/source/quicktime/quicktimecommon.hxx @@ -21,6 +21,9 @@ #define INCLUDED_AVMEDIA_SOURCE_QUICKTIME_QUICKTIMECOMMON_HXX #ifdef MACOSX +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <premac.h> #import <Cocoa/Cocoa.h> #import <QTKit/QTKit.h> diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk index adaef73..f23e4bf 100644 --- a/postprocess/Rdb_services.mk +++ b/postprocess/Rdb_services.mk @@ -128,7 +128,9 @@ $(eval $(call gb_Rdb_add_components,services,\ $(call gb_Helper_optional,AVMEDIA,avmedia/source/macavf/avmediaMacAVF) \ ) \ $(if $(filter TRUE,$(ENABLE_MACOSX_SANDBOX)),, \ - $(call gb_Helper_optional,AVMEDIA,avmedia/source/quicktime/avmediaQuickTime) \ + $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)), \ + $(call gb_Helper_optional,AVMEDIA,avmedia/source/quicktime/avmediaQuickTime) \ + ) \ ) \ lingucomponent/source/spellcheck/macosxspell/MacOSXSpell \ fpicker/source/aqua/fps_aqua \ commit 9189a753f8ff184b07b4780e740b295fbf12f128 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Thu Dec 25 11:01:26 2014 -0500 disable OpenCL (and glew) on OS X 10.5 Change-Id: I6d3fdcca15b3c5191851feea33434b9b5df7b26f diff --git a/configure.ac b/configure.ac index 794dfce..e1316e0 100644 --- a/configure.ac +++ b/configure.ac @@ -10233,11 +10233,15 @@ dnl ================================================= dnl Check whether to build with OpenCL support. dnl ================================================= -if test $_os != iOS -a $_os != Android; then +if test "$_os" = "Darwin" -a "$with_macosx_sdk" = "10.5"; then + HAVE_FEATURE_OPENCL= +else + if test $_os != iOS -a $_os != Android; then # OPENCL in BUILD_TYPE tells that OpenCL is potentially available on the platform (optional at run-time, # used through clew). BUILD_TYPE="$BUILD_TYPE OPENCL" AC_DEFINE(HAVE_FEATURE_OPENCL) + fi fi dnl =================================================================== commit c8dac8021c21962de3aeddd5fe854a177bf3225a Author: Douglas Mencken <dougmenc...@gmail.com> Date: Fri Dec 26 08:59:41 2014 -0500 fpicker:aqua - deal with OBJC_EXPORT and objc_msgSend Change-Id: I414f5dcbfca9697b22a20d2d45f94c91ec4cd691 diff --git a/fpicker/source/aqua/CFStringUtilities.hxx b/fpicker/source/aqua/CFStringUtilities.hxx index 58d0951..7429acb 100644 --- a/fpicker/source/aqua/CFStringUtilities.hxx +++ b/fpicker/source/aqua/CFStringUtilities.hxx @@ -21,6 +21,9 @@ #define INCLUDED_FPICKER_SOURCE_AQUA_CFSTRINGUTILITIES_HXX #include <premac.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Carbon/Carbon.h> #include <Cocoa/Cocoa.h> #include <postmac.h> diff --git a/fpicker/source/aqua/ControlHelper.hxx b/fpicker/source/aqua/ControlHelper.hxx index 1e2a774..071955b 100644 --- a/fpicker/source/aqua/ControlHelper.hxx +++ b/fpicker/source/aqua/ControlHelper.hxx @@ -27,6 +27,9 @@ #include <map> #include <premac.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Cocoa/Cocoa.h> #include <postmac.h> #include "SalAquaConstants.h" diff --git a/fpicker/source/aqua/NSString_OOoAdditions.hxx b/fpicker/source/aqua/NSString_OOoAdditions.hxx index 08bfbd4..62b824f 100644 --- a/fpicker/source/aqua/NSString_OOoAdditions.hxx +++ b/fpicker/source/aqua/NSString_OOoAdditions.hxx @@ -21,6 +21,9 @@ #define INCLUDED_FPICKER_SOURCE_AQUA_NSSTRING_OOOADDITIONS_HXX #include <premac.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #import <Cocoa/Cocoa.h> #include <postmac.h> #include <rtl/ustring.hxx> diff --git a/fpicker/source/aqua/SalAquaFilePicker.mm b/fpicker/source/aqua/SalAquaFilePicker.mm index 86d1da3..cf5a818 100644 --- a/fpicker/source/aqua/SalAquaFilePicker.mm +++ b/fpicker/source/aqua/SalAquaFilePicker.mm @@ -204,12 +204,13 @@ sal_Int16 SAL_CALL SalAquaFilePicker::execute() throw( uno::RuntimeException ) //Set the delegate to be notified of certain events - // I don't know why, but with gcc 4.2.1, this line results in the warning: +#if MACOSX_SDK_VERSION < 1060 + [m_pDialog setDelegate:m_pDelegate]; +#else + // with gcc 4.2.1, [m_pDialog setDelegate:m_pDelegate] results in the warning // class 'AquaFilePickerDelegate' does not implement the 'NSOpenSavePanelDelegate' protocol - // So instead of: - // [m_pDialog setDelegate:m_pDelegate]; - // do: objc_msgSend(m_pDialog, @selector(setDelegate:), m_pDelegate); +#endif int nStatus = runandwaitforresult(); diff --git a/fpicker/source/aqua/resourceprovider.hxx b/fpicker/source/aqua/resourceprovider.hxx index fd6647e..e736801 100644 --- a/fpicker/source/aqua/resourceprovider.hxx +++ b/fpicker/source/aqua/resourceprovider.hxx @@ -23,6 +23,10 @@ #include <sal/types.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif + #include <premac.h> #include <Cocoa/Cocoa.h> #include <postmac.h> commit a19fe04ae597d902f98a98e8f6ad0255b5b6fd9b Author: Douglas Mencken <dougmenc...@gmail.com> Date: Wed Dec 24 12:59:04 2014 -0500 sfx2:shutdowniconaqua.mm: deal with OBJC_EXPORT and objc_msgSend Change-Id: I7ad0ce3067d8f51d968d4233f77d70300d0d913e diff --git a/sfx2/source/appl/shutdowniconaqua.mm b/sfx2/source/appl/shutdowniconaqua.mm index d69a207..9cc6921 100644 --- a/sfx2/source/appl/shutdowniconaqua.mm +++ b/sfx2/source/appl/shutdowniconaqua.mm @@ -41,6 +41,9 @@ #include "premac.h" #include <objc/objc-runtime.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Cocoa/Cocoa.h> #include "postmac.h" @@ -352,15 +355,13 @@ static void appendRecentMenu( NSMenu* i_pMenu, NSMenu* i_pDockMenu, const OUStri [pItem setEnabled: YES]; NSMenu* pRecentMenu = [[NSMenu alloc] initWithTitle: getAutoreleasedString( i_rTitle ) ]; +#if MACOSX_SDK_VERSION < 1060 + [pRecentMenu setDelegate: pRecentDelegate]; +#else // When compiling against 10.6 SDK, we get the warning: // class 'RecentMenuDelegate' does not implement the 'NSMenuDelegate' protocol - - // No idea if that is a bogus warning, or if the way this is - // implemented just is so weird that the compiler gets - // confused. Anyway, to avoid warnings, instead of this: - // [pRecentMenu setDelegate: pRecentDelegate]; - // do this: objc_msgSend(pRecentMenu, @selector(setDelegate:), pRecentDelegate); +#endif [pRecentMenu setAutoenablesItems: NO]; [pItem setSubmenu: pRecentMenu]; @@ -375,9 +376,11 @@ static void appendRecentMenu( NSMenu* i_pMenu, NSMenu* i_pDockMenu, const OUStri [pItem setEnabled: YES]; pRecentMenu = [[NSMenu alloc] initWithTitle: getAutoreleasedString( i_rTitle ) ]; - // See above - // [pRecentMenu setDelegate: pRecentDelegate]; +#if MACOSX_SDK_VERSION < 1060 + [pRecentMenu setDelegate: pRecentDelegate]; +#else objc_msgSend(pRecentMenu, @selector(setDelegate:), pRecentDelegate); +#endif [pRecentMenu setAutoenablesItems: NO]; [pItem setSubmenu: pRecentMenu]; commit 6c8ee32eb344fbd21705770ecebe6b13e3dc3e39 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Sat Oct 25 11:03:56 2014 -0400 vcl: workarounds for `objc_msgSend setDelegate' on OS X 10.5 (vcl/osx/salframe.cxx, vcl/osx/salmenu.cxx) plus, move conditional includes in salframe.cxx down a bit Change-Id: I39886b4590f227ec69042fed0f5240ba0b0fd7f2 diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx index 929179f..8955577 100644 --- a/vcl/osx/salframe.cxx +++ b/vcl/osx/salframe.cxx @@ -37,11 +37,6 @@ #include "osx/a11yfactory.h" #include "quartz/utils.h" -#if MACOSX_SDK_VERSION < 1060 -#include "vcl/timer.hxx" -#include "osx/saltimer.h" -#endif - #include "salwtype.hxx" #include "premac.h" @@ -54,6 +49,11 @@ #include <Carbon/Carbon.h> #include "postmac.h" +#if MACOSX_SDK_VERSION < 1060 +#include "vcl/timer.hxx" +#include "osx/saltimer.h" +#endif + using namespace std; AquaSalFrame* AquaSalFrame::s_pCaptureFrame = NULL; @@ -201,16 +201,16 @@ void AquaSalFrame::initWindowAndView() [mpNSWindow setAcceptsMouseMovedEvents: YES]; [mpNSWindow setHasShadow: YES]; -#if MACOSX_SDK_VERSION < 1060 - objc_msgSend(mpNSWindow, @selector(setDelegate:), mpNSWindow); -#else +#if MACOSX_SDK_VERSION >= 1060 + /* objc_msgSend(mpNSWindow, @selector(setDelegate:), mpNSWindow); */ [mpNSWindow setDelegate: static_cast<id<NSWindowDelegate> >(mpNSWindow)]; -#endif if( [mpNSWindow respondsToSelector: @selector(setRestorable:)]) { objc_msgSend(mpNSWindow, @selector(setRestorable:), NO); } +#endif + const NSRect aRect = { NSZeroPoint, NSMakeSize( maGeometry.nWidth, maGeometry.nHeight )}; mnTrackingRectTag = [mpNSView addTrackingRect: aRect owner: mpNSView userData: nil assumeInside: NO]; diff --git a/vcl/osx/salmenu.cxx b/vcl/osx/salmenu.cxx index b6c68ee..e6941ba 100644 --- a/vcl/osx/salmenu.cxx +++ b/vcl/osx/salmenu.cxx @@ -246,9 +246,8 @@ AquaSalMenu::AquaSalMenu( bool bMenuBar ) : if( ! mbMenuBar ) { mpMenu = [[SalNSMenu alloc] initWithMenu: this]; -#if MACOSX_SDK_VERSION < 1060 - objc_msgSend(mpMenu, @selector(setDelegate:), mpMenu); -#else +#if MACOSX_SDK_VERSION >= 1060 + /* objc_msgSend(mpMenu, @selector(setDelegate:), mpMenu); */ [mpMenu setDelegate: (id<NSMenuDelegate>)mpMenu]; #endif } commit f095ecb5cac996c418d557f58817f320139f42f6 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Sun Oct 26 06:38:10 2014 -0400 vcl: fix some "cannot convert 'objc_object*' to..." issues Change-Id: I4b0e32c412937da4b2ea4bf350be32ea31362b3c diff --git a/vcl/osx/salframeview.mm b/vcl/osx/salframeview.mm index 27be98d..1f98db1 100644 --- a/vcl/osx/salframeview.mm +++ b/vcl/osx/salframeview.mm @@ -482,7 +482,7 @@ static AquaSalFrame* getMouseContainerFrame() mpFrame = pFrame; mMarkedRange = NSMakeRange(NSNotFound, 0); mSelectedRange = NSMakeRange(NSNotFound, 0); - mpReferenceWrapper = nil; + mpReferenceWrapper = reinterpret_cast<ReferenceWrapper*>(nil); mpMouseEventListener = nil; mpLastSuperEvent = nil; } @@ -1788,7 +1788,7 @@ private: // some frames never become visible .. ::vcl::Window *pWindow = mpFrame -> GetWindow(); if ( ! pWindow ) - return nil; + return reinterpret_cast<::com::sun::star::accessibility::XAccessibleContext*>(nil); mpReferenceWrapper = new ReferenceWrapper; mpReferenceWrapper -> rAccessibleContext = pWindow -> /*GetAccessibleChildWindow( 0 ) ->*/ GetAccessible() -> getAccessibleContext(); diff --git a/vcl/osx/salnativewidgets.cxx b/vcl/osx/salnativewidgets.cxx index cb8175e..9d2c19e 100644 --- a/vcl/osx/salnativewidgets.cxx +++ b/vcl/osx/salnativewidgets.cxx @@ -558,7 +558,7 @@ bool AquaSalGraphics::drawNativeControl(ControlType nType, [NSNumber numberWithBool:NO], @"kCUIWindowFrameDrawTitleSeparatorKey", [NSNumber numberWithBool:YES], @"is.flipped", nil]), - nil);; + reinterpret_cast<const __CFDictionary**>(nil));; } else { commit b87dffa12455ac61a1151fb9f436c4157c4b18b4 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Tue Oct 28 13:18:59 2014 -0400 fix "trying to encode non-integer type as a bitfield" this problem arises when you compile with GCC (GNU objective-C mode) Change-Id: Ifa4ff252ae5a7b71320d41873a2c412a32dd0333 diff --git a/vcl/inc/osx/salframe.h b/vcl/inc/osx/salframe.h index 47c1c91..d4dcd43 100644 --- a/vcl/inc/osx/salframe.h +++ b/vcl/inc/osx/salframe.h @@ -62,13 +62,13 @@ public: int mnMaxWidth; // max. client width in pixels int mnMaxHeight; // max. client height in pixels NSRect maFullScreenRect; // old window size when in FullScreen - bool mbGraphics:1; // is Graphics used? - bool mbFullScreen:1; // is Window in FullScreen? - bool mbShown:1; - bool mbInitShow:1; - bool mbPositioned:1; - bool mbSized:1; - bool mbPresentation:1; + int mbGraphics:1; // is Graphics used? + int mbFullScreen:1; // is Window in FullScreen? + int mbShown:1; + int mbInitShow:1; + int mbPositioned:1; + int mbSized:1; + int mbPresentation:1; sal_uLong mnStyle; unsigned int mnStyleMask; // our style mask from NSWindow creation commit 82493186f29b7d10edacd20cbc86dd94518e4e75 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Sun Oct 26 03:17:10 2014 -0400 vcl, apple_remote, toolkit: fix "OBJC_EXPORT is not defined" ( include <objc/objc-api.h> ) Change-Id: Idcbfff670fb9d83e950e7eac60000ef3e0130f95 diff --git a/apple_remote/source/AppleRemote.h b/apple_remote/source/AppleRemote.h index f80431b..a5da1b9 100644 --- a/apple_remote/source/AppleRemote.h +++ b/apple_remote/source/AppleRemote.h @@ -29,6 +29,9 @@ * *****************************************************************************/ +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #import <Cocoa/Cocoa.h> #import "HIDRemoteControlDevice.h" diff --git a/apple_remote/source/KeyspanFrontRowControl.h b/apple_remote/source/KeyspanFrontRowControl.h index c75e86b..fa527bb 100644 --- a/apple_remote/source/KeyspanFrontRowControl.h +++ b/apple_remote/source/KeyspanFrontRowControl.h @@ -29,6 +29,9 @@ * *****************************************************************************/ +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #import <Cocoa/Cocoa.h> #import "HIDRemoteControlDevice.h" diff --git a/include/apple_remote/RemoteControl.h b/include/apple_remote/RemoteControl.h index 04fab5a..589cfd9 100644 --- a/include/apple_remote/RemoteControl.h +++ b/include/apple_remote/RemoteControl.h @@ -31,6 +31,9 @@ #include <sal/config.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #import <Cocoa/Cocoa.h> #include <sal/types.h> diff --git a/include/apple_remote/RemoteMainController.h b/include/apple_remote/RemoteMainController.h index c4ee0ac..158ba6d 100644 --- a/include/apple_remote/RemoteMainController.h +++ b/include/apple_remote/RemoteMainController.h @@ -31,6 +31,9 @@ #include <sal/config.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #import <Cocoa/Cocoa.h> #include <sal/types.h> diff --git a/toolkit/source/awt/vclxsystemdependentwindow.cxx b/toolkit/source/awt/vclxsystemdependentwindow.cxx index 1ee5600..7e6d93f 100644 --- a/toolkit/source/awt/vclxsystemdependentwindow.cxx +++ b/toolkit/source/awt/vclxsystemdependentwindow.cxx @@ -30,6 +30,9 @@ #ifdef MACOSX #include "premac.h" +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Cocoa/Cocoa.h> #include "postmac.h" #endif diff --git a/toolkit/source/awt/vclxtoolkit.cxx b/toolkit/source/awt/vclxtoolkit.cxx index 38b55027..12adf3a 100644 --- a/toolkit/source/awt/vclxtoolkit.cxx +++ b/toolkit/source/awt/vclxtoolkit.cxx @@ -60,6 +60,9 @@ #ifdef MACOSX #include "premac.h" +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Cocoa/Cocoa.h> #include "postmac.h" #endif diff --git a/toolkit/source/awt/vclxtopwindow.cxx b/toolkit/source/awt/vclxtopwindow.cxx index 48b593e..8cf52b1 100644 --- a/toolkit/source/awt/vclxtopwindow.cxx +++ b/toolkit/source/awt/vclxtopwindow.cxx @@ -22,6 +22,9 @@ #if defined ( MACOSX ) #include "premac.h" +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Cocoa/Cocoa.h> #include "postmac.h" #endif diff --git a/toolkit/source/awt/vclxwindow1.cxx b/toolkit/source/awt/vclxwindow1.cxx index 46b2e72..f2cc331 100644 --- a/toolkit/source/awt/vclxwindow1.cxx +++ b/toolkit/source/awt/vclxwindow1.cxx @@ -28,6 +28,9 @@ #include <postwin.h> #elif defined ( MACOSX ) #include "premac.h" +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Cocoa/Cocoa.h> #include "postmac.h" #endif diff --git a/vcl/inc/OpenGLWrapper.hxx b/vcl/inc/OpenGLWrapper.hxx index 0b90b41..d09a611 100644 --- a/vcl/inc/OpenGLWrapper.hxx +++ b/vcl/inc/OpenGLWrapper.hxx @@ -7,6 +7,10 @@ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */ +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif + #include "AppKit/NSOpenGLView.h" #include "AppKit/NSOpenGL.h" diff --git a/vcl/inc/osx/a11yfactory.h b/vcl/inc/osx/a11yfactory.h index c739f3e..4e92126 100644 --- a/vcl/inc/osx/a11yfactory.h +++ b/vcl/inc/osx/a11yfactory.h @@ -20,6 +20,10 @@ #ifndef INCLUDED_VCL_INC_OSX_A11YFACTORY_H #define INCLUDED_VCL_INC_OSX_A11YFACTORY_H +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif + #include "osxvcltypes.h" #include "a11ywrapper.h" #include <com/sun/star/accessibility/XAccessibleContext.hpp> diff --git a/vcl/inc/osx/osxvcltypes.h b/vcl/inc/osx/osxvcltypes.h index f1659c4..96edccc 100644 --- a/vcl/inc/osx/osxvcltypes.h +++ b/vcl/inc/osx/osxvcltypes.h @@ -21,6 +21,9 @@ #define INCLUDED_VCL_INC_OSX_OSXVCLTYPES_H #include "premac.h" +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #import <Cocoa/Cocoa.h> #import <AppKit/NSEvent.h> #include "postmac.h" diff --git a/vcl/inc/osx/printview.h b/vcl/inc/osx/printview.h index e396bd8..b63900b 100644 --- a/vcl/inc/osx/printview.h +++ b/vcl/inc/osx/printview.h @@ -21,6 +21,9 @@ #define INCLUDED_VCL_INC_OSX_PRINTVIEW_H #include "premac.h" +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Cocoa/Cocoa.h> #include "postmac.h" diff --git a/vcl/inc/osx/saldata.hxx b/vcl/inc/osx/saldata.hxx index 86667ac..ff5f3e4 100644 --- a/vcl/inc/osx/saldata.hxx +++ b/vcl/inc/osx/saldata.hxx @@ -23,6 +23,9 @@ #include <config_features.h> #include "premac.h" +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Cocoa/Cocoa.h> #include "postmac.h" diff --git a/vcl/inc/osx/salinst.h b/vcl/inc/osx/salinst.h index 8a88a26..4efcbe0 100644 --- a/vcl/inc/osx/salinst.h +++ b/vcl/inc/osx/salinst.h @@ -25,6 +25,9 @@ #include "osl/conditn.h" #ifdef MACOSX +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include "osx/osxvcltypes.h" #endif diff --git a/vcl/inc/osx/saltimer.h b/vcl/inc/osx/saltimer.h index b751a81..e663c65 100644 --- a/vcl/inc/osx/saltimer.h +++ b/vcl/inc/osx/saltimer.h @@ -21,6 +21,9 @@ #define INCLUDED_VCL_INC_OSX_SALTIMER_H #include "premac.h" +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Cocoa/Cocoa.h> #include "postmac.h" diff --git a/vcl/inc/osx/vclnsapp.h b/vcl/inc/osx/vclnsapp.h index 541b509..675cacc 100644 --- a/vcl/inc/osx/vclnsapp.h +++ b/vcl/inc/osx/vclnsapp.h @@ -23,6 +23,9 @@ #include <config_features.h> #include "premac.h" +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include "Cocoa/Cocoa.h" #include "postmac.h" diff --git a/vcl/inc/quartz/utils.h b/vcl/inc/quartz/utils.h index e408250..ac264ec 100644 --- a/vcl/inc/quartz/utils.h +++ b/vcl/inc/quartz/utils.h @@ -23,6 +23,9 @@ #include <iostream> #include <premac.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <CoreFoundation/CoreFoundation.h> #include <Foundation/Foundation.h> #ifdef MACOSX diff --git a/vcl/osx/DataFlavorMapping.cxx b/vcl/osx/DataFlavorMapping.cxx index 26e8885..e921c96 100644 --- a/vcl/osx/DataFlavorMapping.cxx +++ b/vcl/osx/DataFlavorMapping.cxx @@ -36,6 +36,9 @@ #include <string.h> #include <premac.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Cocoa/Cocoa.h> #include <postmac.h> diff --git a/vcl/osx/DataFlavorMapping.hxx b/vcl/osx/DataFlavorMapping.hxx index a3cff1c..31f4eb5 100644 --- a/vcl/osx/DataFlavorMapping.hxx +++ b/vcl/osx/DataFlavorMapping.hxx @@ -26,6 +26,9 @@ #include <com/sun/star/lang/XMultiComponentFactory.hpp> #include <premac.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #import <Cocoa/Cocoa.h> #include <postmac.h> diff --git a/vcl/osx/DragActionConversion.hxx b/vcl/osx/DragActionConversion.hxx index fbb5ea3..b77047d 100644 --- a/vcl/osx/DragActionConversion.hxx +++ b/vcl/osx/DragActionConversion.hxx @@ -23,6 +23,9 @@ #include <sal/types.h> #include <premac.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #import <Cocoa/Cocoa.h> #include <postmac.h> diff --git a/vcl/osx/DragSource.hxx b/vcl/osx/DragSource.hxx index 491716d..403ed51 100644 --- a/vcl/osx/DragSource.hxx +++ b/vcl/osx/DragSource.hxx @@ -33,6 +33,9 @@ #include <boost/utility.hpp> #include <premac.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #import <Cocoa/Cocoa.h> #include <postmac.h> diff --git a/vcl/osx/PictToBmpFlt.cxx b/vcl/osx/PictToBmpFlt.cxx index 77c67a6..097050e 100644 --- a/vcl/osx/PictToBmpFlt.cxx +++ b/vcl/osx/PictToBmpFlt.cxx @@ -18,6 +18,9 @@ */ #include <premac.h> +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Carbon/Carbon.h> #include <QuickTime/QuickTime.h> #include <postmac.h> diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx index a472253..929179f 100644 --- a/vcl/osx/salframe.cxx +++ b/vcl/osx/salframe.cxx @@ -45,6 +45,9 @@ #include "salwtype.hxx" #include "premac.h" +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <objc/objc-runtime.h> // needed for theming // FIXME: move theming code to salnativewidgets.cxx commit 12a5e4e91b937eda4281cfeb586119026a8f7213 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Wed Oct 8 10:38:28 2014 -0400 Use GNU objc ABI/runtime instead of NeXT ABI/runtime when compiler is GCC also, + fix "cannot find interface declaration for NXConstantString" + sal/osl/unx/system.h: include <objc/objc-api.h> when OBJC_EXPORT is not defined Change-Id: I5f0df322435be8244d372642dee1c21d783306f1 diff --git a/sal/osl/unx/system.hxx b/sal/osl/unx/system.hxx index 3013e91..56eeb03 100644 --- a/sal/osl/unx/system.hxx +++ b/sal/osl/unx/system.hxx @@ -215,6 +215,9 @@ #ifdef MACOSX #define __OPENTRANSPORTPROVIDERS__ // these are already defined #define TimeValue CFTimeValue // Do not conflict with TimeValue in sal/inc/osl/time.h +#ifndef OBJC_EXPORT +#include <objc/objc-api.h> +#endif #include <Carbon/Carbon.h> #undef TimeValue # ifndef ETIME diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk index 53e0a6c..36fab9e 100644 --- a/solenv/gbuild/platform/macosx.mk +++ b/solenv/gbuild/platform/macosx.mk @@ -58,9 +58,21 @@ gb_CXXFLAGS := \ # these are to get g++ to switch to Objective-C++ mode # (see toolkit module for a case where it is necessary to do it this way) -gb_OBJCXXFLAGS := -x objective-c++ -fobjc-exceptions - -gb_OBJCFLAGS := -x objective-c -fobjc-exceptions +gb_OBJCXXFLAGS := \ + -x objective-c++ \ + -fobjc-exceptions \ + $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),,\ + -fgnu-runtime \ + -fconstant-string-class=NSConstantString \ + ) + +gb_OBJCFLAGS := \ + -x objective-c \ + -fobjc-exceptions \ + $(if $(filter TRUE,$(COM_GCC_IS_CLANG)),,\ + -fgnu-runtime \ + -fconstant-string-class=NSConstantString \ + ) # LinkTarget class commit 6bf43b300577a0d1adbf682b7dd962a33e69c9f3 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Tue Nov 4 12:21:54 2014 -0500 sd/source/ui/remotecontrol: there're not only OS X >=10.8 related commit: 8bfc9a20ccea2689fec1ffe0654db1f95179bd4f Change-Id: I9862aecc02a9cfb8f4db97159f1bd4560eff1cef diff --git a/sd/source/ui/remotecontrol/BluetoothServer.cxx b/sd/source/ui/remotecontrol/BluetoothServer.cxx index e04392d..a07df2f 100644 --- a/sd/source/ui/remotecontrol/BluetoothServer.cxx +++ b/sd/source/ui/remotecontrol/BluetoothServer.cxx @@ -42,7 +42,7 @@ #ifdef MACOSX #include <osl/conditn.hxx> #include <premac.h> - #if MACOSX_SDK_VERSION == 1080 + #if MACOSX_SDK_VERSION >= 1070 #import <IOBluetooth/IOBluetooth.h> #else #import <CoreFoundation/CoreFoundation.h> commit 5d146f98b035cff3031b42eb419e1fad306fbb14 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Fri Oct 31 13:40:18 2014 -0400 vlc: use OpenGL "2.1 legacy context" for OS X versions < 10.7 ``With Mac OS X 10.7 Lion OpenGL 3.2 support was added. Till then only OpenGL 2.1 was available.'' related commit: 8b384c946cb6725d691123152f5e7c6ac0692185 diff --git a/vcl/osx/salinst.cxx b/vcl/osx/salinst.cxx index 7c1a896..63f27a3d 100644 --- a/vcl/osx/salinst.cxx +++ b/vcl/osx/salinst.cxx @@ -762,7 +762,13 @@ SalObject* AquaSalInstance::CreateObject( SalFrame* pParent, SystemWindowData* p AquaSalObject *pObject = NULL; if ( pParent ) + { +#if defined(MACOSX) && MACOSX_SDK_VERSION < 1070 + if (pWindowData && pWindowData->bOpenGL) + pWindowData->bLegacy = true; +#endif pObject = new AquaSalObject( static_cast<AquaSalFrame*>(pParent), pWindowData ); + } return pObject; } diff --git a/vcl/osx/salobj.cxx b/vcl/osx/salobj.cxx index 58e2c64..4657d52 100644 --- a/vcl/osx/salobj.cxx +++ b/vcl/osx/salobj.cxx @@ -66,6 +66,7 @@ AquaSalObject::AquaSalObject( AquaSalFrame* pFrame, SystemWindowData* pWindowDat }; pixFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:aAttributes]; } +#if defined(MACOSX) && MACOSX_SDK_VERSION >= 1070 else { NSOpenGLPixelFormatAttribute aAttributes[] = @@ -81,6 +82,7 @@ AquaSalObject::AquaSalObject( AquaSalFrame* pFrame, SystemWindowData* pWindowDat }; pixFormat = [[NSOpenGLPixelFormat alloc] initWithAttributes:aAttributes]; } +#endif maSysData.mpNSView = [[NSOpenGLView alloc] initWithFrame: aInitFrame pixelFormat:pixFormat]; } diff --git a/vcl/source/opengl/OpenGLContext.cxx b/vcl/source/opengl/OpenGLContext.cxx index 138a79e..ccccbd7 100644 --- a/vcl/source/opengl/OpenGLContext.cxx +++ b/vcl/source/opengl/OpenGLContext.cxx @@ -56,7 +56,11 @@ OpenGLContext::OpenGLContext(): m_pChildWindow(NULL), mbInitialized(false), mnRefCount(1), +#if defined(MACOSX) && MACOSX_SDK_VERSION < 1070 + mbRequestLegacyContext(true), +#else mbRequestLegacyContext(false), +#endif mbUseDoubleBufferedRendering(true), mbRequestVirtualDevice(false), mnFramebufferCount(0), @@ -1018,7 +1022,11 @@ bool OpenGLContext::initWindow() { if( !m_pChildWindow ) { - SystemWindowData winData = generateWinData(mpWindow, false); +#if defined(MACOSX) && MACOSX_SDK_VERSION < 1070 + SystemWindowData winData = generateWinData(mpWindow, /* bLegacy */ true); +#else + SystemWindowData winData = generateWinData(mpWindow, /* bLegacy */ false); +#endif m_pChildWindow = new SystemChildWindow(mpWindow, 0, &winData, false); m_pChildWindowGC.reset(m_pChildWindow); } commit 40c4f136135595ed0f5569eb9d2cde5d8153dd06 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Wed Dec 24 03:42:47 2014 -0500 don't add -fvisibility=hidden to gb_VISIBILITY_FLAGS Change-Id: I4353d36f4ab4941441e384aeac0ca7a3d2c9bdd8 diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk index 7acd068..9d78293 100644 --- a/solenv/gbuild/platform/com_GCC_defs.mk +++ b/solenv/gbuild/platform/com_GCC_defs.mk @@ -86,11 +86,8 @@ endif ifeq ($(HAVE_GCC_VISIBILITY_FEATURE),TRUE) +# note: don't add -fvisibility=hidden to flags gb_VISIBILITY_FLAGS := -DHAVE_GCC_VISIBILITY_FEATURE -# If CC or CXX already include -fvisibility=hidden, don't duplicate it -ifeq (,$(filter -fvisibility=hidden,$(CC))) -gb_VISIBILITY_FLAGS += -fvisibility=hidden -endif ifneq ($(HAVE_GCC_VISIBILITY_BROKEN),TRUE) gb_CXXFLAGS_COMMON += -fvisibility-inlines-hidden endif commit c240819af6da4c8c2a87854e7e02cc2a233aa31e Author: Douglas Mencken <dougmenc...@gmail.com> Date: Wed Dec 24 07:19:21 2014 -0500 add NS_BUILD_32_LIKE_64 definition to build line flags (gb_OSDEFS) For example, it makes NSRect to be the same as CGRect. (see NSGeometry.h) Change-Id: I182703b3ab5e0791c0a092f51a0151d1dfa8fe6a diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk index 31bc6f8..53e0a6c 100644 --- a/solenv/gbuild/platform/macosx.mk +++ b/solenv/gbuild/platform/macosx.mk @@ -35,6 +35,7 @@ gb_OSDEFS := \ -D_REENTRANT \ -DNO_PTHREAD_PRIORITY \ -DMACOSX_SDK_VERSION=$(MACOSX_SDK_VERSION) \ + -DNS_BUILD_32_LIKE_64 \ $(EXTRA_CDEFS) \ commit e70dbdf751c2761c8254629ec828aa9b3a30b1fd Author: Douglas Mencken <dougmenc...@gmail.com> Date: Sat Oct 25 11:05:30 2014 -0400 Don't assume that /usr/bin/mktemp is always a BSD mktemp on OSX, add backup for GNU mktemp Change-Id: Ifb119dd13062593cba5aa3cb1dacc54194339544 diff --git a/solenv/gbuild/platform/macosx.mk b/solenv/gbuild/platform/macosx.mk index 6a981d3..31bc6f8 100644 --- a/solenv/gbuild/platform/macosx.mk +++ b/solenv/gbuild/platform/macosx.mk @@ -24,8 +24,8 @@ gb_SDKDIR := $(MACOSX_SDK_PATH) include $(GBUILDDIR)/platform/com_GCC_defs.mk -# Darwin mktemp -t expects a prefix, not a pattern -gb_MKTEMP ?= /usr/bin/mktemp -t gbuild. +# Note that BSD mktemp -t expects a prefix, not a pattern; if it fails, assume GNU syntax +gb_MKTEMP ?= /usr/bin/mktemp -t gbuild. 2>/dev/null || mktemp -t gbuild.XXXXXX gb_OSDEFS := \ -D$(OS) \ commit 5709e01f9f5f5482384b6461ffefa994640f4617 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Sun Nov 2 12:39:47 2014 -0500 provide universal implementation for aligned memory allocation use posix_memalign only if it's available; if not, try memalign first don't blindly guess their availability by platform (with an exception for Android) introduce HAVE_MEMALIGN and HAVE_POSIX_MEMALIGN Note that posix_memalign is not available everywhere (as are its replacements like memalign). For example, Darwin/OSX < 10.6 has neither posix_memalign or memalign. Change-Id: I0cb3b14e1f2d94d4aa02b40c36d353c2b7a78dba diff --git a/config_host.mk.in b/config_host.mk.in index ae4bb8d..7cf133d 100644 --- a/config_host.mk.in +++ b/config_host.mk.in @@ -256,6 +256,8 @@ export HAVE_LD_BSYMBOLIC_FUNCTIONS=@HAVE_LD_BSYMBOLIC_FUNCTIONS@ export HAVE_LD_HASH_STYLE=@HAVE_LD_HASH_STYLE@ export HAVE_NON_CONST_NPP_GETMIMEDESCRIPTION=@HAVE_NON_CONST_NPP_GETMIMEDESCRIPTION@ export HAVE_POSIX_FALLOCATE=@HAVE_POSIX_FALLOCATE@ +export HAVE_POSIX_MEMALIGN=@HAVE_POSIX_MEMALIGN@ +export HAVE_MEMALIGN=@HAVE_MEMALIGN@ export HAVE_THREADSAFE_STATICS=@HAVE_THREADSAFE_STATICS@ export HELP_COMMON_ONLY=@HELP_COMMON_ONLY@ export HOST_PLATFORM=@host@ diff --git a/configure.ac b/configure.ac index 2f60224..794dfce 100644 --- a/configure.ac +++ b/configure.ac @@ -4511,6 +4511,14 @@ AC_SUBST(SDKDIRNAME_FOR_BUILD) AC_SUBST(WORKDIR_FOR_BUILD) dnl =================================================================== +dnl Check for availability of posix_memalign and memalign +dnl =================================================================== +AC_CHECK_FUNC([posix_memalign], [HAVE_POSIX_MEMALIGN=YES], [HAVE_POSIX_MEMALIGN=NO]) +AC_CHECK_FUNC([memalign], [HAVE_MEMALIGN=YES], [HAVE_MEMALIGN=NO]) +AC_SUBST(HAVE_POSIX_MEMALIGN) +AC_SUBST(HAVE_MEMALIGN) + +dnl =================================================================== dnl Check for syslog header dnl =================================================================== AC_CHECK_HEADER(syslog.h, AC_DEFINE(HAVE_SYSLOG_H)) diff --git a/sal/Library_sal.mk b/sal/Library_sal.mk index 833ba6d..175587c 100644 --- a/sal/Library_sal.mk +++ b/sal/Library_sal.mk @@ -19,6 +19,13 @@ $(eval $(call gb_Library_set_include,sal,\ -I$(SRCDIR)/sal/inc \ )) +ifeq ($(HAVE_POSIX_MEMALIGN),YES) +$(eval $(call gb_Library_add_defs,sal,-DHAVE_POSIX_MEMALIGN)) +endif +ifeq ($(HAVE_MEMALIGN),YES) +$(eval $(call gb_Library_add_defs,sal,-DHAVE_MEMALIGN)) +endif + $(eval $(call gb_Library_add_defs,sal,\ $(if $(filter $(ALLOC),SYS_ALLOC TCMALLOC JEMALLOC)$(filter-out X$(ENABLE_RUNTIME_OPTIMIZATIONS),XTRUE), \ -DFORCE_SYSALLOC \ diff --git a/sal/osl/unx/memory.cxx b/sal/osl/unx/memory.cxx index e9fb9a8..4d60581 100644 --- a/sal/osl/unx/memory.cxx +++ b/sal/osl/unx/memory.cxx @@ -10,8 +10,12 @@ #include <internal/oslmemory.h> #include <stdlib.h> + #ifdef __ANDROID__ #include <malloc.h> +#ifndef HAVE_MEMALIGN +#define HAVE_MEMALIGN 1 /* for Android, we are really sure about memalign */ +#endif #endif void* osl_aligned_alloc( sal_Size align, sal_Size size ) @@ -22,19 +26,30 @@ void* osl_aligned_alloc( sal_Size align, sal_Size size ) } else { -#if defined __ANDROID__ - return memalign(align, size); -#else +#if defined(HAVE_POSIX_MEMALIGN) void* ptr; int err = posix_memalign(&ptr, align, size); return err ? NULL : ptr; +#elif defined(HAVE_MEMALIGN) + return memalign(align, size); +#else + void* ptr = malloc(size + (align - 1) + sizeof(void*)); + if (!ptr) return NULL; + char* aptr = ((char*)ptr) + sizeof(void*); + aptr += (align - ((size_t)aptr & (align - 1))) & (align - 1); + ((void**)aptr)[-1] = ptr; + return aptr; #endif } } void osl_aligned_free( void* p ) { +#if defined(HAVE_POSIX_MEMALIGN) || defined(HAVE_MEMALIGN) free(p); +#else + free(((void**)p)[-1]); +#endif } /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ commit a869dbf095fccd374a0a2af0597d9aaa9e2c1dca Author: Douglas Mencken <dougmenc...@gmail.com> Date: Sun Oct 5 18:02:00 2014 -0400 vcl: restore other bits of pre-10.8 conditional code related commits: 4fa8282816cb39692678e9da6b6693e821a3039b ec147012340219c8bb5eaf8fe3d41be7836bc261 16996c6b91b53e3c7d316296833bdb8a9cb60c22 Change-Id: Ie8962f8d26f163eed91fdf6b137b0d9830183dd2 diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx index bcb8c2b..a472253 100644 --- a/vcl/osx/salframe.cxx +++ b/vcl/osx/salframe.cxx @@ -1246,7 +1246,12 @@ void AquaSalFrame::UpdateSettings( AllSettings& rSettings ) getAppleScrollBarVariant(aStyleSettings); // set scrollbar size +#if MACOSX_SDK_VERSION >= 1070 aStyleSettings.SetScrollBarSize( static_cast<long int>([NSScroller scrollerWidthForControlSize:NSRegularControlSize scrollerStyle:NSScrollerStyleLegacy]) ); +#else + aStyleSettings.SetScrollBarSize( static_cast<long int>([NSScroller scrollerWidth]) ); +#endif + // images in menus false for MacOSX aStyleSettings.SetPreferredUseImagesInMenus( false ); aStyleSettings.SetHideDisabledMenuItems( true ); diff --git a/vcl/osx/salmenu.cxx b/vcl/osx/salmenu.cxx index 12451e7..b6c68ee 100644 --- a/vcl/osx/salmenu.cxx +++ b/vcl/osx/salmenu.cxx @@ -880,7 +880,12 @@ Rectangle AquaSalMenu::GetMenuBarButtonRectPixel( sal_uInt16 i_nItemId, SalFrame if( ! pNSWin ) return Rectangle(); +#if MACOSX_SDK_VERSION >= 1070 NSRect aRect = [pNSWin convertRectToScreen:[pNSWin frame]]; +#else + NSRect aRect = [pNSWin frame]; + aRect.origin = [pNSWin convertBaseToScreen: NSMakePoint( 0, 0 )]; +#endif // make coordinates relative to reference frame static_cast<AquaSalFrame*>(i_pReferenceFrame)->CocoaToVCL( aRect.origin ); diff --git a/vcl/quartz/CTRunData.hxx b/vcl/quartz/CTRunData.hxx index 40c2a0a..a0666e5 100644 --- a/vcl/quartz/CTRunData.hxx +++ b/vcl/quartz/CTRunData.hxx @@ -10,8 +10,20 @@ #define CTRunData_Included #include "premac.h" +#if defined(MACOSX) && MACOSX_SDK_VERSION < 1080 +#include <ApplicationServices/ApplicationServices.h> +#if MACOSX_SDK_VERSION < 1060 +// The following symbols are SPI (System Programming Interface) in 10.5 +extern "C" { + void CTRunGetAdvances(CTRunRef run, CFRange range, CGSize buffer[]); + const CGSize* CTRunGetAdvancesPtr(CTRunRef run); + extern const CFStringRef kCTTypesetterOptionForcedEmbeddingLevel; +} +#endif +#else #include <CoreGraphics/CoreGraphics.h> #include <CoreText/CoreText.h> +#endif #include "postmac.h" class CTRunData diff --git a/vcl/quartz/ctfonts.cxx b/vcl/quartz/ctfonts.cxx index 08cea49..93dbf37 100644 --- a/vcl/quartz/ctfonts.cxx +++ b/vcl/quartz/ctfonts.cxx @@ -248,7 +248,11 @@ int CoreTextFontData::GetFontTable( const char pTagName[5], unsigned char* pResu // get the raw table length CTFontDescriptorRef pFontDesc = reinterpret_cast<CTFontDescriptorRef>( GetFontId()); CTFontRef rCTFont = CTFontCreateWithFontDescriptor( pFontDesc, 0.0, NULL); +#if defined(MACOSX) && MACOSX_SDK_VERSION < 1080 + const uint32_t opts( kCTFontTableOptionExcludeSynthetic ); +#else const uint32_t opts( kCTFontTableOptionNoOptions ); +#endif CFDataRef pDataRef = CTFontCopyTable( rCTFont, nTagCode, opts); CFRelease( rCTFont); if( !pDataRef) commit 81da47e4b0ab0c6c97d3ebc47162ef73a6973eac Author: Douglas Mencken <dougmenc...@gmail.com> Date: Sat Oct 25 03:58:37 2014 -0400 resurrect conditional code for OSX SDKs < 10.8 from "mass purge" plus, use MACOSX_SDK_VERSION instead of "legacy" MAC_OS_X_VERSION_MAX_ALLOWED/MIN_REQUIRED reverted commits: b02e958fa0bf7d062a5b8aff03d22325e3068feb fe25090e992eefd0c43ca73b656632a650793b1a note: sal/osl/unx/memory.c posix_memalign issue will be addressed in another commit Modified: 23 files (19 from b02e958f + 6 from fe25090e - 1 common - 1 unx/memory.c) Change-Id: Ib6e63e664dc073a8d751306f613e8be4918c406a diff --git a/external/curl/ExternalProject_curl.mk b/external/curl/ExternalProject_curl.mk index 8f94771..d513bfd 100644 --- a/external/curl/ExternalProject_curl.mk +++ b/external/curl/ExternalProject_curl.mk @@ -45,7 +45,7 @@ $(call gb_ExternalProject_get_state_target,curl,build): $(if $(filter IOS MACOSX,$(OS)),,--with-nss$(if $(SYSTEM_NSS),,="$(call gb_UnpackedTarball_get_dir,nss)/dist/out")) \ $(if $(filter IOS,$(OS)),--with-darwinssl) \ $(if $(filter MACOSX,$(OS)),\ - --with-darwinssl) \ + $(if $(filter 1050,$(MACOSX_SDK_VERSION)),,--with-darwinssl)) \ --without-ssl \ --without-libidn --enable-ftp --enable-ipv6 --enable-http --disable-gopher \ --disable-file --disable-ldap --disable-telnet --disable-dict --without-libssh2 \ diff --git a/external/nss/ExternalPackage_nss.mk b/external/nss/ExternalPackage_nss.mk index c6d8953fd..986565e 100644 --- a/external/nss/ExternalPackage_nss.mk +++ b/external/nss/ExternalPackage_nss.mk @@ -26,6 +26,7 @@ $(eval $(call gb_ExternalPackage_add_files,nss,$(LIBO_LIB_FOLDER),\ dist/out/lib/libsmime3.dylib \ dist/out/lib/libsoftokn3.dylib \ dist/out/lib/libssl3.dylib \ + $(if $(filter 1050,$(MACOSX_SDK_VERSION)),dist/out/lib/libsqlite3.dylib) \ )) else ifeq ($(OS),WNT) $(eval $(call gb_ExternalPackage_add_files,nss,$(LIBO_LIB_FOLDER),\ diff --git a/external/nss/ExternalProject_nss.mk b/external/nss/ExternalProject_nss.mk index 17ea6f1..0706a39 100644 --- a/external/nss/ExternalProject_nss.mk +++ b/external/nss/ExternalProject_nss.mk @@ -65,7 +65,7 @@ $(call gb_ExternalProject_get_state_target,nss,build): $(call gb_ExternalProject $(if $(filter arm64,$(CC)),USE_64=1)) \ $(if $(filter MACOSX,$(OS)),\ $(if $(filter-out POWERPC,$(CPUNAME)),MACOS_SDK_DIR=$(MACOSX_SDK_PATH)) \ - NSS_USE_SYSTEM_SQLITE=1) \ + $(if $(filter-out 1050,$(MACOSX_SDK_VERSION)),NSS_USE_SYSTEM_SQLITE=1)) \ $(if $(filter SOLARIS,$(OS)),NS_USE_GCC=1) \ $(if $(CROSS_COMPILING),\ $(if $(filter MACOSXPOWERPC,$(OS)$(CPUNAME)),CPU_ARCH=ppc) \ diff --git a/external/python3/ExternalProject_python3.mk b/external/python3/ExternalProject_python3.mk index 045892e..54a9ad1 100644 --- a/external/python3/ExternalProject_python3.mk +++ b/external/python3/ExternalProject_python3.mk @@ -69,8 +69,8 @@ $(call gb_ExternalProject_get_state_target,python3,build) : $(if $(filter WNT-GCC,$(OS)-$(COM)),--with-threads ac_cv_printf_zd_format=no) \ $(if $(filter MACOSX,$(OS)), \ $(if $(filter INTEL,$(CPUNAME)),--enable-universalsdk=$(MACOSX_SDK_PATH) \ - --with-universal-archs=intel \ - ) \ + $(if $(filter 1050,$(MACOSX_SDK_VERSION)),--with-universal-archs=32-bit,--with-universal-archs=intel) \ + ) \ --enable-framework=/@__________________________________________________OOO --with-framework-name=LibreOfficePython, \ --enable-shared \ ) \ diff --git a/fpicker/source/aqua/FilterHelper.mm b/fpicker/source/aqua/FilterHelper.mm index cef9074..e078fb6 100644 --- a/fpicker/source/aqua/FilterHelper.mm +++ b/fpicker/source/aqua/FilterHelper.mm @@ -385,7 +385,11 @@ bool FilterHelper::filenameMatchesFilter(NSString* sFilename) } NSFileManager *manager = [NSFileManager defaultManager]; +#if MACOSX_SDK_VERSION < 1060 + NSDictionary* pAttribs = [manager fileAttributesAtPath: sFilename traverseLink: NO]; +#else NSDictionary* pAttribs = [manager attributesOfItemAtPath: sFilename error: nil]; +#endif if( pAttribs ) { NSObject* pType = [pAttribs objectForKey: NSFileType]; diff --git a/fpicker/source/aqua/NSURL_OOoAdditions.mm b/fpicker/source/aqua/NSURL_OOoAdditions.mm index 1fc59af..83dc0a3 100644 --- a/fpicker/source/aqua/NSURL_OOoAdditions.mm +++ b/fpicker/source/aqua/NSURL_OOoAdditions.mm @@ -83,6 +83,25 @@ NSString* resolveAlias( NSString* i_pSystemPath ) kCFURLPOSIXPathStyle, false); if( rUrl != NULL ) { +#if MACOSX_SDK_VERSION < 1060 + FSRef rFS; + if( CFURLGetFSRef( rUrl, &rFS ) ) + { + Boolean bIsFolder = false; + Boolean bAlias = false; + OSErr err = FSResolveAliasFile( &rFS, true, &bIsFolder, &bAlias); + if( (err == noErr) && bAlias ) + { + CFURLRef rResolvedUrl = CFURLCreateFromFSRef( kCFAllocatorDefault, &rFS ); + if( rResolvedUrl != NULL ) + { + pResolvedPath = (NSString*)CFURLCopyFileSystemPath( rResolvedUrl, kCFURLPOSIXPathStyle ); + CFRelease( rResolvedUrl ); + } + } + } + CFRelease( rUrl ); +#else CFErrorRef rError; CFDataRef rBookmark = CFURLCreateBookmarkDataFromFile( NULL, rUrl, &rError ); CFRelease( rUrl ); @@ -102,6 +121,7 @@ NSString* resolveAlias( NSString* i_pSystemPath ) CFRelease( rResolvedUrl ); } } +#endif } return pResolvedPath; diff --git a/fpicker/source/aqua/SalAquaFilePicker.mm b/fpicker/source/aqua/SalAquaFilePicker.mm index 11e5ee6..86d1da3 100644 --- a/fpicker/source/aqua/SalAquaFilePicker.mm +++ b/fpicker/source/aqua/SalAquaFilePicker.mm @@ -307,7 +307,7 @@ uno::Sequence<rtl::OUString> SAL_CALL SalAquaFilePicker::getFiles() throw( uno:: SolarMutexGuard aGuard; -#if HAVE_FEATURE_MACOSX_SANDBOX +#if MACOSX_SDK_VERSION >= 1070 && HAVE_FEATURE_MACOSX_SANDBOX static NSUserDefaults *userDefaults; static bool triedUserDefaults = false; @@ -341,7 +341,7 @@ uno::Sequence<rtl::OUString> SAL_CALL SalAquaFilePicker::getFiles() throw( uno:: { NSURL *url = [files objectAtIndex:nIndex]; -#if HAVE_FEATURE_MACOSX_SANDBOX +#if MACOSX_SDK_VERSION >= 1070 && HAVE_FEATURE_MACOSX_SANDBOX if (userDefaults != NULL && [url respondsToSelector:@selector(bookmarkDataWithOptions:includingResourceValuesForKeys:relativeToURL:error:)]) { @@ -769,7 +769,11 @@ void SalAquaFilePicker::updateSaveFileNameExtension() { rtl::OUString suffix = (*(aStringList.begin())).copy(1); NSString *requiredFileType = [NSString stringWithOUString:suffix]; +#if MACOSX_SDK_VERSION < 1060 + [m_pDialog setRequiredFileType:requiredFileType]; +#else [m_pDialog setAllowedFileTypes:[NSArray arrayWithObjects:requiredFileType, nil]]; +#endif OSL_TRACE("disallowing other file types"); [m_pDialog setAllowsOtherFileTypes:NO]; diff --git a/fpicker/source/aqua/SalAquaPicker.mm b/fpicker/source/aqua/SalAquaPicker.mm index 6fd4023..a929afc 100644 --- a/fpicker/source/aqua/SalAquaPicker.mm +++ b/fpicker/source/aqua/SalAquaPicker.mm @@ -164,6 +164,19 @@ int SalAquaPicker::run() int retVal = 0; +#if MACOSX_SDK_VERSION < 1060 + NSString *startDirectory; + if (m_sDisplayDirectory.getLength() > 0) { + NSString *temp = [NSString stringWithOUString:m_sDisplayDirectory]; + NSURL *url = [NSURL URLWithString:temp]; + startDirectory = [url path]; + + OSL_TRACE("start dir: %s", [startDirectory UTF8String]); + } + else { + startDirectory = NSHomeDirectory(); + } +#else NSURL *startDirectory; if (m_sDisplayDirectory.getLength() > 0) { NSString *temp = [NSString stringWithOUString:m_sDisplayDirectory]; @@ -174,17 +187,26 @@ int SalAquaPicker::run() else { startDirectory = [NSURL fileURLWithPath:NSHomeDirectory() isDirectory:YES]; } +#endif switch(m_nDialogType) { case NAVIGATIONSERVICES_DIRECTORY: case NAVIGATIONSERVICES_OPEN: +#if MACOSX_SDK_VERSION < 1060 + retVal = [(NSOpenPanel*)m_pDialog runModalForDirectory:startDirectory file:nil types:nil]; +#else [m_pDialog setDirectoryURL:startDirectory]; retVal = [(NSOpenPanel*)m_pDialog runModal]; +#endif break; case NAVIGATIONSERVICES_SAVE: +#if MACOSX_SDK_VERSION < 1060 + retVal = [m_pDialog runModalForDirectory:startDirectory file:[NSString stringWithOUString:((SalAquaFilePicker*)this)->getSaveFileName()]]; +#else [m_pDialog setDirectoryURL:startDirectory]; [m_pDialog setNameFieldStringValue:[NSString stringWithOUString:static_cast<SalAquaFilePicker*>(this)->getSaveFileName()]]; retVal = [m_pDialog runModal]; +#endif break; // [m_pDialog beginSheetForDirectory:startDirectory file:[m_pDialog saveFilename] modalForWindow:[NSApp keyWindow] modalDelegate:((SalAquaFilePicker*)this)->getDelegate() didEndSelector:@selector(savePanelDidEnd:returnCode:contextInfo:) contextInfo:nil]; default: @@ -192,10 +214,17 @@ int SalAquaPicker::run() } if (retVal == NSFileHandlingPanelOKButton) { +#if MACOSX_SDK_VERSION < 1060 + NSString* pDir = [m_pDialog directory]; + if (pDir) { + implsetDisplayDirectory([[NSURL fileURLWithPath:pDir] OUStringForInfo:FULLPATH]); + } +#else NSURL* pDir = [m_pDialog directoryURL]; if (pDir) { implsetDisplayDirectory([pDir OUStringForInfo:FULLPATH]); } +#endif } DBG_PRINT_EXIT(CLASS_NAME, __func__, retVal); diff --git a/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm b/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm index aa06d13..25f8f0d 100644 --- a/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm +++ b/lingucomponent/source/spellcheck/macosxspell/macspellimp.mm @@ -350,7 +350,11 @@ Reference< XSpellAlternatives > aLang = [aLang stringByAppendingString:aTaggedCountry]; } [macSpell setLanguage:aLang]; +#if MACOSX_SDK_VERSION < 1060 + NSArray *guesses = [macSpell guessesForWord:aNSStr]; +#else NSArray *guesses = [macSpell guessesForWordRange:NSMakeRange(0, [aNSStr length]) inString:aNSStr language:aLang inSpellDocumentWithTag:0]; +#endif count = [guesses count]; if (count) { diff --git a/sal/osl/unx/system.cxx b/sal/osl/unx/system.cxx index 3d0fb6a..7793c27 100644 --- a/sal/osl/unx/system.cxx +++ b/sal/osl/unx/system.cxx @@ -157,10 +157,17 @@ int macxp_resolveAlias(char *path, int buflen) (void) buflen; return 0; #else +#if MACOSX_SDK_VERSION < 1060 + FSRef aFSRef; + OSStatus nErr; + Boolean bFolder; + Boolean bAliased; +#else CFStringRef cfpath; CFURLRef cfurl; CFErrorRef cferror; CFDataRef cfbookmark; +#endif char *unprocessedPath = path; @@ -174,6 +181,49 @@ int macxp_resolveAlias(char *path, int buflen) if ( unprocessedPath ) *unprocessedPath = '\0'; +#if MACOSX_SDK_VERSION < 1060 + nErr = noErr; + bFolder = FALSE; + bAliased = FALSE; + + if ( FSPathMakeRef( (const UInt8 *)path, &aFSRef, 0 ) == noErr ) + { + nErr = FSResolveAliasFileWithMountFlags( &aFSRef, TRUE, &bFolder, &bAliased, kResolveAliasFileNoUI ); + if ( nErr == nsvErr ) + { + errno = ENOENT; + nRet = -1; + } + else if ( nErr == noErr && bAliased ) + { + char tmpPath[ PATH_MAX ]; + if ( FSRefMakePath( &aFSRef, (UInt8 *)tmpPath, PATH_MAX ) == noErr ) + { + int nLen = strlen( tmpPath ) + ( unprocessedPath ? strlen( unprocessedPath + 1 ) + 1 : 0 ); + if ( nLen < buflen && nLen < PATH_MAX ) + { + if ( unprocessedPath ) + { + int nTmpPathLen = strlen( tmpPath ); + strcat( tmpPath, "/" ); + strcat( tmpPath, unprocessedPath + 1 ); + strcpy( path, tmpPath); + unprocessedPath = path + nTmpPathLen; + } + else if ( !unprocessedPath ) + { + strcpy( path, tmpPath); + } + } + else + { + errno = ENAMETOOLONG; + nRet = -1; + } + } + } + } +#else cfpath = CFStringCreateWithCString( NULL, path, kCFStringEncodingUTF8 ); cfurl = CFURLCreateWithFileSystemPath( NULL, cfpath, kCFURLPOSIXPathStyle, false ); CFRelease( cfpath ); @@ -233,6 +283,7 @@ int macxp_resolveAlias(char *path, int buflen) } } } +#endif if ( unprocessedPath ) *unprocessedPath++ = '/'; diff --git a/sal/osl/unx/uunxapi.cxx b/sal/osl/unx/uunxapi.cxx index a984816..064000d 100644 --- a/sal/osl/unx/uunxapi.cxx +++ b/sal/osl/unx/uunxapi.cxx @@ -35,7 +35,7 @@ inline rtl::OString OUStringToOString(const rtl_uString* s) osl_getThreadTextEncoding()); } -#if HAVE_FEATURE_MACOSX_SANDBOX +#if defined(MACOSX) && MACOSX_SDK_VERSION >= 1070 && HAVE_FEATURE_MACOSX_SANDBOX #include <Foundation/Foundation.h> #include <Security/Security.h> @@ -289,7 +289,7 @@ int open_c(const char *cpPath, int oflag, int mode) int result = open(cpPath, oflag, mode); -#if HAVE_FEATURE_MACOSX_SANDBOX +#if defined(MACOSX) && MACOSX_SDK_VERSION >= 1070 && HAVE_FEATURE_MACOSX_SANDBOX if (isSandboxed && result != -1 && (oflag & O_CREAT) && (oflag & O_EXCL)) { // A new file was created. Check if it is outside the sandbox. diff --git a/vcl/inc/osx/salframe.h b/vcl/inc/osx/salframe.h index 7611b6d..47c1c91 100644 --- a/vcl/inc/osx/salframe.h +++ b/vcl/inc/osx/salframe.h @@ -93,7 +93,11 @@ public: sal_uLong mnICOptions; // To prevent display sleep during presentation +#if MACOSX_SDK_VERSION < 1060 + boost::shared_ptr< Timer > mpActivityTimer; +#else IOPMAssertionID mnAssertionID; +#endif public: /** Constructor diff --git a/vcl/inc/osx/salframeview.h b/vcl/inc/osx/salframeview.h index 93f8b8f..d125743 100644 --- a/vcl/inc/osx/salframeview.h +++ b/vcl/inc/osx/salframeview.h @@ -22,7 +22,11 @@ #include "osx/a11ywrapper.h" +#if MACOSX_SDK_VERSION < 1060 +@interface SalFrameWindow : NSWindow +#else @interface SalFrameWindow : NSWindow<NSWindowDelegate> +#endif { AquaSalFrame* mpFrame; id mDraggingDestinationHandler; @@ -59,7 +63,11 @@ -(void)unregisterDraggingDestinationHandler:(id)theHandler; @end +#if MACOSX_SDK_VERSION < 1060 +@interface SalFrameView : AquaA11yWrapper <NSTextInput> +#else @interface SalFrameView : AquaA11yWrapper <NSTextInputClient> +#endif { AquaSalFrame* mpFrame; @@ -113,7 +121,11 @@ /* text action methods */ +#if MACOSX_SDK_VERSION < 1060 +-(void)insertText:(id)aString; +#else -(void)insertText:(id)aString replacementRange:(NSRange)replacementRange; +#endif -(void)insertTab: (id)aSender; -(void)insertBacktab: (id)aSender; -(void)moveLeft: (id)aSender; diff --git a/vcl/inc/quartz/salgdi.h b/vcl/inc/quartz/salgdi.h index 2b7da0d..109aee9 100644 --- a/vcl/inc/quartz/salgdi.h +++ b/vcl/inc/quartz/salgdi.h @@ -29,6 +29,15 @@ #include <ApplicationServices/ApplicationServices.h> #include "osx/osxvcltypes.h" #include "osx/salframe.h" + +#if MACOSX_SDK_VERSION < 1060 +// The following symbols are SPI (System Programming Interface) in 10.5. +extern "C" { + void CTRunGetAdvances(CTRunRef run, CFRange range, CGSize buffer[]); + const CGSize* CTRunGetAdvancesPtr(CTRunRef run); + extern const CFStringRef kCTTypesetterOptionForcedEmbeddingLevel; +} +#endif #else #include <CoreGraphics/CoreGraphics.h> #include <CoreText/CoreText.h> diff --git a/vcl/osx/DropTarget.cxx b/vcl/osx/DropTarget.cxx index a6721a6..48dd337 100644 --- a/vcl/osx/DropTarget.cxx +++ b/vcl/osx/DropTarget.cxx @@ -264,9 +264,17 @@ NSDragOperation DropTarget::draggingUpdated(id sender) } if (dragOp == NSDragOperationNone) +#if MACOSX_SDK_VERSION < 1060 + SetThemeCursor(kThemeNotAllowedCursor); +#else [[NSCursor operationNotAllowedCursor] set]; +#endif else if (dragOp == NSDragOperationCopy) +#if MACOSX_SDK_VERSION < 1060 + SetThemeCursor(kThemeCopyArrowCursor); +#else [[NSCursor dragCopyCursor] set]; +#endif else [[NSCursor arrowCursor] set]; diff --git a/vcl/osx/salframe.cxx b/vcl/osx/salframe.cxx index 2dead37..bcb8c2b 100644 --- a/vcl/osx/salframe.cxx +++ b/vcl/osx/salframe.cxx @@ -37,6 +37,11 @@ #include "osx/a11yfactory.h" #include "quartz/utils.h" +#if MACOSX_SDK_VERSION < 1060 +#include "vcl/timer.hxx" +#include "osx/saltimer.h" +#endif + #include "salwtype.hxx" #include "premac.h" @@ -193,7 +198,11 @@ void AquaSalFrame::initWindowAndView() [mpNSWindow setAcceptsMouseMovedEvents: YES]; [mpNSWindow setHasShadow: YES]; +#if MACOSX_SDK_VERSION < 1060 + objc_msgSend(mpNSWindow, @selector(setDelegate:), mpNSWindow); +#else [mpNSWindow setDelegate: static_cast<id<NSWindowDelegate> >(mpNSWindow)]; +#endif if( [mpNSWindow respondsToSelector: @selector(setRestorable:)]) { @@ -750,6 +759,27 @@ void AquaSalFrame::ShowFullScreen( bool bFullScreen, sal_Int32 nDisplay ) SendPaintEvent(); } +#if MACOSX_SDK_VERSION < 1060 +class PreventSleepTimer : public AutoTimer +{ +public: + PreventSleepTimer() + { + SetTimeout( 30000 ); + Start(); + } + + virtual ~PreventSleepTimer() + { + } + + virtual void Timeout() SAL_OVERRIDE + { + UpdateSystemActivity(OverallAct); + } +}; +#endif + void AquaSalFrame::StartPresentation( bool bStart ) { if ( !mpNSWindow ) @@ -761,10 +791,14 @@ void AquaSalFrame::StartPresentation( bool bStart ) if( bStart ) { GetSalData()->maPresentationFrames.push_back( this ); +#if MACOSX_SDK_VERSION < 1060 + mpActivityTimer.reset( new PreventSleepTimer() ); +#else IOPMAssertionCreateWithName(kIOPMAssertionTypeNoDisplaySleep, kIOPMAssertionLevelOn, CFSTR("LibreOffice presentation running"), &mnAssertionID); +#endif [mpNSWindow setLevel: NSPopUpMenuWindowLevel]; if( mbShown ) [mpNSWindow makeMainWindow]; @@ -772,7 +806,11 @@ void AquaSalFrame::StartPresentation( bool bStart ) else { GetSalData()->maPresentationFrames.remove( this ); +#if MACOSX_SDK_VERSION < 1060 + mpActivityTimer.reset(); +#else IOPMAssertionRelease(mnAssertionID); +#endif [mpNSWindow setLevel: NSNormalWindowLevel]; } } diff --git a/vcl/osx/salframeview.mm b/vcl/osx/salframeview.mm index 248c8eb..27be98d 100644 --- a/vcl/osx/salframeview.mm +++ b/vcl/osx/salframeview.mm @@ -34,6 +34,14 @@ #define WHEEL_EVENT_FACTOR 1.5 +// for fullscreen support on OS X < 10.7 +#if MACOSX_SDK_VERSION < 1070 + #define NSWindowCollectionBehaviorFullScreenPrimary (1 << 7) + #define NSWindowCollectionBehaviorFullScreenAuxiliary (1 << 8) +// #define NSFullScreenWindowMask (1 << 14) +#endif + + static sal_uInt16 ImplGetModifierMask( unsigned int nMask ) { sal_uInt16 nRet = 0; @@ -158,6 +166,18 @@ static const struct ExceptionalKey static AquaSalFrame* getMouseContainerFrame() { AquaSalFrame* pDispatchFrame = NULL; +#if MACOSX_SDK_VERSION < 1060 + NSInteger nWindows = 0; + NSCountWindows( &nWindows ); + NSInteger* pWindows = (NSInteger*)alloca( nWindows * sizeof(NSInteger) ); + NSWindowList( nWindows, pWindows ); // NSWindowList is supposed to be in z-order front to back + for(int i = 0; i < nWindows && ! pDispatchFrame; i++ ) + { + NSWindow* pWin = [NSApp windowWithWindowNumber: pWindows[i]]; + if( pWin && [pWin isMemberOfClass: [SalFrameWindow class]] && [(SalFrameWindow*)pWin containsMouse] ) + pDispatchFrame = [(SalFrameWindow*)pWin getSalFrame]; + } +#else NSArray* aWindows = [NSWindow windowNumbersWithOptions:0]; for(NSUInteger i = 0; i < [aWindows count] && ! pDispatchFrame; i++ ) { @@ -165,6 +185,7 @@ static AquaSalFrame* getMouseContainerFrame() if( pWin && [pWin isMemberOfClass: [SalFrameWindow class]] && [(SalFrameWindow*)pWin containsMouse] ) pDispatchFrame = [(SalFrameWindow*)pWin getSalFrame]; } +#endif return pDispatchFrame; } @@ -755,11 +776,19 @@ private: if( bNewSeries ) mfMagnifyDeltaSum = 0.0; +#if MACOSX_SDK_VERSION < 1060 + mfMagnifyDeltaSum += [pEvent deltaZ]; +#else mfMagnifyDeltaSum += [pEvent magnification]; +#endif mfLastMagnifyTime = [pEvent timestamp]; // TODO: change to 0.1 when CommandWheelMode::ZOOM handlers allow finer zooming control +#if MACOSX_SDK_VERSION < 1060 + static const float fMagnifyFactor = 0.25; +#else static const float fMagnifyFactor = 0.25*500; // steps are 500 times smaller for -magnification +#endif static const float fMinMagnifyStep = 15.0 / fMagnifyFactor; if( fabs(mfMagnifyDeltaSum) <= fMinMagnifyStep ) return; @@ -1012,9 +1041,15 @@ private: } } +#if MACOSX_SDK_VERSION < 1060 +-(void)insertText:(id)aString +#else -(void)insertText:(id)aString replacementRange:(NSRange)replacementRange +#endif { +#if MACOSX_SDK_VERSION >= 1060 (void) replacementRange; // FIXME: surely it must be used +#endif YIELD_GUARD; @@ -1584,9 +1619,15 @@ private: return mSelectedRange; } +#if MACOSX_SDK_VERSION < 1060 +- (void)setMarkedText:(id)aString selectedRange:(NSRange)selRange +#else - (void)setMarkedText:(id)aString selectedRange:(NSRange)selRange replacementRange:(NSRange)replacementRange +#endif { +#if MACOSX_SDK_VERSION >= 1060 (void) replacementRange; // FIXME - use it! +#endif YIELD_GUARD; @@ -1656,10 +1697,16 @@ private: mSelectedRange = mMarkedRange = NSMakeRange(NSNotFound, 0); } +#if MACOSX_SDK_VERSION < 1060 +- (NSAttributedString *)attributedSubstringFromRange:(NSRange)aRange +#else - (NSAttributedString *)attributedSubstringForProposedRange:(NSRange)aRange actualRange:(NSRangePointer)actualRange +#endif { (void) aRange; +#if MACOSX_SDK_VERSION >= 1060 (void) actualRange; +#endif // FIXME - Implement return nil; @@ -1703,11 +1750,17 @@ private: mpLastEvent = nil; } +#if MACOSX_SDK_VERSION < 1060 +- (NSRect)firstRectForCharacterRange:(NSRange)aRange +#else - (NSRect)firstRectForCharacterRange:(NSRange)aRange actualRange:(NSRangePointer)actualRange +#endif { // FIXME - These should probably be used? (void) aRange; +#if MACOSX_SDK_VERSION >= 1060 (void) actualRange; +#endif YIELD_GUARD; diff --git a/vcl/osx/salinst.cxx b/vcl/osx/salinst.cxx index 9979842..7c1a896 100644 --- a/vcl/osx/salinst.cxx +++ b/vcl/osx/salinst.cxx @@ -1046,7 +1046,12 @@ NSImage* CreateNSImage( const Image& rImage ) NSImage* pImage = [[NSImage alloc] initWithSize: NSMakeSize( aSize.Width(), aSize.Height() )]; if( pImage ) { +#if MACOSX_SDK_VERSION < 1060 + [pImage setFlipped:YES]; + [pImage lockFocus]; +#else [pImage lockFocusFlipped:YES]; +#endif NSGraphicsContext* pContext = [NSGraphicsContext currentContext]; CGContextRef rCGContext = reinterpret_cast<CGContextRef>([pContext graphicsPort]); diff --git a/vcl/osx/salmenu.cxx b/vcl/osx/salmenu.cxx index 6d2c6d8..12451e7 100644 --- a/vcl/osx/salmenu.cxx +++ b/vcl/osx/salmenu.cxx @@ -246,7 +246,11 @@ AquaSalMenu::AquaSalMenu( bool bMenuBar ) : if( ! mbMenuBar ) { mpMenu = [[SalNSMenu alloc] initWithMenu: this]; +#if MACOSX_SDK_VERSION < 1060 + objc_msgSend(mpMenu, @selector(setDelegate:), mpMenu); +#else [mpMenu setDelegate: (id<NSMenuDelegate>)mpMenu]; +#endif } else { diff --git a/vcl/osx/salprn.cxx b/vcl/osx/salprn.cxx index f8fe422..3d7f2d2 100644 --- a/vcl/osx/salprn.cxx +++ b/vcl/osx/salprn.cxx @@ -462,7 +462,11 @@ bool AquaSalInfoPrinter::StartJob( const OUString* i_pFileName, { [mpPrintInfo setJobDisposition: NSPrintSaveJob]; NSString* pPath = CreateNSString( *i_pFileName ); +#if MACOSX_SDK_VERSION < 1060 + [pPrintDict setObject:[NSURL fileURLWithPath:pPath] forKey:NSPrintSavePath]; +#else [pPrintDict setObject:[NSURL fileURLWithPath:pPath] forKey:NSPrintJobSavingURL]; +#endif [pPath release]; } diff --git a/vcl/quartz/ctfonts.cxx b/vcl/quartz/ctfonts.cxx index 80253ab..08cea49 100644 --- a/vcl/quartz/ctfonts.cxx +++ b/vcl/quartz/ctfonts.cxx @@ -82,9 +82,13 @@ CoreTextStyle::CoreTextStyle( const FontSelectPattern& rFSD ) ((mpFontData->GetWeight() < WEIGHT_SEMIBOLD) && (mpFontData->GetWeight() != WEIGHT_DONTKNOW)) ) { +#if MACOSX_SDK_VERSION >= 1060 int nStroke = -10.0; CFNumberRef rStroke = CFNumberCreate(NULL, kCFNumberSInt32Type, &nStroke); CFDictionarySetValue(mpStyleDict, kCTStrokeWidthAttributeName, rStroke); +#else /* kCTStrokeWidthAttributeName is not available */ + /* do we really need "fake" bold? */ +#endif } // fake italic @@ -314,8 +318,10 @@ ImplDevFontAttributes DevFontFromCTFontDescriptor( CTFontDescriptorRef pFD, bool // get font-enabled status if( bFontEnabled ) { int bEnabled = TRUE; // by default (and when we're on OS X < 10.6) it's "enabled" +#if MACOSX_SDK_VERSION >= 1060 CFNumberRef pEnabled = (CFNumberRef)CTFontDescriptorCopyAttribute( pFD, kCTFontEnabledAttribute ); CFNumberGetValue( pEnabled, kCFNumberIntType, &bEnabled ); +#endif *bFontEnabled = bEnabled; } diff --git a/vcl/quartz/ctlayout.cxx b/vcl/quartz/ctlayout.cxx index fe294cb..af545f4 100644 --- a/vcl/quartz/ctlayout.cxx +++ b/vcl/quartz/ctlayout.cxx @@ -251,6 +251,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs ) // - CoreText handles spaces specially (in particular at the text end) if( mnTrailingSpaceCount ) { +#if MACOSX_SDK_VERSION < 1070 + // don't recreate line layout here, because this can lead to problems + // (looks like internal issues inside early CoreText versions) + mfTrailingSpaceWidth = CTLineGetTrailingWhitespaceWidth( mpCTLine ); +#else if(mfTrailingSpaceWidth <= 0.0) { mfTrailingSpaceWidth = CTLineGetTrailingWhitespaceWidth( mpCTLine ); @@ -275,7 +280,7 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs ) SAL_INFO( "vcl.ct", "CTLineCreateWithAttributedString(\"" << GetOUString(aCFText) << "\") = " << mpCTLine ); CFRelease( pAttrStr ); CFRelease( aCFText ); - +#endif // in RTL-layouts trailing spaces are leftmost // TODO: use BiDi-algorithm to thoroughly check this assumption if( rArgs.mnFlags & SAL_LAYOUT_BIDI_RTL) @@ -283,9 +288,12 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs ) mfBaseAdv = mfTrailingSpaceWidth; } } +#if MACOSX_SDK_VERSION < 1070 + CTLineRef pNewCTLine = CTLineCreateJustifiedLine( mpCTLine, 1.0, nPixelWidth - mfTrailingSpaceWidth ); +#else CTLineRef pNewCTLine = CTLineCreateJustifiedLine( mpCTLine, 1.0, nPixelWidth); SAL_INFO( "vcl.ct", "CTLineCreateJustifiedLine(" << mpCTLine << ",1.0," << nPixelWidth << ") = " << pNewCTLine ); - +#endif if( !pNewCTLine ) { // CTLineCreateJustifiedLine can and does fail @@ -299,7 +307,11 @@ void CTLayout::AdjustLayout( ImplLayoutArgs& rArgs ) SAL_INFO( "vcl.ct", "CFRelease(" << mpCTLine << ")" ); CFRelease( mpCTLine ); mpCTLine = pNewCTLine; +#if MACOSX_SDK_VERSION < 1070 + mfCachedWidth = nPixelWidth; +#else mfCachedWidth = nPixelWidth + mfTrailingSpaceWidth; +#endif } } @@ -354,9 +366,13 @@ bool CTLayout::DrawTextSpecial( SalGraphics& rGraphics, sal_uInt32 flags ) const CFDictionaryGetCount(mpTextStyle->GetStyleDict()), mpTextStyle->GetStyleDict()); +#if MACOSX_SDK_VERSION < 1060 + /* just don't do 'kCTStrokeWidthAttributeName' */ +#else int nStroke = 2; CFNumberRef rStroke = CFNumberCreate(NULL, kCFNumberSInt32Type, &nStroke); CFDictionarySetValue(styledict, kCTStrokeWidthAttributeName, rStroke); +#endif CFAttributedStringRef pAttrStr = CFAttributedStringCreate( NULL, diff --git a/vcl/quartz/salgdi.cxx b/vcl/quartz/salgdi.cxx index 2cb8271..5c2c374 100644 --- a/vcl/quartz/salgdi.cxx +++ b/vcl/quartz/salgdi.cxx @@ -327,12 +327,28 @@ static bool AddTempDevFont(const OUString& rFontFileURL) bool success = false; +#if MACOSX_SDK_VERSION >= 1060 CFErrorRef error; success = CTFontManagerRegisterFontsForURL(rFontURL, kCTFontManagerScopeProcess, &error); if (!success) { CFRelease(error); } +#else /* CTFontManagerRegisterFontsForURL is not available on OS X <10.6 */ + CGDataProviderRef dataProvider = CGDataProviderCreateWithURL(rFontURL); + CGFontRef graphicsFont = CGFontCreateWithDataProvider(dataProvider); + if (graphicsFont) + { + CTFontRef coreTextFont = CTFontCreateWithGraphicsFont(graphicsFont, /*fontSize*/ 0, /*matrix*/ NULL, /*attributes*/ NULL); + if (coreTextFont) + { + success = true; + CFRelease(coreTextFont); + } + CGFontRelease(graphicsFont); + } + CGDataProviderRelease(dataProvider); +#endif return success; } commit b34791e293a9b82491cc299b42c981f5fc79208a Author: Douglas Mencken <dougmenc...@gmail.com> Date: Sun Oct 5 08:11:22 2014 -0400 avmediaMacAVF is not available on OS X 10.5/10.6 related commits: 4fa8282816cb39692678e9da6b6693e821a3039b d4759066933e87f6b56dde40e9e4c224bc1f723f Change-Id: Ice433ac738096c4142cc78ce793f2b2f1e2a1708 diff --git a/Repository.mk b/Repository.mk index 8b4e62e..9e101bb 100644 --- a/Repository.mk +++ b/Repository.mk @@ -298,7 +298,7 @@ $(eval $(call gb_Helper_register_libraries_for_install,OOOLIBS,ooo, \ acc \ $(call gb_Helper_optional,AVMEDIA,avmedia) \ $(if $(filter MACOSX,$(OS)),\ - avmediaMacAVF \ + $(if $(filter-out 1050 1060,$(MACOSX_SDK_VERSION)),avmediaMacAVF) \ $(if $(ENABLE_MACOSX_SANDBOX),,avmediaQuickTime) \ ) \ $(call gb_Helper_optional,SCRIPTING, \ diff --git a/avmedia/Module_avmedia.mk b/avmedia/Module_avmedia.mk index 06af36f..27b588d 100644 --- a/avmedia/Module_avmedia.mk +++ b/avmedia/Module_avmedia.mk @@ -44,10 +44,14 @@ endif endif ifeq ($(OS),MACOSX) +ifneq (1050,$(MACOSX_SDK_VERSION)) +ifneq (1060,$(MACOSX_SDK_VERSION)) $(eval $(call gb_Module_add_targets,avmedia,\ Library_avmediaMacAVF \ )) endif +endif +endif ifneq ($(ENABLE_DIRECTX),) $(eval $(call gb_Module_add_targets,avmedia,\ diff --git a/postprocess/Rdb_services.mk b/postprocess/Rdb_services.mk index affb629..adaef73 100644 --- a/postprocess/Rdb_services.mk +++ b/postprocess/Rdb_services.mk @@ -124,7 +124,9 @@ $(eval $(call gb_Rdb_add_components,services,\ writerperfect/source/writer/wpftwriter \ writerperfect/source/calc/wpftcalc \ $(if $(filter MACOSX,$(OS)), \ - $(call gb_Helper_optional,AVMEDIA,avmedia/source/macavf/avmediaMacAVF) \ + $(if $(filter 1050 1060,$(MACOSX_SDK_VERSION)),, \ + $(call gb_Helper_optional,AVMEDIA,avmedia/source/macavf/avmediaMacAVF) \ + ) \ $(if $(filter TRUE,$(ENABLE_MACOSX_SANDBOX)),, \ $(call gb_Helper_optional,AVMEDIA,avmedia/source/quicktime/avmediaQuickTime) \ ) \ commit 40f60f6e7bf84f3ac4bf4e615f2bea53f40d4216 Author: Douglas Mencken <dougmenc...@gmail.com> Date: Thu Dec 25 00:39:19 2014 -0500 cpp_uno: OSL_ASSERT -> assert; OSL_ENSURE -> assert Change-Id: I24a46b5603a933930c1578ec25b1905e2d216249 diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx index 0cba20d..81bae49f 100644 --- a/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx +++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx @@ -82,7 +82,7 @@ static typelib_TypeClass cpp2uno_call( ng++; // stack space - OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" ); + assert( sizeof(void *) == sizeof(sal_Int32) && "### unexpected size!" ); // parameters void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams ); void ** pCppArgs = pUnoArgs + nParams; @@ -332,7 +332,7 @@ static typelib_TypeClass cpp_mediate( void ** gpreg, void ** fpreg, void ** ovrflw, sal_Int64 * pRegisterReturn /* space for register return */ ) { - OSL_ENSURE( sizeof(sal_Int32)==sizeof(void *), "### unexpected!" ); + assert( sizeof(sal_Int32)==sizeof(void *) && "### unexpected!" ); // gpreg: [ret *], this, [other gpr params] // fpreg: [fpr params] @@ -356,7 +356,7 @@ static typelib_TypeClass cpp_mediate( typelib_InterfaceTypeDescription * pTypeDescr = pCppI->getTypeDescr(); - OSL_ENSURE( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex, "### illegal vtable index!" ); + assert( nFunctionIndex < pTypeDescr->nMapFunctionIndexToMemberIndex && "### illegal vtable index!" ); if (nFunctionIndex >= pTypeDescr->nMapFunctionIndexToMemberIndex) { throw RuntimeException( "illegal vtable index!", (XInterface *)pThis ); @@ -364,7 +364,7 @@ static typelib_TypeClass cpp_mediate( // determine called method sal_Int32 nMemberPos = pTypeDescr->pMapFunctionIndexToMemberIndex[nFunctionIndex]; - OSL_ENSURE( nMemberPos < pTypeDescr->nAllMembers, "### illegal member index!" ); + assert( nMemberPos < pTypeDescr->nAllMembers && "### illegal member index!" ); TypeDescription aMemberDescr( pTypeDescr->ppAllMembers[nMemberPos] ); @@ -537,8 +537,8 @@ unsigned char * codeSnippet( unsigned char * code, sal_Int32 functionIndex, sal unsigned long * p = (unsigned long *) code; - // OSL_ASSERT( sizeof (long) == 4 ); - OSL_ASSERT((((unsigned long)code) & 0x3) == 0 ); //aligned to 4 otherwise a mistake + // assert( sizeof (long) == 4 ); + assert((((unsigned long)code) & 0x3) == 0 ); //aligned to 4 otherwise a mistake /* generate this code */ // # so first save gpr 3 to gpr 10 (aligned to 4) @@ -688,7 +688,7 @@ unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( for (sal_Int32 i = 0; i < type->nMembers; ++i) { typelib_TypeDescription * member = 0; TYPELIB_DANGER_GET(&member, type->ppMembers[i]); - OSL_ASSERT(member != 0); + assert(member != 0); switch (member->eTypeClass) { case typelib_TypeClass_INTERFACE_ATTRIBUTE: // Getter: @@ -721,7 +721,7 @@ unsigned char * bridges::cpp_uno::shared::VtableFactory::addLocalFunctions( break; default: - OSL_ASSERT(false); + assert(false); break; } TYPELIB_DANGER_RELEASE(member); diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx b/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx index 10fd194..55a7172 100644 --- a/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx +++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/uno2cpp.cxx @@ -320,7 +320,7 @@ static void cpp_call( // return typelib_TypeDescription * pReturnTypeDescr = 0; TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); - // OSL_ENSURE( pReturnTypeDescr, "### expected return type description!" ); + // assert( pReturnTypeDescr && "### expected return type description!" ); void * pCppReturn = 0; // if != 0 && != pUnoReturn, needs reconversion @@ -347,7 +347,7 @@ static void cpp_call( *pPT++ = 'I'; // stack space - // OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" ); + // assert( sizeof(void *) == sizeof(sal_Int32) && "### unexpected size!" ); // args void ** pCppArgs = (void **)alloca( 3 * sizeof(void *) * nParams ); // indices of values this have to be converted (interface conversion cpp<=>uno) @@ -455,7 +455,7 @@ static void cpp_call( try { - OSL_ENSURE( !( (pCppStack - pCppStackStart ) & 3), "UNALIGNED STACK !!! (Please DO panic)" ); + assert( !( (pCppStack - pCppStackStart ) & 3) && "UNALIGNED STACK !!! (Please DO panic)" ); callVirtualMethod( pAdjustedThisPtr, aVtableSlot.index, pCppReturn, pReturnTypeDescr->eTypeClass, pParamType, commit 2e673abebf3da5cb9019208d502c59342ef9339b Author: Douglas Mencken <dougmenc...@gmail.com> Date: Sun Oct 5 07:40:55 2014 -0400 Revert "PPC Mac support can go away now (again)" This reverts commit e29862bcc509916e7fe3e9b2f43b0672c49b7f6e. Change-Id: Ie6f7b94c2760b34f2b9e3ef7e619905ccb26892e diff --git a/bridges/Library_cpp_uno.mk b/bridges/Library_cpp_uno.mk index 5d9454c..09de8e6 100644 --- a/bridges/Library_cpp_uno.mk +++ b/bridges/Library_cpp_uno.mk @@ -150,6 +150,12 @@ bridge_noncallexception_noopt_objects := callvirtualmethod bridge_exception_objects := abi cpp2uno except uno2cpp endif +else ifeq ($(OS)-$(CPUNAME),MACOSX-POWERPC) + +bridges_SELECTED_BRIDGE := gcc3_macosx_powerpc +bridge_noopt_objects := uno2cpp +bridge_exception_objects := cpp2uno except + else ifeq ($(OS)-$(CPUNAME),SOLARIS-SPARC) bridges_SELECTED_BRIDGE := gcc3_solaris_sparc diff --git a/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx new file mode 100644 index 0000000..0cba20d --- /dev/null +++ b/bridges/source/cpp_uno/gcc3_macosx_powerpc/cpp2uno.cxx @@ -0,0 +1,732 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * This file is part of the LibreOffice project. + * + * This Source Code Form is subject to the terms of the Mozilla Public + * License, v. 2.0. If a copy of the MPL was not distributed with this + * file, You can obtain one at http://mozilla.org/MPL/2.0/. + * + * This file incorporates work covered by the following license notice: + * + * Licensed to the Apache Software Foundation (ASF) under one or more + * contributor license agreements. See the NOTICE file distributed + * with this work for additional information regarding copyright + * ownership. The ASF licenses this file to you under the Apache + * License, Version 2.0 (the "License"); you may not use this file + * except in compliance with the License. You may obtain a copy of + * the License at http://www.apache.org/licenses/LICENSE-2.0 . + */ + + +#include <com/sun/star/uno/genfunc.hxx> +#include <uno/data.h> +#include <typelib/typedescription.hxx> + +#include "bridges/cpp_uno/shared/bridge.hxx" +#include "bridges/cpp_uno/shared/cppinterfaceproxy.hxx" +#include "bridges/cpp_uno/shared/types.hxx" +#include "bridges/cpp_uno/shared/vtablefactory.hxx" + +#include "share.hxx" + +using namespace ::com::sun::star::uno; + +namespace +{ + +static typelib_TypeClass cpp2uno_call( + bridges::cpp_uno::shared::CppInterfaceProxy * pThis, + const typelib_TypeDescription * pMemberTypeDescr, + typelib_TypeDescriptionReference * pReturnTypeRef, // 0 indicates void return + sal_Int32 nParams, typelib_MethodParameter * pParams, + void ** gpreg, void ** fpreg, void ** ovrflw, + sal_Int64 * pRegisterReturn /* space for register return */ ) +{ + int ng = 0; //number of gpr registers used + int nf = 0; //number of fpr regsiters used + + void ** pCppStack; //temporary stack pointer + + // gpreg: [ret *], this, [gpr params] + // fpreg: [fpr params] + // ovrflw: [gpr or fpr params (properly aligned)] + + // return + typelib_TypeDescription * pReturnTypeDescr = 0; + if (pReturnTypeRef) + TYPELIB_DANGER_GET( &pReturnTypeDescr, pReturnTypeRef ); + + void * pUnoReturn = 0; + void * pCppReturn = 0; // complex return ptr: if != 0 && != pUnoReturn, reconversion need + + // handle optional return pointer + if (pReturnTypeDescr) + { + if (bridges::cpp_uno::shared::isSimpleType( pReturnTypeDescr )) + { + pUnoReturn = pRegisterReturn; // direct way for simple types + } + else // complex return via ptr (pCppReturn) + { + pCppReturn = *gpreg; + gpreg++; //ovrflw++; + ng++; + + pUnoReturn = (bridges::cpp_uno::shared::relatesToInterfaceType( pReturnTypeDescr ) + ? alloca( pReturnTypeDescr->nSize ) + : pCppReturn); // direct way + } + } + // pop "this" + gpreg++; //ovrflw++; + ng++; + + // stack space + OSL_ENSURE( sizeof(void *) == sizeof(sal_Int32), "### unexpected size!" ); + // parameters + void ** pUnoArgs = (void **)alloca( 4 * sizeof(void *) * nParams ); + void ** pCppArgs = pUnoArgs + nParams; + // indices of values this have to be converted (interface conversion cpp<=>uno) + sal_Int32 * pTempIndices = (sal_Int32 *)(pUnoArgs + (2 * nParams)); + // type descriptions for reconversions + typelib_TypeDescription ** ppTempParamTypeDescr = (typelib_TypeDescription **)(pUnoArgs + (3 * nParams)); + + sal_Int32 nTempIndices = 0; + + for ( sal_Int32 nPos = 0; nPos < nParams; ++nPos ) + { + const typelib_MethodParameter & rParam = pParams[nPos]; + typelib_TypeDescription * pParamTypeDescr = 0; + TYPELIB_DANGER_GET( &pParamTypeDescr, rParam.pTypeRef ); + + if (!rParam.bOut && bridges::cpp_uno::shared::isSimpleType( pParamTypeDescr )) + // value + { + + switch (pParamTypeDescr->eTypeClass) + { + + case typelib_TypeClass_DOUBLE: + if (nf < 13) { + pCppArgs[nPos] = fpreg; + pUnoArgs[nPos] = fpreg; + nf++; + fpreg += 2; + } else { + if (((long)ovrflw) & 4) ovrflw++; + pCppArgs[nPos] = ovrflw; + pUnoArgs[nPos] = ovrflw; + ovrflw += 2; + } + break; + + case typelib_TypeClass_FLOAT: + // fpreg are all double values so need to + // modify fpreg to be a single word float value + if (nf < 13) { + float tmp = (float) (*((double *)fpreg)); + (*((float *) fpreg)) = tmp; + pCppArgs[nPos] = fpreg; + pUnoArgs[nPos] = fpreg; + nf++; + fpreg += 2; + } else { +#if 0 /* abi is not being followed correctly */ + if (((long)ovrflw) & 4) ovrflw++; + float tmp = (float) (*((double *)ovrflw)); + (*((float *) ovrflw)) = tmp; + pCppArgs[nPos] = ovrflw; + pUnoArgs[nPos] = ovrflw; + ovrflw += 2; +#else + pCppArgs[nPos] = ovrflw; + pUnoArgs[nPos] = ovrflw; + ovrflw += 1; +#endif + } + break; + + case typelib_TypeClass_HYPER: + case typelib_TypeClass_UNSIGNED_HYPER: + if (ng & 1) { + ng++; + gpreg++; + } + if (ng < 8) { + pCppArgs[nPos] = gpreg; + pUnoArgs[nPos] = gpreg; + ng += 2; + gpreg += 2; + } else { + if (((long)ovrflw) & 4) ovrflw++; + pCppArgs[nPos] = ovrflw; + pUnoArgs[nPos] = ovrflw; + ovrflw += 2; + } + break; + + case typelib_TypeClass_BYTE: + case typelib_TypeClass_BOOLEAN: + if (ng < 8) { + pCppArgs[nPos] = (((char *)gpreg) + 3); + pUnoArgs[nPos] = (((char *)gpreg) + 3); + ng++; + gpreg++; + } else { + pCppArgs[nPos] = (((char *)ovrflw) + 3); + pUnoArgs[nPos] = (((char *)ovrflw) + 3); + ovrflw++; + } + break; + + + case typelib_TypeClass_CHAR: + case typelib_TypeClass_SHORT: + case typelib_TypeClass_UNSIGNED_SHORT: + if (ng < 8) { + pCppArgs[nPos] = (((char *)gpreg)+ 2); + pUnoArgs[nPos] = (((char *)gpreg)+ 2); + ng++; + gpreg++; + } else { + pCppArgs[nPos] = (((char *)ovrflw) + 2); + pUnoArgs[nPos] = (((char *)ovrflw) + 2); + ovrflw++; + } + break; + + + default: + if (ng < 8) { + pCppArgs[nPos] = gpreg; + pUnoArgs[nPos] = gpreg; + ng++; + gpreg++; + } else { + pCppArgs[nPos] = ovrflw; + pUnoArgs[nPos] = ovrflw; + ovrflw++; + } + break; + + } + // no longer needed + TYPELIB_DANGER_RELEASE( pParamTypeDescr ); + } + else // ptr to complex value | ref + { + + if (ng < 8) { + pCppArgs[nPos] = *(void **)gpreg; + pCppStack = gpreg; + ng++; + gpreg++; + } else { + pCppArgs[nPos] = *(void **)ovrflw; + pCppStack = ovrflw; + ovrflw++; + } + + if (! rParam.bIn) // is pure out + { + // uno out is unconstructed mem! + pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ); + pTempIndices[nTempIndices] = nPos; + // will be released at reconversion + ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr; + } + // is in/inout + else if (bridges::cpp_uno::shared::relatesToInterfaceType( pParamTypeDescr )) + { + uno_copyAndConvertData( pUnoArgs[nPos] = alloca( pParamTypeDescr->nSize ), + *(void **)pCppStack, pParamTypeDescr, + pThis->getBridge()->getCpp2Uno() ); + pTempIndices[nTempIndices] = nPos; // has to be reconverted + // will be released at reconversion + ppTempParamTypeDescr[nTempIndices++] = pParamTypeDescr; + } + else // direct way + { + pUnoArgs[nPos] = *(void **)pCppStack; + // no longer needed + TYPELIB_DANGER_RELEASE( pParamTypeDescr ); + } + } + } + + // ExceptionHolder + uno_Any aUnoExc; // Any will be constructed by callee + uno_Any * pUnoExc = &aUnoExc; + + // invoke uno dispatch call + (*pThis->getUnoI()->pDispatcher)( pThis->getUnoI(), pMemberTypeDescr, pUnoReturn, pUnoArgs, &pUnoExc ); + + // in case an exception occurred... + if (pUnoExc) + { + // destruct temporary in/inout params + for ( ; nTempIndices--; ) + { + sal_Int32 nIndex = pTempIndices[nTempIndices]; + + if (pParams[nIndex].bIn) // is in/inout => was constructed + uno_destructData( pUnoArgs[nIndex], ppTempParamTypeDescr[nTempIndices], 0 ); + TYPELIB_DANGER_RELEASE( ppTempParamTypeDescr[nTempIndices] ); + } + if (pReturnTypeDescr) + TYPELIB_DANGER_RELEASE( pReturnTypeDescr ); + + CPPU_CURRENT_NAMESPACE::raiseException( &aUnoExc, pThis->getBridge()->getUno2Cpp() ); + // has to destruct the any + // is here for dummy + return typelib_TypeClass_VOID; + } + else // else no exception occurred... + { + // temporary params + for ( ; nTempIndices--; ) + { + sal_Int32 nIndex = pTempIndices[nTempIndices]; + typelib_TypeDescription * pParamTypeDescr = ppTempParamTypeDescr[nTempIndices]; + + if (pParams[nIndex].bOut) // inout/out + { + // convert and assign + uno_destructData( pCppArgs[nIndex], pParamTypeDescr, cpp_release ); + uno_copyAndConvertData( pCppArgs[nIndex], pUnoArgs[nIndex], pParamTypeDescr, + pThis->getBridge()->getUno2Cpp() ); + } + // destroy temp uno param ... etc. - the rest is truncated _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits