LibreOffice: bump version

This commit is contained in:
Gerasim Troeglazov
2023-10-17 19:10:05 +10:00
parent a228067a10
commit 474c929abd
3 changed files with 508 additions and 731 deletions

View File

@@ -17,14 +17,15 @@ and Open Source office suite on the market:
HOMEPAGE="https://www.libreoffice.org/"
COPYRIGHT="2000-2023 LibreOffice contributors"
LICENSE="MPL v2.0"
REVISION="2"
REVISION="1"
SOURCE_URI="https://github.com/LibreOffice/core/archive/libreoffice-$portVersion.tar.gz"
CHECKSUM_SHA256="46c8bf9538bbf9b5e7d23775b4a55a89e341b11ff5c605dbdad2d27374600a16"
SOURCE_DIR="core-libreoffice-$portVersion"
CHECKSUM_SHA256="fa47398c89ff3fba92a21e2f8c681413b0a5b419b0088db43241d5e8249b883b"
SOURCE_FILENAME="core-libreoffice-$portVersion.tar.gz"
SOURCE_URI_2="https://github.com/LibreOffice/translations/archive/libreoffice-$portVersion.tar.gz"
CHECKSUM_SHA256_2="f78ef6d348ee4c7f365f00419867b3f395e9525bfd71189f7c265c74b1307d1a"
CHECKSUM_SHA256_2="e45b7e546b6d6044d5a1735d709a08c25c76fb6cb2421aa701d8a7fdfc72b039"
SOURCE_DIR_2="translations-libreoffice-$portVersion"
SOURCE_FILENAME_2="translations-libreoffice-$portVersion.tar.gz"
@@ -34,11 +35,17 @@ CHECKSUM_SHA256_3="0082d0684f7db6f62361b76c4b7faba19e0c7ce5cb8e36c4b65fea8281e71
SOURCE_URI_4="https://dev-www.libreoffice.org/src/libcuckoo-93217f8d391718380c508a722ab9acd5e9081233.tar.gz#noarchive"
CHECKSUM_SHA256_4="471dd83a813ed2816c2246c373004470ad0f6612c7ce72038929dc5161cdd58e"
srcGitRevision5="cd5a5ee2cc0e3b3a62a5827d22035752ec7813a3"
SOURCE_URI_5="https://github.com/threedeyes/LibreOfficeLauncher/archive/$srcGitRevision5.tar.gz"
CHECKSUM_SHA256_5="5314962ca770369398599e175dc2c35c685d3fc968c9894390490c737036e528"
SOURCE_DIR_5="LibreOfficeLauncher-$srcGitRevision5"
SOURCE_FILENAME_5="LibreOfficeLauncher-$srcGitRevision5.tar.gz"
SOURCE_URI_5="https://dev-www.libreoffice.org/src/dragonbox-1.1.3.tar.gz#noarchive"
CHECKSUM_SHA256_5="09d63b05e9c594ec423778ab59b7a5aa1d76fdd71d25c7048b0258c4ec9c3384"
SOURCE_URI_6="https://dev-www.libreoffice.org/src/frozen-1.1.1.tar.gz#noarchive"
CHECKSUM_SHA256_6="f7c7075750e8fceeac081e9ef01944f221b36d9725beac8681cbd2838d26be45"
srcGitRevision7="cd5a5ee2cc0e3b3a62a5827d22035752ec7813a3"
SOURCE_URI_7="https://github.com/threedeyes/LibreOfficeLauncher/archive/$srcGitRevision7.tar.gz"
CHECKSUM_SHA256_7="5314962ca770369398599e175dc2c35c685d3fc968c9894390490c737036e528"
SOURCE_DIR_7="LibreOfficeLauncher-$srcGitRevision7"
SOURCE_FILENAME_7="LibreOfficeLauncher-$srcGitRevision7.tar.gz"
PATCHES="libreoffice-$portVersion.patchset"
ADDITIONAL_FILES="
@@ -51,7 +58,7 @@ POST_INSTALL_SCRIPTS="$relativePostInstallDir/create_buildid.sh"
ARCHITECTURES="all !x86_gcc2"
SECONDARY_ARCHITECTURES="!x86"
boostMinimumVersion=1.70.0
boostMinimumVersion=1.83.0
libreofficeLanguages="af ar be bg bn br brx bs ca ca-valencia cs cy da de dsb el en-GB en-ZA eo es et eu fa fi fr fy ga gd gl he hi hr hu id is it ja ka kk kmr-Latn ko lb lt lv mk mn nb ne nl nn pl pt pt-BR ro ru sa-IN sd sk sl sq sr sr-Latn sv szl tg th tr tt ug uk uz vi zh-CN zh-TW"
PROVIDES="
@@ -66,7 +73,6 @@ REQUIRES="
lib:libboost_iostreams$secondaryArchSuffix
lib:libboost_locale$secondaryArchSuffix
lib:libBox2D$secondaryArchSuffix
lib:libcairo$secondaryArchSuffix
lib:libcdr_0.1$secondaryArchSuffix
lib:libclucene_core$secondaryArchSuffix
lib:libcmis_0.5$secondaryArchSuffix
@@ -107,19 +113,19 @@ REQUIRES="
lib:libnssutil3$secondaryArchSuffix
lib:libnumbertext_1.0$secondaryArchSuffix
lib:libodfgen_0.1$secondaryArchSuffix
lib:liborcus_0.17$secondaryArchSuffix
lib:liborcus_0.18$secondaryArchSuffix
lib:libpagemaker_0.0$secondaryArchSuffix
lib:libplc4$secondaryArchSuffix
lib:libplds4$secondaryArchSuffix
lib:libpng16$secondaryArchSuffix
lib:libpoppler$secondaryArchSuffix
lib:libpoppler_qt6$secondaryArchSuffix
lib:libQt6Core$secondaryArchSuffix
lib:libQt6Gui$secondaryArchSuffix
lib:libQt6Widgets$secondaryArchSuffix
lib:libqxp_0.0$secondaryArchSuffix
lib:libraptor2$secondaryArchSuffix
lib:librdf$secondaryArchSuffix
lib:libreadline$secondaryArchSuffix >= 7
lib:libreadline$secondaryArchSuffix
lib:librevenge_0.0$secondaryArchSuffix
lib:librevenge_stream_0.0$secondaryArchSuffix
lib:libsmime3$secondaryArchSuffix
@@ -128,6 +134,7 @@ REQUIRES="
lib:libstaroffice_0.0$secondaryArchSuffix
lib:libuuid$secondaryArchSuffix
lib:libvisio_0.1$secondaryArchSuffix
lib:libwebp$secondaryArchSuffix
lib:libwpd_0.10$secondaryArchSuffix
lib:libwpg_0.3$secondaryArchSuffix
lib:libwps_0.4$secondaryArchSuffix
@@ -170,7 +177,6 @@ BUILD_REQUIRES="
devel:libboost_iostreams$secondaryArchSuffix >= $boostMinimumVersion
devel:libboost_locale$secondaryArchSuffix >= $boostMinimumVersion
devel:libBox2D$secondaryArchSuffix
devel:libcairo$secondaryArchSuffix
devel:libcdr_0.1$secondaryArchSuffix
devel:libclucene_contribs_lib$secondaryArchSuffix
devel:libclucene_core$secondaryArchSuffix
@@ -204,9 +210,9 @@ BUILD_REQUIRES="
devel:libnss3$secondaryArchSuffix
devel:libnumbertext_1.0$secondaryArchSuffix
devel:libodfgen_0.1$secondaryArchSuffix
devel:liborcus_0.17$secondaryArchSuffix
devel:liborcus_0.18$secondaryArchSuffix
devel:libpagemaker_0.0$secondaryArchSuffix
devel:libpoppler$secondaryArchSuffix
devel:libpoppler_qt6$secondaryArchSuffix
devel:libQt6Core$secondaryArchSuffix
devel:libqrcodegen$secondaryArchSuffix
devel:libqxp_0.0$secondaryArchSuffix
@@ -218,6 +224,7 @@ BUILD_REQUIRES="
devel:libssl$secondaryArchSuffix
devel:libstaroffice_0.0$secondaryArchSuffix
devel:libvisio_0.1$secondaryArchSuffix
devel:libwebp$secondaryArchSuffix
devel:libwpd_0.10$secondaryArchSuffix
devel:libwpg_0.3$secondaryArchSuffix
devel:libwps_0.4$secondaryArchSuffix
@@ -226,7 +233,7 @@ BUILD_REQUIRES="
devel:libxslt$secondaryArchSuffix
devel:libz$secondaryArchSuffix
devel:libzmf_0.0$secondaryArchSuffix
devel:mdds >= 2
devel:mdds >= 2.1
"
BUILD_PREREQUIRES="
cmd:aclocal
@@ -242,13 +249,13 @@ BUILD_PREREQUIRES="
cmd:git
cmd:gperf
cmd:grep
cmd:kf5_config$secondaryArchSuffix
cmd:ld$secondaryArchSuffix
cmd:libtool$secondaryArchSuffix
cmd:make
cmd:patch
cmd:perl
cmd:pkg_config$secondaryArchSuffix
cmd:python3.9
cmd:ucpp
cmd:which
cmd:xz
@@ -257,9 +264,16 @@ BUILD_PREREQUIRES="
BUILD()
{
export DISABLE_ASLR=1
export CFLAGS="-fPIC"
export CXXFLAGS=$CFLAGS
export LDFLAGS=$CFLAGS
mkdir -p external/tarballs
cp $sourceDir3/dtoa-20180411.tgz external/tarballs
cp $sourceDir4/libcuckoo-93217f8d391718380c508a722ab9acd5e9081233.tar.gz external/tarballs
cp $sourceDir5/dragonbox-1.1.3.tar.gz external/tarballs
cp $sourceDir6/frozen-1.1.1.tar.gz external/tarballs
rm -rf translations
ln -s $sourceDir2 translations
@@ -275,9 +289,12 @@ BUILD()
--enable-readonly-installset \
--enable-python=no \
--enable-build-opensymbol \
--enable-cairo-canvas=no \
--enable-sal-log \
\
--disable-ccache \
--disable-firebird-sdbc \
--disable-postgresql-sdbc \
--disable-fetch-external \
--disable-dependency-tracking \
--disable-zxing \
@@ -286,17 +303,22 @@ BUILD()
--with-vendor="HaikuPorts" \
--with-system-libs \
--with-tls="openssl" \
--with-system-nss \
--with-boost-libdir=`finddir B_SYSTEM_DIRECTORY`/$relativeDevelopLibDir \
--with-system-ucpp \
--with-system-cairo \
--with-system-nss \
--with-system-openssl \
\
--without-doxygen \
--without-system-dragonbox \
--without-system-frozen \
--without-system-libfixmath \
--without-helppack-integration \
--without-java \
--without-system-jars \
--with-lang="$libreofficeLanguages"
make $jobArgs build-nocheck
make $jobArgs
pushd $sourceDir5/src
pushd $sourceDir7/src
make
popd
}
@@ -307,7 +329,7 @@ INSTALL()
mkdir -p $appDir
cp -r instdir/* $appDir
mv $appDir/program/soffice.bin $appDir/program/LibreOffice
cp $sourceDir5/src/LibreOffice\ {Calc,Database,Draw,Impress,Math,Writer} $appDir
cp $sourceDir7/src/LibreOffice\ {Calc,Database,Draw,Impress,Math,Writer} $appDir
# make sure we do not copy default profile
rm -rf $appDir/user $appDir/share/xdg

View File

@@ -1,707 +0,0 @@
From 04a798df18355fb87edf035d42e5420e07c9c7d3 Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Sat, 15 Feb 2020 14:52:59 +0300
Subject: Make Elementary the default on Haiku
diff --git a/vcl/source/app/IconThemeSelector.cxx b/vcl/source/app/IconThemeSelector.cxx
index 5abb7b2..478a781 100644
--- a/vcl/source/app/IconThemeSelector.cxx
+++ b/vcl/source/app/IconThemeSelector.cxx
@@ -56,6 +56,9 @@ IconThemeSelector::GetIconThemeForDesktopEnvironment(const OUString& desktopEnvi
#ifdef _WIN32
(void)desktopEnvironment;
return "colibre";
+#elif defined(__HAIKU__)
+ (void)desktopEnvironment;
+ return "elementary";
#else
OUString r;
if ( desktopEnvironment.equalsIgnoreAsciiCase("plasma5") ||
--
2.37.3
From 57e7112c55054ab1ab9b482daa873f11c07f5913 Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Fri, 7 Aug 2020 12:14:40 +0300
Subject: Show used vcl backend in About window on Haiku
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index 66c030d..6ba2c53 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -1198,7 +1198,7 @@ OUString Application::GetHWOSConfInfo(const int bSelection, const bool bLocalize
#endif
appendDetails(u"", Localize(SV_APP_DEFAULT, bLocalize));
-#if (defined LINUX || defined _WIN32 || defined MACOSX || defined __FreeBSD__)
+#if (defined LINUX || defined _WIN32 || defined MACOSX || defined __FreeBSD__ || defined __HAIKU__)
appendDetails(u"; ", SV_APP_VCLBACKEND + GetToolkitName());
#endif
}
--
2.37.3
From bab5c7c19f76e34bc625110e4c6267de6ddb4633 Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Wed, 24 Oct 2018 17:01:34 +0300
Subject: Identify Haiku in about window
diff --git a/vcl/unx/generic/app/geninst.cxx b/vcl/unx/generic/app/geninst.cxx
index 0093f64..04042bd 100644
--- a/vcl/unx/generic/app/geninst.cxx
+++ b/vcl/unx/generic/app/geninst.cxx
@@ -26,6 +26,11 @@
# include <sys/utsname.h>
#endif
+#if defined(__HAIKU__)
+# include <sys/utsname.h>
+# include <private/libroot/system_revision.h>
+#endif
+
#include <config_features.h>
#if HAVE_FEATURE_OPENGL
#include <vcl/opengl/OpenGLContext.hxx>
@@ -89,6 +94,16 @@ OUString SalGenericInstance::getOSVersion()
}
return OUString::createFromAscii( stName.sysname ) + " " +
aKernelVer.copy( 0, nIndex );
+#elif defined(__HAIKU__)
+ struct utsname stName;
+ if ( uname( &stName ) != 0 )
+ return aKernelVer;
+
+ const char *haikuRevision = __get_haiku_revision();
+ if (haikuRevision[0] != '\0')
+ return OUString::createFromAscii( stName.sysname ) + " " + OUString::createFromAscii(haikuRevision);
+
+ return OUString::createFromAscii( stName.sysname );
#else
return aKernelVer;
#endif
--
2.37.3
From a730a4ba26d3194a2664e5ad5772e84a87331297 Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Sat, 15 Feb 2020 15:04:53 +0300
Subject: Implement ShellExec on Haiku
diff --git a/shell/source/unix/exec/shellexec.cxx b/shell/source/unix/exec/shellexec.cxx
index ddfb2e6..24ce539 100644
--- a/shell/source/unix/exec/shellexec.cxx
+++ b/shell/source/unix/exec/shellexec.cxx
@@ -174,6 +174,9 @@ void SAL_CALL ShellExec::execute( const OUString& aCommand, const OUString& aPar
aBuffer.append(" -R");
}
aBuffer.append(" --");
+
+#elif __HAIKU__
+ aBuffer.append("open");
#else
// Just use xdg-open on non-Mac
aBuffer.append("xdg-open");
--
2.37.3
From 6784899788feb85ff2a4b3ed87166d5f2d9a1048 Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Sat, 20 Jul 2019 01:18:50 +0300
Subject: Comment out linking with pthread
diff --git a/solenv/gbuild/platform/unxgcc.mk b/solenv/gbuild/platform/unxgcc.mk
index 0cec2ec..f7cc49d 100644
--- a/solenv/gbuild/platform/unxgcc.mk
+++ b/solenv/gbuild/platform/unxgcc.mk
@@ -45,9 +45,9 @@ gb_CFLAGS := \
# At least libstdc++ needs -pthread when including various C++ headers like <thread>, see
# <https://gcc.gnu.org/onlinedocs/gcc-8.3.0/libstdc++/manual/manual/using.html
# #manual.intro.using.flags>:
-ifneq ($(HAVE_LIBSTDCPP),)
-gb_CXX_LINKFLAGS := -pthread
-endif
+#ifneq ($(HAVE_LIBSTDCPP),)
+#gb_CXX_LINKFLAGS := -pthread
+#endif
gb_CXXFLAGS := \
$(gb_CXXFLAGS_COMMON) \
--
2.37.3
From 1475d275cb3dacecf81accfda565ca7aee11aa88 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sun, 11 Aug 2019 11:47:40 +1000
Subject: Add XP_HAIKU defs for xmlsec
diff --git a/svl/Library_svl.mk b/svl/Library_svl.mk
index 6e79be4..3dfa25d 100644
--- a/svl/Library_svl.mk
+++ b/svl/Library_svl.mk
@@ -183,6 +183,12 @@ $(eval $(call gb_Library_add_exception_objects,svl,\
svl/source/uno/pathservice \
))
+ifeq ($(OS),HAIKU)
+$(eval $(call gb_Library_add_defs,svl,\
+ -DXP_HAIKU=1 \
+))
+endif
+
ifeq ($(OS),WNT)
$(eval $(call gb_Library_add_exception_objects,svl,\
svl/source/svdde/ddecli \
diff --git a/xmlsecurity/Library_xsec_xmlsec.mk b/xmlsecurity/Library_xsec_xmlsec.mk
index 450e19b..568ff83 100644
--- a/xmlsecurity/Library_xsec_xmlsec.mk
+++ b/xmlsecurity/Library_xsec_xmlsec.mk
@@ -124,6 +124,12 @@ endif
else # !$(OS),WNT
+ifeq ($(OS),HAIKU)
+$(eval $(call gb_Library_add_defs,xsec_xmlsec,\
+ -DXP_HAIKU=1 \
+))
+endif
+
ifeq ($(SYSTEM_XMLSEC),)
$(eval $(call gb_Library_add_libs,xsec_xmlsec,\
$(call gb_UnpackedTarball_get_dir,xmlsec)/src/nss/.libs/libxmlsec1-nss.a \
--
2.37.3
From 0805f660b0304e7a9b6edbdec358babf6d646ab7 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 7 Aug 2020 12:37:45 +0300
Subject: Cast to boolean
diff --git a/vcl/source/filter/jpeg/jpegc.cxx b/vcl/source/filter/jpeg/jpegc.cxx
index 8807927..c570173 100644
--- a/vcl/source/filter/jpeg/jpegc.cxx
+++ b/vcl/source/filter/jpeg/jpegc.cxx
@@ -172,13 +172,13 @@ static void ReadJPEG(JpegStuff& rContext, JPEGReader* pJPEGReader, void* pInputS
rContext.aOwner.set(&rContext.cinfo);
jpeg_svstream_src(&rContext.cinfo, pInputStream);
SourceManagerStruct *source = reinterpret_cast<SourceManagerStruct*>(rContext.cinfo.src);
- jpeg_read_header(&rContext.cinfo, TRUE);
+ jpeg_read_header(&rContext.cinfo, static_cast<boolean>(TRUE));
rContext.cinfo.scale_num = 1;
rContext.cinfo.scale_denom = 1;
rContext.cinfo.output_gamma = 1.0;
- rContext.cinfo.raw_data_out = FALSE;
- rContext.cinfo.quantize_colors = FALSE;
+ rContext.cinfo.raw_data_out = static_cast<boolean>(FALSE);
+ rContext.cinfo.quantize_colors = static_cast<boolean>(FALSE);
jpeg_calc_output_dimensions(&rContext.cinfo);
@@ -372,7 +372,7 @@ bool WriteJPEG( JPEGWriter* pJPEGWriter, void* pOutputStream,
}
jpeg_set_defaults( &cinfo );
- jpeg_set_quality( &cinfo, static_cast<int>(nQualityPercent), FALSE );
+ jpeg_set_quality( &cinfo, static_cast<int>(nQualityPercent), static_cast<boolean>(FALSE) );
if (o3tl::convertsToAtMost(rPPI.getX(), 65535) && o3tl::convertsToAtMost(rPPI.getY(), 65535))
{
@@ -404,7 +404,7 @@ bool WriteJPEG( JPEGWriter* pJPEGWriter, void* pOutputStream,
cinfo.comp_info[0].v_samp_factor = 2;
}
- jpeg_start_compress( &cinfo, TRUE );
+ jpeg_start_compress( &cinfo, static_cast<boolean>(TRUE) );
for( nY = 0; nY < nHeight; nY++ )
{
@@ -439,10 +439,10 @@ void Transform(void* pInputStream, void* pOutputStream, Degree10 nAngle)
jvirt_barray_ptr* aSourceCoefArrays = nullptr;
jvirt_barray_ptr* aDestinationCoefArrays = nullptr;
- aTransformOption.force_grayscale = FALSE;
- aTransformOption.trim = FALSE;
- aTransformOption.perfect = FALSE;
- aTransformOption.crop = FALSE;
+ aTransformOption.force_grayscale = static_cast<boolean>(FALSE);
+ aTransformOption.trim = static_cast<boolean>(FALSE);
+ aTransformOption.perfect = static_cast<boolean>(FALSE);
+ aTransformOption.crop = static_cast<boolean>(FALSE);
// Angle to transform option
// 90 Clockwise = 270 Counterclockwise
@@ -471,7 +471,7 @@ void Transform(void* pInputStream, void* pOutputStream, Degree10 nAngle)
aDestinationInfo.err->error_exit = errorExit;
aDestinationInfo.err->output_message = outputMessage;
- aDestinationInfo.optimize_coding = TRUE;
+ aDestinationInfo.optimize_coding = static_cast<boolean>(TRUE);
JpegDecompressOwner aDecompressOwner;
JpegCompressOwner aCompressOwner;
@@ -497,7 +497,7 @@ void Transform(void* pInputStream, void* pOutputStream, Degree10 nAngle)
jpeg_svstream_src (&aSourceInfo, pInputStream);
jcopy_markers_setup(&aSourceInfo, aCopyOption);
- jpeg_read_header(&aSourceInfo, TRUE);
+ jpeg_read_header(&aSourceInfo, static_cast<boolean>(TRUE));
jtransform_request_workspace(&aSourceInfo, &aTransformOption);
aSourceCoefArrays = jpeg_read_coefficients(&aSourceInfo);
@@ -507,7 +507,7 @@ void Transform(void* pInputStream, void* pOutputStream, Degree10 nAngle)
jpeg_svstream_dest (&aDestinationInfo, pOutputStream);
// Compute optimal Huffman coding tables instead of precomputed tables
- aDestinationInfo.optimize_coding = TRUE;
+ aDestinationInfo.optimize_coding = static_cast<boolean>(TRUE);
jpeg_write_coefficients(&aDestinationInfo, aDestinationCoefArrays);
jcopy_markers_execute(&aSourceInfo, &aDestinationInfo, aCopyOption);
jtransform_execute_transformation(&aSourceInfo, &aDestinationInfo, aSourceCoefArrays, &aTransformOption);
--
2.37.3
From 84c98e91fffb3ece96a1d30fb10c3f26ca7c691a Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 8 Feb 2021 15:50:11 +1000
Subject: Use dpi=100 for qt5 backend
diff --git a/vcl/qt5/QtGraphics_GDI.cxx b/vcl/qt5/QtGraphics_GDI.cxx
index 6849a3b..b457e81 100644
--- a/vcl/qt5/QtGraphics_GDI.cxx
+++ b/vcl/qt5/QtGraphics_GDI.cxx
@@ -711,6 +711,10 @@ void QtGraphics::GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY)
rDPIX = rDPIY = sForceDPI.toInt32();
return;
}
+#ifdef __HAIKU__
+ rDPIX = rDPIY = 100;
+ return;
+#endif
if (!m_pFrame)
return;
--
2.37.3
From a5e842fbbedc068397b2e49cc1e94e3ba638bfae Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 8 Feb 2021 15:52:13 +1000
Subject: Disable hidpi for Haiku
diff --git a/vcl/qt5/QtInstance.cxx b/vcl/qt5/QtInstance.cxx
index 2470014..dbbe3b6 100644
--- a/vcl/qt5/QtInstance.cxx
+++ b/vcl/qt5/QtInstance.cxx
@@ -696,7 +696,7 @@ void QtInstance::MoveFakeCmdlineArgs(std::unique_ptr<char* []>& rFakeArgv,
std::unique_ptr<QApplication> QtInstance::CreateQApplication(int& nArgc, char** pArgv)
{
-#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0)
+#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && !defined(__HAIKU__)
// for Qt 6, setting Qt::AA_EnableHighDpiScaling and Qt::AA_UseHighDpiPixmaps
// is deprecated, they're always enabled
QApplication::setAttribute(Qt::AA_EnableHighDpiScaling);
--
2.37.3
From e354fc5ace0a3271fa12e73fe3470e2231e83953 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 8 Feb 2021 21:47:12 +1000
Subject: Don't use fontconfig
diff --git a/vcl/qt5/QtGraphics_Text.cxx b/vcl/qt5/QtGraphics_Text.cxx
index b509c2a..6668fb6 100644
--- a/vcl/qt5/QtGraphics_Text.cxx
+++ b/vcl/qt5/QtGraphics_Text.cxx
@@ -113,10 +113,10 @@ void QtGraphics::GetDevFontList(vcl::font::PhysicalFontCollection* pPFC)
const OString& rFileName = rMgr.getFontFileSysPath(aInfo.m_nID);
rFontManager.AddFontFile(rFileName, nFaceNum, nVariantNum, aInfo.m_nID, aDFA);
}
-
+#ifndef __HAIKU__
if (bUseFontconfig)
SalGenericInstance::RegisterFontSubstitutors(pPFC);
-
+#endif
for (auto& family : aFDB.families())
for (auto& style : aFDB.styles(family))
pPFC->Add(QtFontFace::fromQFontDatabase(family, style));
--
2.37.3
From 56edbe8cab1d4fd9d5c607d0c8365ccc855b7b2e Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Fri, 7 Aug 2020 12:47:56 +0300
Subject: Revert fstack-protector check removal in
9db11a8ab648f4d04e59e6bb94cd640f64835447
diff --git a/config_host.mk.in b/config_host.mk.in
index df934f4..65056ea 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -275,6 +275,7 @@ export HAVE_CXX20_ATOMIC_REF=@HAVE_CXX20_ATOMIC_REF@
export HAVE_DLLEXPORTINLINES=@HAVE_DLLEXPORTINLINES@
export HAVE_LO_CLANG_DLLEXPORTINLINES=@HAVE_LO_CLANG_DLLEXPORTINLINES@
export HAVE_GCC_AVX=@HAVE_GCC_AVX@
+export HAVE_GCC_STACK_PROTECTOR_STRONG=@HAVE_GCC_STACK_PROTECTOR_STRONG@
export HAVE_GCC_BUILTIN_ATOMIC=@HAVE_GCC_BUILTIN_ATOMIC@
export HAVE_GCC_FNO_ENFORCE_EH_SPECS=@HAVE_GCC_FNO_ENFORCE_EH_SPECS@
export HAVE_GCC_FNO_SIZED_DEALLOCATION=@HAVE_GCC_FNO_SIZED_DEALLOCATION@
diff --git a/configure.ac b/configure.ac
index 5430110..e57f0ec 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1093,6 +1093,7 @@ haiku*)
using_x11=no
test_gtk3_kde5=no
test_kf5=yes
+ test_qt6=yes
enable_odk=no
enable_coinmp=no
enable_pdfium=no
@@ -7119,6 +7120,17 @@ if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
AC_MSG_RESULT([no])
fi
+ AC_MSG_CHECKING([whether $CC_BASE supports -fstack-protector-strong])
+ save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -O0 -Werror -fstack-protector-strong"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ char a[8]; a[7] = 0; ]])],[ HAVE_GCC_STACK_PROTECTOR_STRONG=TRUE ],[])
+ CFLAGS=$save_CFLAGS
+ if test "$HAVE_GCC_STACK_PROTECTOR_STRONG" = "TRUE"; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+
AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
int v = 0;
@@ -7256,6 +7268,7 @@ if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
fi
AC_SUBST(HAVE_GCC_AVX)
+AC_SUBST(HAVE_GCC_STACK_PROTECTOR_STRONG)
AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
@@ -12993,16 +13006,16 @@ dnl ===================================================================
QT6_CFLAGS=""
QT6_LIBS=""
-QMAKE6="qmake"
+QMAKE6="qmake6"
MOC6="moc"
QT6_PLATFORMS_SRCDIR=""
if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
then
qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
- qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
+ qt6_libdirs="$QT6LIB /system/lib /usr/lib/qt6 /usr/lib $x_libraries"
if test -n "$supports_multilib"; then
- qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
+ qt6_libdirs="$qt6_libdirs /system/lib /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
fi
qt6_test_include="QtWidgets/qapplication.h"
@@ -13016,7 +13029,7 @@ then
if test -n "$QT6DIR"; then
AC_PATH_PROG(QMAKE6, [qmake], no, [$QT6DIR/bin])
else
- AC_PATH_PROGS(QMAKE6, [qmake-qt6 qmake], no)
+ AC_PATH_PROGS(QMAKE6, [qmake6], no)
fi
if test "$QMAKE6" = "no"; then
AC_MSG_ERROR([Qmake not found. Please specify the root of your Qt6 installation by exporting QT6DIR before running "configure".])
@@ -13093,7 +13106,7 @@ then
dnl Check for Meta Object Compiler
- AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$PATH])
+ AC_PATH_PROGS( MOC6, [moc], no, [`dirname $qt6_libdir`/libexec:/system/lib/Qt6:$QT6DIR/libexec:$PATH])
if test "$MOC6" = "no"; then
AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
the root of your Qt installation by exporting QT6DIR before running "configure".])
diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk
index 589c9ee..0cf6a91 100644
--- a/solenv/gbuild/platform/com_GCC_defs.mk
+++ b/solenv/gbuild/platform/com_GCC_defs.mk
@@ -70,7 +70,7 @@ gb_CFLAGS_COMMON := \
-fmessage-length=0 \
-fno-common \
-pipe \
- $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) \
+ $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong) \
$(if $(gb_COLOR),-fdiagnostics-color=always) \
gb_CXXFLAGS_COMMON := \
@@ -88,7 +88,7 @@ gb_CXXFLAGS_COMMON := \
-fmessage-length=0 \
-fno-common \
-pipe \
- $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) \
+ $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong) \
$(if $(gb_COLOR),-fdiagnostics-color=always) \
ifeq ($(HAVE_WDEPRECATED_COPY_DTOR),TRUE)
@@ -153,7 +153,7 @@ endif
gb_VISIBILITY_FLAGS_CXX := -fvisibility-inlines-hidden
gb_CXXFLAGS_COMMON += $(gb_VISIBILITY_FLAGS_CXX)
-gb_LinkTarget_LDFLAGS += $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong)
+gb_LinkTarget_LDFLAGS += $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong)
ifneq ($(gb_ENABLE_PCH),)
ifeq ($(COM_IS_CLANG),TRUE)
--
2.37.3
From 13c58262d4b09eb56eb39f7647664f066c9fa1ad Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 20 Aug 2021 23:33:13 +1000
Subject: Revert Qt::Popup window handling
diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx
index 6c5f3b7..05feec3 100644
--- a/vcl/qt5/QtFrame.cxx
+++ b/vcl/qt5/QtFrame.cxx
@@ -117,10 +117,7 @@ QtFrame::QtFrame(QtFrame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo)
, m_bDefaultPos(true)
, m_bFullScreen(false)
, m_bFullScreenSpanAll(false)
-#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && QT5_USING_X11) \
- || (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT6_USING_X11)
, m_nKeyModifiers(ModKeyFlags::NONE)
-#endif
, m_nInputLanguage(LANGUAGE_DONTKNOW)
{
QtInstance* pInst = static_cast<QtInstance*>(GetSalData()->m_pInstance);
@@ -149,7 +146,7 @@ QtFrame::QtFrame(QtFrame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo)
else if ((nStyle & SalFrameStyleFlags::FLOAT)
&& (nStyle & SalFrameStyleFlags::OWNERDRAWDECORATION))
aWinFlags = Qt::Tool | Qt::FramelessWindowHint;
- else if (nStyle & SalFrameStyleFlags::TOOLTIP)
+ else if (nStyle & (nStyle & SalFrameStyleFlags::FLOAT | SalFrameStyleFlags::TOOLTIP))
aWinFlags = Qt::ToolTip;
// Can't use Qt::Popup, because it grabs the input focus and generates a focus-out event,
// instantly auto-closing the LO's editable ComboBox popup.
@@ -206,6 +203,7 @@ void QtFrame::screenChanged(QScreen*) { m_pQWidget->fakeResize(); }
void QtFrame::FillSystemEnvData(SystemEnvData& rData, sal_IntPtr pWindow, QWidget* pWidget)
{
+#ifndef __HAIKU__
if (QGuiApplication::platformName() == "wayland")
rData.platform = SystemEnvData::Platform::Wayland;
else if (QGuiApplication::platformName() == "xcb")
@@ -217,7 +215,7 @@ void QtFrame::FillSystemEnvData(SystemEnvData& rData, sal_IntPtr pWindow, QWidge
"Unsupported qt VCL platform: " << toOUString(QGuiApplication::platformName()));
std::abort();
}
-
+#endif
rData.toolkit = SystemEnvData::Toolkit::Qt;
rData.aShellWindow = pWindow;
rData.pWidget = pWidget;
diff --git a/vcl/qt5/QtWidget.cxx b/vcl/qt5/QtWidget.cxx
index 8c545fd..a7d5e89 100644
--- a/vcl/qt5/QtWidget.cxx
+++ b/vcl/qt5/QtWidget.cxx
@@ -187,13 +187,7 @@ void QtWidget::handleMouseButtonEvent(const QtFrame& rFrame, const QMouseEvent*
rFrame.CallCallback(nEventType, &aEvent);
}
-void QtWidget::mousePressEvent(QMouseEvent* pEvent)
-{
- handleMousePressEvent(m_rFrame, pEvent);
- if (m_rFrame.isPopup()
- && !geometry().translated(geometry().topLeft() * -1).contains(pEvent->pos()))
- closePopup();
-}
+void QtWidget::mousePressEvent(QMouseEvent* pEvent) { handleMousePressEvent(m_rFrame, pEvent); }
void QtWidget::mouseReleaseEvent(QMouseEvent* pEvent) { handleMouseReleaseEvent(m_rFrame, pEvent); }
--
2.37.3
From f7138ae9f0712337a4eca5727b47ebe25814b6b5 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Wed, 4 May 2022 21:46:48 +1000
Subject: Use Noto Sans as default font
diff --git a/unotools/source/config/fontcfg.cxx b/unotools/source/config/fontcfg.cxx
index ef94981..1747a8e 100644
--- a/unotools/source/config/fontcfg.cxx
+++ b/unotools/source/config/fontcfg.cxx
@@ -225,6 +225,11 @@ OUString DefaultFontConfiguration::getUserInterfaceFont( const LanguageTag& rLan
if( aLanguageTag.isSystemLocale() )
aLanguageTag = SvtSysLocale().GetUILanguageTag();
+#ifdef __HAIKU__
+ static constexpr OUStringLiteral HAIKU_UI_SANS = u"Noto Sans Display";
+ return HAIKU_UI_SANS;
+#endif
+
OUString aUIFont = getDefaultFont( aLanguageTag, DefaultFontType::UI_SANS );
if( !aUIFont.isEmpty() )
--
2.37.3
From dd049b9136fb5bec2195a76378656bbddb612891 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Wed, 4 May 2022 21:48:43 +1000
Subject: Style tune
diff --git a/vcl/qt5/QtGraphics_Controls.cxx b/vcl/qt5/QtGraphics_Controls.cxx
index e6e3d82..9a05d5a 100644
--- a/vcl/qt5/QtGraphics_Controls.cxx
+++ b/vcl/qt5/QtGraphics_Controls.cxx
@@ -1010,6 +1010,8 @@ bool QtGraphics_Controls::getNativeControlRegion(ControlType type, ControlPart p
QSize aMinSize = upscale(sizeFromContents(QStyle::CT_TabBarTab, &sot,
downscale(contentRect.size(), Round::Ceil)),
Round::Ceil);
+ aMinSize.rwidth() += 12;
+ aMinSize.rheight() += 2;
contentRect.setSize(aMinSize);
boundingRect = contentRect;
retVal = true;
--
2.37.3
From cd831b40068b77dd798bb80db87f7d43a94ac8f2 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Wed, 4 May 2022 21:49:34 +1000
Subject: Reorder vcl plugins for Haiku
diff --git a/vcl/source/app/salplug.cxx b/vcl/source/app/salplug.cxx
index 7c2a91c..a3b2726 100644
--- a/vcl/source/app/salplug.cxx
+++ b/vcl/source/app/salplug.cxx
@@ -282,9 +282,13 @@ SalInstance *CreateSalInstance()
#else
#ifdef MACOSX
"osx"
+#else
+#ifdef __HAIKU__
+ "qt6", "kf5", "qt5"
#else
"gtk3", "kf5", "gen"
#endif
+#endif
#endif
};
--
2.37.3
From 7e5b719fe7823a94771d07f8bc1fe94ec964e951 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Wed, 4 May 2022 21:50:08 +1000
Subject: FIx build for Qt6
diff --git a/vcl/inc/qt5/QtFrame.hxx b/vcl/inc/qt5/QtFrame.hxx
index 23a4fd9..f9c71e5 100644
--- a/vcl/inc/qt5/QtFrame.hxx
+++ b/vcl/inc/qt5/QtFrame.hxx
@@ -104,10 +104,7 @@ class VCLPLUG_QT_PUBLIC QtFrame : public QObject, public SalFrame
#if QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && QT5_USING_X11
ScreenSaverInhibitor m_ScreenSaverInhibitor;
#endif
-#if (QT_VERSION < QT_VERSION_CHECK(6, 0, 0) && QT5_USING_X11) \
- || (QT_VERSION >= QT_VERSION_CHECK(6, 0, 0) && QT6_USING_X11)
ModKeyFlags m_nKeyModifiers;
-#endif
LanguageType m_nInputLanguage;
--
2.37.3
From 56e125b0f82ad78fc9eb2ffed6e10655a6bb7377 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 6 May 2022 10:55:46 +1000
Subject: Use system font
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index 186013e..5c6cba4 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -25,6 +25,12 @@
#include <win/svsys.h>
#endif
+#ifdef __HAIKU__
+#include <kernel/image.h>
+#include <Application.h>
+#include <Font.h>
+#endif
+
#include <comphelper/processfactory.hxx>
#include <rtl/bootstrap.hxx>
@@ -622,13 +628,26 @@ ImplStyleData::ImplStyleData( const ImplStyleData& rData ) :
void ImplStyleData::SetStandardStyles()
{
- vcl::Font aStdFont( FAMILY_SWISS, Size( 0, 8 ) );
+ vcl::Font aStdFont( FAMILY_SWISS, Size( 0, 9 ) );
aStdFont.SetCharSet( osl_getThreadTextEncoding() );
aStdFont.SetWeight( WEIGHT_NORMAL );
+#ifdef __HAIKU__
+ if (be_app) {
+ font_family plainFontFamily;
+ font_style plainFontStyle;
+ BFont haikuPlainFont = *be_plain_font;
+ haikuPlainFont.GetFamilyAndStyle(&plainFontFamily, &plainFontStyle);
+ aStdFont.SetFamilyName(OStringToOUString(std::string_view(plainFontFamily), osl_getThreadTextEncoding()));
+ aStdFont.SetStyleName(OStringToOUString(std::string_view(plainFontStyle), osl_getThreadTextEncoding()));
+ } else {
+ aStdFont.SetFamilyName("Noto Sans Display");
+ }
+#else
if (!utl::ConfigManager::IsFuzzing())
aStdFont.SetFamilyName(utl::DefaultFontConfiguration::get().getUserInterfaceFont(LanguageTag("en")));
else
aStdFont.SetFamilyName("Liberation Sans");
+#endif
maAppFont = aStdFont;
maHelpFont = aStdFont;
maMenuFont = aStdFont;
--
2.37.3

View File

@@ -0,0 +1,462 @@
From 80f2f59e1d6945023d70277087db3aed1bccaf1b Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Sat, 15 Feb 2020 14:52:59 +0300
Subject: Make Elementary the default on Haiku
diff --git a/vcl/source/app/IconThemeSelector.cxx b/vcl/source/app/IconThemeSelector.cxx
index 6b8dfc0..3d557ad 100644
--- a/vcl/source/app/IconThemeSelector.cxx
+++ b/vcl/source/app/IconThemeSelector.cxx
@@ -67,6 +67,9 @@ IconThemeSelector::GetIconThemeForDesktopEnvironment(const OUString& desktopEnvi
return "colibre";
else
return "colibre_dark";
+#elif defined(__HAIKU__)
+ (void)desktopEnvironment;
+ return "elementary";
#else
OUString r;
if ( desktopEnvironment.equalsIgnoreAsciiCase("plasma5") ||
--
2.42.0
From c8c1e803eda7036f2330bcd724dbd5b1ef56c3b4 Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Fri, 7 Aug 2020 12:14:40 +0300
Subject: Show used vcl backend in About window on Haiku
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index 6ee03f1..3c1653e 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -1208,7 +1208,7 @@ OUString Application::GetHWOSConfInfo(const int bSelection, const bool bLocalize
#endif
appendDetails(u"", Localize(SV_APP_DEFAULT, bLocalize));
-#if (defined LINUX || defined _WIN32 || defined MACOSX || defined __FreeBSD__ || defined EMSCRIPTEN)
+#if (defined LINUX || defined _WIN32 || defined MACOSX || defined __FreeBSD__ || defined EMSCRIPTEN || defined __HAIKU__)
appendDetails(u"; ", SV_APP_VCLBACKEND + GetToolkitName());
#endif
}
--
2.42.0
From f9391b7dcd11f833851db3b20982a6705e80c1d6 Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Wed, 24 Oct 2018 17:01:34 +0300
Subject: Identify Haiku in about window
diff --git a/vcl/unx/generic/app/geninst.cxx b/vcl/unx/generic/app/geninst.cxx
index 191d87c..949155f 100644
--- a/vcl/unx/generic/app/geninst.cxx
+++ b/vcl/unx/generic/app/geninst.cxx
@@ -26,6 +26,11 @@
# include <sys/utsname.h>
#endif
+#if defined(__HAIKU__)
+# include <sys/utsname.h>
+# include <private/libroot/system_revision.h>
+#endif
+
#include <config_features.h>
#if HAVE_FEATURE_OPENGL
#include <vcl/opengl/OpenGLContext.hxx>
@@ -92,6 +97,16 @@ OUString SalGenericInstance::getOSVersion()
#define xstr(s) str(s)
aKernelVer = "Emscripten " xstr(__EMSCRIPTEN_major__)
"." xstr(__EMSCRIPTEN_minor__) "." xstr(__EMSCRIPTEN_tiny__);
+#elif defined(__HAIKU__)
+ struct utsname stName;
+ if ( uname( &stName ) != 0 )
+ return aKernelVer;
+
+ const char *haikuRevision = __get_haiku_revision();
+ if (haikuRevision[0] != '\0')
+ return OUString::createFromAscii( stName.sysname ) + " " + OUString::createFromAscii(haikuRevision);
+
+ return OUString::createFromAscii( stName.sysname );
#endif
return aKernelVer;
}
--
2.42.0
From defb4cca11b9b148add1fbae739c5ef707a1369b Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Sat, 15 Feb 2020 15:04:53 +0300
Subject: Implement ShellExec on Haiku
diff --git a/shell/source/unix/exec/shellexec.cxx b/shell/source/unix/exec/shellexec.cxx
index 71137c7..a5fcd27 100644
--- a/shell/source/unix/exec/shellexec.cxx
+++ b/shell/source/unix/exec/shellexec.cxx
@@ -187,6 +187,9 @@ void SAL_CALL ShellExec::execute( const OUString& aCommand, const OUString& aPar
aBuffer.append(" -R");
}
aBuffer.append(" --");
+
+#elif __HAIKU__
+ aBuffer.append("open");
#else
// Just use xdg-open on non-Mac
aBuffer.append("xdg-open");
--
2.42.0
From 56e2681a95e2b01e29b4256788efe24904905455 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Sun, 11 Aug 2019 11:47:40 +1000
Subject: Add XP_HAIKU defs for xmlsec
diff --git a/svl/Library_svl.mk b/svl/Library_svl.mk
index a67184b..4cadd7f 100644
--- a/svl/Library_svl.mk
+++ b/svl/Library_svl.mk
@@ -182,6 +182,12 @@ $(eval $(call gb_Library_add_exception_objects,svl,\
svl/source/uno/pathservice \
))
+ifeq ($(OS),HAIKU)
+$(eval $(call gb_Library_add_defs,svl,\
+ -DXP_HAIKU=1 \
+))
+endif
+
ifeq ($(OS),WNT)
$(eval $(call gb_Library_add_exception_objects,svl,\
svl/source/svdde/ddecli \
diff --git a/xmlsecurity/Library_xsec_xmlsec.mk b/xmlsecurity/Library_xsec_xmlsec.mk
index 615c3eb..5e10e08 100644
--- a/xmlsecurity/Library_xsec_xmlsec.mk
+++ b/xmlsecurity/Library_xsec_xmlsec.mk
@@ -130,6 +130,12 @@ endif
else # !$(OS),WNT
+ifeq ($(OS),HAIKU)
+$(eval $(call gb_Library_add_defs,xsec_xmlsec,\
+ -DXP_HAIKU=1 \
+))
+endif
+
ifeq ($(SYSTEM_XMLSEC),)
$(eval $(call gb_Library_add_libs,xsec_xmlsec,\
$(call gb_UnpackedTarball_get_dir,xmlsec)/src/.libs/libxmlsec1.a \
--
2.42.0
From 8f0768fc0e9e14daab895e5878cbcb1afaabdfd5 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Mon, 8 Feb 2021 21:47:12 +1000
Subject: Don't use fontconfig
diff --git a/vcl/qt5/QtGraphics_Text.cxx b/vcl/qt5/QtGraphics_Text.cxx
index 1879008..e5b1e9d 100644
--- a/vcl/qt5/QtGraphics_Text.cxx
+++ b/vcl/qt5/QtGraphics_Text.cxx
@@ -86,7 +86,11 @@ bool QtGraphics::GetFontCapabilities(vcl::FontCapabilities& rFontCapabilities) c
void QtGraphics::GetDevFontList(vcl::font::PhysicalFontCollection* pPFC)
{
+#ifdef __HAIKU__
+ static const bool bUseFontconfig = false;
+#else
static const bool bUseFontconfig = (nullptr == getenv("SAL_VCL_QT5_NO_FONTCONFIG"));
+#endif
if (pPFC->Count())
return;
--
2.42.0
From 06717fcdd172ac5ca478656e69e28e6d6811a791 Mon Sep 17 00:00:00 2001
From: Sergei Reznikov <diver@gelios.net>
Date: Fri, 7 Aug 2020 12:47:56 +0300
Subject: Revert fstack-protector check removal in
9db11a8ab648f4d04e59e6bb94cd640f64835447
diff --git a/config_host.mk.in b/config_host.mk.in
index eb5e751..5510ebd 100644
--- a/config_host.mk.in
+++ b/config_host.mk.in
@@ -305,6 +305,7 @@ export HAVE_DLLEXPORTINLINES=@HAVE_DLLEXPORTINLINES@
export HAVE_EXTERNAL_DWARF=@HAVE_EXTERNAL_DWARF@
export HAVE_LO_CLANG_DLLEXPORTINLINES=@HAVE_LO_CLANG_DLLEXPORTINLINES@
export HAVE_GCC_AVX=@HAVE_GCC_AVX@
+export HAVE_GCC_STACK_PROTECTOR_STRONG=@HAVE_GCC_STACK_PROTECTOR_STRONG@
export HAVE_GCC_BUILTIN_ATOMIC=@HAVE_GCC_BUILTIN_ATOMIC@
export HAVE_GCC_FNO_ENFORCE_EH_SPECS=@HAVE_GCC_FNO_ENFORCE_EH_SPECS@
export HAVE_GCC_FNO_SIZED_DEALLOCATION=@HAVE_GCC_FNO_SIZED_DEALLOCATION@
diff --git a/configure.ac b/configure.ac
index 19c2ebf..64e1fd9 100644
--- a/configure.ac
+++ b/configure.ac
@@ -1140,6 +1140,7 @@ haiku*)
test_gtk3=no
test_gtk3_kde5=no
test_kf5=yes
+ test_qt6=yes
enable_odk=no
enable_coinmp=no
enable_pdfium=no
@@ -7261,6 +7262,17 @@ if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
AC_MSG_RESULT([no])
fi
+ AC_MSG_CHECKING([whether $CC_BASE supports -fstack-protector-strong])
+ save_CFLAGS=$CFLAGS
+ CFLAGS="$CFLAGS -O0 -Werror -fstack-protector-strong"
+ AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[ char a[8]; a[7] = 0; ]])],[ HAVE_GCC_STACK_PROTECTOR_STRONG=TRUE ],[])
+ CFLAGS=$save_CFLAGS
+ if test "$HAVE_GCC_STACK_PROTECTOR_STRONG" = "TRUE"; then
+ AC_MSG_RESULT([yes])
+ else
+ AC_MSG_RESULT([no])
+ fi
+
AC_MSG_CHECKING([whether $CC_BASE supports atomic functions])
AC_LINK_IFELSE([AC_LANG_PROGRAM([[]], [[
int v = 0;
@@ -7398,6 +7410,7 @@ if test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
fi
AC_SUBST(HAVE_GCC_AVX)
+AC_SUBST(HAVE_GCC_STACK_PROTECTOR_STRONG)
AC_SUBST(HAVE_GCC_BUILTIN_ATOMIC)
AC_SUBST(HAVE_GCC_STACK_CLASH_PROTECTION)
@@ -13057,16 +13070,16 @@ dnl ===================================================================
QT6_CFLAGS=""
QT6_LIBS=""
-QMAKE6="qmake"
+QMAKE6="qmake6"
MOC6="moc"
QT6_PLATFORMS_SRCDIR=""
if test \( "$test_qt6" = "yes" -a "$ENABLE_QT6" = "TRUE" \)
then
qt6_incdirs="$QT6INC /usr/include/qt6 /usr/include $x_includes"
- qt6_libdirs="$QT6LIB /usr/lib/qt6 /usr/lib $x_libraries"
+ qt6_libdirs="$QT6LIB /system/lib /usr/lib/qt6 /usr/lib $x_libraries"
if test -n "$supports_multilib"; then
- qt6_libdirs="$qt6_libdirs /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
+ qt6_libdirs="$qt6_libdirs /system/lib /usr/lib64/qt6 /usr/lib64/qt /usr/lib64"
fi
qt6_test_include="QtWidgets/qapplication.h"
@@ -13159,12 +13172,12 @@ then
for lib_dir in $qt6_libdirs; do
if test -z "$qt6_libexec_dirs"; then
- qt6_libexec_dirs="$lib_dir/libexec"
+ qt6_libexec_dirs="$lib_dir/Qt6"
else
- qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/libexec"
+ qt6_libexec_dirs="$qt6_libexec_dirs:$lib_dir/Qt6"
fi
done
- AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/libexec:$QT6DIR/libexec:$qt6_libexec_dirs:`echo $qt6_libdirs | $SED -e 's/ /:/g'`:$PATH])
+ AC_PATH_PROGS( MOC6, [moc-qt6 moc], no, [`dirname $qt6_libdir`/Qt6:$QT6DIR/libexec:$qt6_libexec_dirs:`echo $qt6_libdirs | $SED -e 's/ /:/g'`:$PATH])
if test "$MOC6" = "no"; then
AC_MSG_ERROR([Qt Meta Object Compiler not found. Please specify
the root of your Qt installation by exporting QT6DIR before running "configure".])
diff --git a/solenv/gbuild/platform/com_GCC_defs.mk b/solenv/gbuild/platform/com_GCC_defs.mk
index 8f99e91..cbcc408 100644
--- a/solenv/gbuild/platform/com_GCC_defs.mk
+++ b/solenv/gbuild/platform/com_GCC_defs.mk
@@ -75,7 +75,7 @@ gb_CFLAGS_COMMON := \
-fmessage-length=0 \
-fno-common \
-pipe \
- $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) \
+ $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong) \
gb_CXXFLAGS_COMMON := \
-Wall \
@@ -91,7 +91,7 @@ gb_CXXFLAGS_COMMON := \
-fmessage-length=0 \
-fno-common \
-pipe \
- $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong) \
+ $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong) \
ifeq ($(HAVE_WDEPRECATED_COPY_DTOR),TRUE)
gb_CXXFLAGS_COMMON += -Wdeprecated-copy-dtor
@@ -157,7 +157,7 @@ endif
gb_VISIBILITY_FLAGS_CXX := -fvisibility-inlines-hidden
gb_CXXFLAGS_COMMON += $(gb_VISIBILITY_FLAGS_CXX)
-gb_LinkTarget_LDFLAGS += $(if $(filter EMSCRIPTEN,$(OS)),-fno-stack-protector,-fstack-protector-strong)
+gb_LinkTarget_LDFLAGS += $(if $(or $(filter EMSCRIPTEN,$(OS)),$(filter HAIKU,$(OS))),-fno-stack-protector,-fstack-protector-strong)
ifneq ($(gb_ENABLE_PCH),)
ifeq ($(COM_IS_CLANG),TRUE)
--
2.42.0
From 3d987e447e8fadd67a1ff753d49c18de13fcac54 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 20 Aug 2021 23:33:13 +1000
Subject: Qt::Popup window handling
diff --git a/vcl/qt5/QtFrame.cxx b/vcl/qt5/QtFrame.cxx
index 08d2062..beef21f 100644
--- a/vcl/qt5/QtFrame.cxx
+++ b/vcl/qt5/QtFrame.cxx
@@ -143,7 +143,7 @@ QtFrame::QtFrame(QtFrame* pParent, SalFrameStyleFlags nStyle, bool bUseCairo)
else if ((nStyle & SalFrameStyleFlags::FLOAT)
&& (nStyle & SalFrameStyleFlags::OWNERDRAWDECORATION))
aWinFlags = Qt::Tool | Qt::FramelessWindowHint;
- else if (nStyle & SalFrameStyleFlags::TOOLTIP)
+ else if (nStyle & (nStyle & SalFrameStyleFlags::FLOAT | SalFrameStyleFlags::TOOLTIP))
aWinFlags = Qt::ToolTip;
// Can't use Qt::Popup, because it grabs the input focus and generates a focus-out event,
// instantly auto-closing the LO's editable ComboBox popup.
@@ -206,7 +206,7 @@ void QtFrame::FillSystemEnvData(SystemEnvData& rData, sal_IntPtr pWindow, QWidge
rData.platform = SystemEnvData::Platform::Wayland;
else if (QGuiApplication::platformName() == "xcb")
rData.platform = SystemEnvData::Platform::Xcb;
- else if (QGuiApplication::platformName() == "wasm")
+ else if (QGuiApplication::platformName() == "wasm" || QGuiApplication::platformName() == "haiku")
rData.platform = SystemEnvData::Platform::WASM;
else
{
diff --git a/vcl/qt5/QtWidget.cxx b/vcl/qt5/QtWidget.cxx
index 83ada78..340c357 100644
--- a/vcl/qt5/QtWidget.cxx
+++ b/vcl/qt5/QtWidget.cxx
@@ -184,9 +184,11 @@ void QtWidget::handleMouseButtonEvent(const QtFrame& rFrame, const QMouseEvent*
void QtWidget::mousePressEvent(QMouseEvent* pEvent)
{
handleMouseButtonEvent(m_rFrame, pEvent);
+#ifndef __HAIKU__
if (m_rFrame.isPopup()
&& !geometry().translated(geometry().topLeft() * -1).contains(pEvent->pos()))
closePopup();
+#endif
}
void QtWidget::mouseReleaseEvent(QMouseEvent* pEvent) { handleMouseButtonEvent(m_rFrame, pEvent); }
--
2.42.0
From 08b5964034965c4f253c47e5e8df743380984ba2 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Wed, 4 May 2022 21:46:48 +1000
Subject: Use Noto Sans as default font
diff --git a/unotools/source/config/fontcfg.cxx b/unotools/source/config/fontcfg.cxx
index beeba82..526249d 100644
--- a/unotools/source/config/fontcfg.cxx
+++ b/unotools/source/config/fontcfg.cxx
@@ -229,6 +229,11 @@ OUString DefaultFontConfiguration::getUserInterfaceFont( const LanguageTag& rLan
if( !aUIFont.isEmpty() )
return aUIFont;
+#ifdef __HAIKU__
+ static constexpr OUStringLiteral HAIKU_UI_SANS = u"Noto Sans Display";
+ return HAIKU_UI_SANS;
+#endif
+
// fallback mechanism (either no configuration or no entry in configuration
static constexpr OUStringLiteral FALLBACKFONT_UI_SANS = u"Andale Sans UI;Albany;Albany AMT;Tahoma;Arial Unicode MS;Arial;Nimbus Sans L;Bitstream Vera Sans;gnu-unifont;Interface User;Geneva;WarpSans;Dialog;Swiss;Lucida;Helvetica;Charcoal;Chicago;MS Sans Serif;Helv;Times;Times New Roman;Interface System";
--
2.42.0
From 5fab52bb11c8f00f6ab08f703d721e16230f02dc Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Fri, 6 May 2022 10:55:46 +1000
Subject: Use system font
diff --git a/vcl/source/app/settings.cxx b/vcl/source/app/settings.cxx
index a0385c4..36deeab 100644
--- a/vcl/source/app/settings.cxx
+++ b/vcl/source/app/settings.cxx
@@ -25,6 +25,12 @@
#include <win/svsys.h>
#endif
+#ifdef __HAIKU__
+#include <kernel/image.h>
+#include <Application.h>
+#include <Font.h>
+#endif
+
#include <comphelper/processfactory.hxx>
#include <rtl/bootstrap.hxx>
@@ -636,10 +642,23 @@ void ImplStyleData::SetStandardStyles()
vcl::Font aStdFont( FAMILY_SWISS, Size( 0, 8 ) );
aStdFont.SetCharSet( osl_getThreadTextEncoding() );
aStdFont.SetWeight( WEIGHT_NORMAL );
+#ifdef __HAIKU__
+ if (be_app) {
+ font_family plainFontFamily;
+ font_style plainFontStyle;
+ be_plain_font->GetFamilyAndStyle(&plainFontFamily, &plainFontStyle);
+ aStdFont.SetFamilyName(OStringToOUString(std::string_view(plainFontFamily), osl_getThreadTextEncoding()));
+ aStdFont.SetStyleName(OStringToOUString(std::string_view(plainFontStyle), osl_getThreadTextEncoding()));
+ } else {
+ aStdFont.SetFamilyName("Noto Sans Display");
+ }
+#else
if (!utl::ConfigManager::IsFuzzing())
aStdFont.SetFamilyName(utl::DefaultFontConfiguration::get().getUserInterfaceFont(LanguageTag("en")));
else
aStdFont.SetFamilyName("Liberation Sans");
+#endif
+
maAppFont = aStdFont;
maHelpFont = aStdFont;
maMenuFont = aStdFont;
--
2.42.0
From 19ce4c24d457d1700bab69bc2fd1a9fe6ca4d3f4 Mon Sep 17 00:00:00 2001
From: Gerasim Troeglazov <3dEyes@gmail.com>
Date: Tue, 17 Oct 2023 13:36:15 +1000
Subject: Don't use Cairo
diff --git a/vcl/qt5/QtInstance.cxx b/vcl/qt5/QtInstance.cxx
index df3df5d..25faac0 100644
--- a/vcl/qt5/QtInstance.cxx
+++ b/vcl/qt5/QtInstance.cxx
@@ -751,7 +751,11 @@ void QtInstance::setActivePopup(QtFrame* pFrame)
extern "C" {
VCLPLUG_QT_PUBLIC SalInstance* create_SalInstance()
{
+#ifdef __HAIKU__
+ static const bool bUseCairo = false;
+#else
static const bool bUseCairo = (nullptr == getenv("SAL_VCL_QT_USE_QFONT"));
+#endif
std::unique_ptr<char* []> pFakeArgv;
std::unique_ptr<int> pFakeArgc;
--
2.42.0