@ -0,0 +1,9 @@
|
|||||||
|
SOURCES/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
|
||||||
|
SOURCES/185d60944ea767075d27247c3162b3bc-unowinreg.dll
|
||||||
|
SOURCES/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
|
||||||
|
SOURCES/dtoa-20180411.tgz
|
||||||
|
SOURCES/f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
|
||||||
|
SOURCES/gpgkey-C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3.gpg.asc
|
||||||
|
SOURCES/libreoffice-7.1.8.1.tar.xz
|
||||||
|
SOURCES/libreoffice-help-7.1.8.1.tar.xz
|
||||||
|
SOURCES/libreoffice-translations-7.1.8.1.tar.xz
|
@ -0,0 +1,9 @@
|
|||||||
|
7168b0f40aa5c72267899601c116d2348d2f56ec SOURCES/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
|
||||||
|
0619ed3a89644bef318df67db12045b2b590585b SOURCES/185d60944ea767075d27247c3162b3bc-unowinreg.dll
|
||||||
|
2d49e11b0b711970f494294dc3698f05eb294853 SOURCES/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
|
||||||
|
083509db5ad9d1680830be9add727d58b54ca0d3 SOURCES/dtoa-20180411.tgz
|
||||||
|
dd55efd721df8a013709e27836bdf26623e5320e SOURCES/f543e6e2d7275557a839a164941c0a86e5f2c3f2a0042bfc434c88c6dde9e140-opens___.ttf
|
||||||
|
7b5fd93d787fbc6d9c2d4025d543730ee8dc4559 SOURCES/gpgkey-C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3.gpg.asc
|
||||||
|
58642377b80001f41884b2fff3d74fe66426b182 SOURCES/libreoffice-7.1.8.1.tar.xz
|
||||||
|
48afe3a1a30861904bf31b387d6bc56360f5ac19 SOURCES/libreoffice-help-7.1.8.1.tar.xz
|
||||||
|
cb1238f7b182c8bfb16086d2eb9305b43b8a6d16 SOURCES/libreoffice-translations-7.1.8.1.tar.xz
|
@ -0,0 +1,69 @@
|
|||||||
|
From 26c9da40d44f1469df97398362667c74553be7d2 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Mon, 20 Dec 2021 17:05:44 +0000
|
||||||
|
Subject: [PATCH] only use X509Data
|
||||||
|
|
||||||
|
Change-Id: I52e6588f5fac04bb26d77c1f3af470db73e41f72
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127193
|
||||||
|
Tested-by: Jenkins
|
||||||
|
Reviewed-by: Miklos Vajna <vmiklos@collabora.com>
|
||||||
|
(cherry picked from commit be446d81e07b5499152efeca6ca23034e51ea5ff)
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/127178
|
||||||
|
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
|
||||||
|
(cherry picked from commit b0404f80577de9ff69e58390c6f6ef949fdb0139)
|
||||||
|
---
|
||||||
|
.../source/xmlsec/mscrypt/xmlsignature_mscryptimpl.cxx | 6 ++++++
|
||||||
|
xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx | 6 ++++++
|
||||||
|
2 files changed, 12 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/xmlsecurity/source/xmlsec/mscrypt/xmlsignature_mscryptimpl.cxx b/xmlsecurity/source/xmlsec/mscrypt/xmlsignature_mscryptimpl.cxx
|
||||||
|
index c699c950f351..9f816479f9dd 100644
|
||||||
|
--- a/xmlsecurity/source/xmlsec/mscrypt/xmlsignature_mscryptimpl.cxx
|
||||||
|
+++ b/xmlsecurity/source/xmlsec/mscrypt/xmlsignature_mscryptimpl.cxx
|
||||||
|
@@ -22,6 +22,8 @@
|
||||||
|
#include <rtl/uuid.h>
|
||||||
|
#include <xmlsec-wrapper.h>
|
||||||
|
|
||||||
|
+#include <xmlsec/mscng/x509.h>
|
||||||
|
+
|
||||||
|
#include <com/sun/star/xml/crypto/SecurityOperationStatus.hpp>
|
||||||
|
#include <com/sun/star/xml/crypto/XXMLSignature.hpp>
|
||||||
|
|
||||||
|
@@ -233,6 +235,10 @@ SAL_CALL XMLSignature_MSCryptImpl::validate(
|
||||||
|
// We do certificate verification ourselves.
|
||||||
|
pDsigCtx->keyInfoReadCtx.flags |= XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS;
|
||||||
|
|
||||||
|
+ // limit possible key data to valid X509 certificates only, no KeyValues
|
||||||
|
+ if (xmlSecPtrListAdd(&(pDsigCtx->keyInfoReadCtx.enabledKeyData), BAD_CAST xmlSecMSCngKeyDataX509GetKlass()) < 0)
|
||||||
|
+ throw RuntimeException("failed to limit allowed key data");
|
||||||
|
+
|
||||||
|
//Verify signature
|
||||||
|
//The documentation says that the signature is only valid if the return value is 0 (that is, not < 0)
|
||||||
|
//AND pDsigCtx->status == xmlSecDSigStatusSucceeded. That is, we must not make any assumptions, if
|
||||||
|
diff --git a/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx b/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx
|
||||||
|
index b41d754f7407..975c17272dc7 100644
|
||||||
|
--- a/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx
|
||||||
|
+++ b/xmlsecurity/source/xmlsec/nss/xmlsignature_nssimpl.cxx
|
||||||
|
@@ -20,6 +20,8 @@
|
||||||
|
#include <sal/config.h>
|
||||||
|
#include <xmlsec-wrapper.h>
|
||||||
|
|
||||||
|
+#include <xmlsec/nss/x509.h>
|
||||||
|
+
|
||||||
|
#include <xmlelementwrapper_xmlsecimpl.hxx>
|
||||||
|
#include <xmlsec/xmlstreamio.hxx>
|
||||||
|
#include <xmlsec/errorcallback.hxx>
|
||||||
|
@@ -247,6 +249,10 @@ SAL_CALL XMLSignature_NssImpl::validate(
|
||||||
|
// We do certificate verification ourselves.
|
||||||
|
pDsigCtx->keyInfoReadCtx.flags |= XMLSEC_KEYINFO_FLAGS_X509DATA_DONT_VERIFY_CERTS;
|
||||||
|
|
||||||
|
+ // limit possible key data to valid X509 certificates only, no KeyValues
|
||||||
|
+ if (xmlSecPtrListAdd(&(pDsigCtx->keyInfoReadCtx.enabledKeyData), BAD_CAST xmlSecNssKeyDataX509GetKlass()) < 0)
|
||||||
|
+ throw RuntimeException("failed to limit allowed key data");
|
||||||
|
+
|
||||||
|
//Verify signature
|
||||||
|
int rs = xmlSecDSigCtxVerify( pDsigCtx.get() , pNode );
|
||||||
|
|
||||||
|
--
|
||||||
|
2.35.1
|
||||||
|
|
@ -0,0 +1,53 @@
|
|||||||
|
From 3925cf39742ebee935498b14571f13f3e8b64b49 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Sat, 19 Feb 2022 20:43:33 +0000
|
||||||
|
Subject: [PATCH] EditTextObjectImpl copy ctor doesn't exactly copy
|
||||||
|
EditTextObjectImpl
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
and this is apparently relied on, so eliding the copy gives unexpected
|
||||||
|
results.
|
||||||
|
|
||||||
|
EditTextObjectImpl::Clone returns a copy of *this, but the
|
||||||
|
EditTextObjectImpl copy ctor explicitly does not copy the "PortionInfo"
|
||||||
|
member, so in:
|
||||||
|
|
||||||
|
commit fb8973f31f111229be5184f4e4223e963ced2c7b
|
||||||
|
Author: Caolán McNamara <caolanm@redhat.com>
|
||||||
|
Date: Sat Oct 10 19:21:38 2020 +0100
|
||||||
|
|
||||||
|
ofz#23492 the only user of this ctor throws away the original of the clone
|
||||||
|
|
||||||
|
so we can take ownership of the original instead
|
||||||
|
|
||||||
|
where the copy was optimized away we want from a state where there was a
|
||||||
|
new EditTextObjectImpl with an empty PortionInfo member to one where the
|
||||||
|
PortionInfo of the EditTextObjectImpl was retained.
|
||||||
|
|
||||||
|
So explicitly clear this unwanted info.
|
||||||
|
|
||||||
|
It's very hard to make rational judgements about code if a copy behaves
|
||||||
|
differently than the orignal :-(
|
||||||
|
|
||||||
|
Change-Id: I642d60841d6bdccbf830f8a2ccdbd9f542a8aa18
|
||||||
|
---
|
||||||
|
editeng/source/outliner/outliner.cxx | 1 +
|
||||||
|
1 file changed, 1 insertion(+)
|
||||||
|
|
||||||
|
diff --git a/editeng/source/outliner/outliner.cxx b/editeng/source/outliner/outliner.cxx
|
||||||
|
index 9c474131352c..d48e4a542723 100644
|
||||||
|
--- a/editeng/source/outliner/outliner.cxx
|
||||||
|
+++ b/editeng/source/outliner/outliner.cxx
|
||||||
|
@@ -383,6 +383,7 @@ std::unique_ptr<OutlinerParaObject> Outliner::CreateParaObject( sal_Int32 nStart
|
||||||
|
aParagraphDataVector[nPara-nStartPara] = *GetParagraph(nPara);
|
||||||
|
}
|
||||||
|
|
||||||
|
+ xText->ClearPortionInfo(); // tdf#147166 the PortionInfo is unwanted here
|
||||||
|
std::unique_ptr<OutlinerParaObject> pPObj(new OutlinerParaObject(std::move(xText), aParagraphDataVector, bIsEditDoc));
|
||||||
|
pPObj->SetOutlinerMode(GetMode());
|
||||||
|
|
||||||
|
--
|
||||||
|
2.35.1
|
||||||
|
|
@ -0,0 +1,162 @@
|
|||||||
|
From 366e9237399a948d2ef616b758d390bd7d0978a5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stephan Bergmann <sbergman@redhat.com>
|
||||||
|
Date: Mon, 31 May 2021 09:36:28 +0200
|
||||||
|
Subject: [PATCH] Replace inet_ntoa with inet_ntop
|
||||||
|
|
||||||
|
...as inet_ntoa is potentially not thread-safe; and add a test
|
||||||
|
|
||||||
|
Change-Id: I9df945b006ba7194c3b1444c4886101c08339ad0
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116425
|
||||||
|
Tested-by: Jenkins
|
||||||
|
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
||||||
|
(cherry picked from commit 33bf4f0bcf941ee4609f558442035514f54cbc8a)
|
||||||
|
|
||||||
|
and
|
||||||
|
|
||||||
|
Replace inet_addr with inet_pton
|
||||||
|
|
||||||
|
...as inet_addr is deprecated (it does not allow to distinguish successful
|
||||||
|
return for "255.255.255.255" from -1 error return); and update tests
|
||||||
|
|
||||||
|
Change-Id: I605cb2ba18fe9bd11d2d68c8f1c94271c4503509
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116441
|
||||||
|
Tested-by: Jenkins
|
||||||
|
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
||||||
|
(cherry picked from commit 1fef071c01caf6c293dd941ee7c8340e6894afc3)
|
||||||
|
|
||||||
|
fix leak in SocketTest
|
||||||
|
|
||||||
|
Change-Id: I8c5e2d4c4687beab08876fe3e945d19a1629bc36
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116514
|
||||||
|
Tested-by: Jenkins
|
||||||
|
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
||||||
|
(cherry picked from commit 313eaf979ea2d69e4ffa88a5e87cc09ffe0ff088)
|
||||||
|
---
|
||||||
|
sal/CppunitTest_sal_osl.mk | 1 +
|
||||||
|
sal/osl/unx/socket.cxx | 16 +++++++----
|
||||||
|
sal/qa/osl/socket.cxx | 58 ++++++++++++++++++++++++++++++++++++++
|
||||||
|
3 files changed, 70 insertions(+), 5 deletions(-)
|
||||||
|
create mode 100644 sal/qa/osl/socket.cxx
|
||||||
|
|
||||||
|
diff --git a/sal/CppunitTest_sal_osl.mk b/sal/CppunitTest_sal_osl.mk
|
||||||
|
index 2e4b77509f56..d8c2627d9e0f 100644
|
||||||
|
--- a/sal/CppunitTest_sal_osl.mk
|
||||||
|
+++ b/sal/CppunitTest_sal_osl.mk
|
||||||
|
@@ -23,6 +23,7 @@ $(eval $(call gb_CppunitTest_add_exception_objects,sal_osl,\
|
||||||
|
sal/qa/osl/process/osl_Thread \
|
||||||
|
sal/qa/osl/profile/osl_old_testprofile \
|
||||||
|
sal/qa/osl/setthreadname/test-setthreadname \
|
||||||
|
+ sal/qa/osl/socket \
|
||||||
|
))
|
||||||
|
|
||||||
|
$(eval $(call gb_CppunitTest_use_libraries,sal_osl,\
|
||||||
|
diff --git a/sal/osl/unx/socket.cxx b/sal/osl/unx/socket.cxx
|
||||||
|
index 56a8f6cd63ac..9fafc6d1db81 100644
|
||||||
|
--- a/sal/osl/unx/socket.cxx
|
||||||
|
+++ b/sal/osl/unx/socket.cxx
|
||||||
|
@@ -437,7 +437,10 @@ oslSocketAddr SAL_CALL osl_createInetBroadcastAddr (
|
||||||
|
&pDottedAddr, strDottedAddr->buffer, strDottedAddr->length,
|
||||||
|
RTL_TEXTENCODING_UTF8, OUSTRING_TO_OSTRING_CVTFLAGS);
|
||||||
|
|
||||||
|
- nAddr = inet_addr (pDottedAddr->buffer);
|
||||||
|
+ in_addr buf;
|
||||||
|
+ if (inet_pton (AF_INET, pDottedAddr->buffer, &buf) == 1) {
|
||||||
|
+ nAddr = buf.s_addr;
|
||||||
|
+ }
|
||||||
|
rtl_string_release (pDottedAddr);
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -505,11 +508,11 @@ oslSocketAddr osl_psz_createInetSocketAddr (
|
||||||
|
sal_Int32 Port)
|
||||||
|
{
|
||||||
|
oslSocketAddr pAddr = nullptr;
|
||||||
|
- sal_Int32 Addr = inet_addr(pszDottedAddr);
|
||||||
|
- if(Addr != -1)
|
||||||
|
+ in_addr buf;
|
||||||
|
+ if(inet_pton(AF_INET, pszDottedAddr, &buf) == 1)
|
||||||
|
{
|
||||||
|
/* valid dotted addr */
|
||||||
|
- pAddr = createSocketAddrWithFamily( osl_Socket_FamilyInet, htons(Port) , Addr );
|
||||||
|
+ pAddr = createSocketAddrWithFamily( osl_Socket_FamilyInet, htons(Port) , buf.s_addr );
|
||||||
|
}
|
||||||
|
return pAddr;
|
||||||
|
}
|
||||||
|
@@ -1090,7 +1093,10 @@ oslSocketResult SAL_CALL osl_getDottedInetAddrOfSocketAddr(oslSocketAddr Addr, r
|
||||||
|
return osl_Socket_Error;
|
||||||
|
}
|
||||||
|
|
||||||
|
- rtl_uString_newFromAscii(ustrDottedInetAddr,inet_ntoa(pSystemInetAddr->sin_addr));
|
||||||
|
+ char buf[INET_ADDRSTRLEN];
|
||||||
|
+ auto const text = inet_ntop(AF_INET, &pSystemInetAddr->sin_addr, buf, INET_ADDRSTRLEN);
|
||||||
|
+ assert(text != nullptr);
|
||||||
|
+ rtl_uString_newFromAscii(ustrDottedInetAddr,text);
|
||||||
|
|
||||||
|
return osl_Socket_Ok;
|
||||||
|
|
||||||
|
diff --git a/sal/qa/osl/socket.cxx b/sal/qa/osl/socket.cxx
|
||||||
|
new file mode 100644
|
||||||
|
index 000000000000..ed31c9ede7ae
|
||||||
|
--- /dev/null
|
||||||
|
+++ b/sal/qa/osl/socket.cxx
|
||||||
|
@@ -0,0 +1,58 @@
|
||||||
|
+/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4; fill-column: 100 -*- */
|
||||||
|
+/*
|
||||||
|
+ * 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/.
|
||||||
|
+ */
|
||||||
|
+
|
||||||
|
+#include <cppunit/TestAssert.h>
|
||||||
|
+#include <cppunit/TestFixture.h>
|
||||||
|
+#include <cppunit/extensions/HelperMacros.h>
|
||||||
|
+
|
||||||
|
+#include <osl/socket.h>
|
||||||
|
+#include <rtl/ustring.hxx>
|
||||||
|
+
|
||||||
|
+namespace
|
||||||
|
+{
|
||||||
|
+class SocketTest : public CppUnit::TestFixture
|
||||||
|
+{
|
||||||
|
+ CPPUNIT_TEST_SUITE(SocketTest);
|
||||||
|
+ CPPUNIT_TEST(test_createInetSocketAddr);
|
||||||
|
+ CPPUNIT_TEST(test_createInetBroadcastAddr);
|
||||||
|
+ CPPUNIT_TEST_SUITE_END();
|
||||||
|
+
|
||||||
|
+ void test_createInetSocketAddr()
|
||||||
|
+ {
|
||||||
|
+ OUString const in("123.4.56.78");
|
||||||
|
+ auto const addr = osl_createInetSocketAddr(in.pData, 100);
|
||||||
|
+ CPPUNIT_ASSERT(addr != nullptr);
|
||||||
|
+ CPPUNIT_ASSERT_EQUAL(osl_Socket_FamilyInet, osl_getFamilyOfSocketAddr(addr));
|
||||||
|
+ OUString out;
|
||||||
|
+ auto const res = osl_getDottedInetAddrOfSocketAddr(addr, &out.pData);
|
||||||
|
+ CPPUNIT_ASSERT_EQUAL(osl_Socket_Ok, res);
|
||||||
|
+ CPPUNIT_ASSERT_EQUAL(in, out);
|
||||||
|
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(100), osl_getInetPortOfSocketAddr(addr));
|
||||||
|
+ osl_destroySocketAddr(addr);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ void test_createInetBroadcastAddr()
|
||||||
|
+ {
|
||||||
|
+ OUString const in("123.4.56.78");
|
||||||
|
+ auto const addr = osl_createInetBroadcastAddr(in.pData, 100);
|
||||||
|
+ CPPUNIT_ASSERT(addr != nullptr);
|
||||||
|
+ CPPUNIT_ASSERT_EQUAL(osl_Socket_FamilyInet, osl_getFamilyOfSocketAddr(addr));
|
||||||
|
+ OUString out;
|
||||||
|
+ auto const res = osl_getDottedInetAddrOfSocketAddr(addr, &out.pData);
|
||||||
|
+ CPPUNIT_ASSERT_EQUAL(osl_Socket_Ok, res);
|
||||||
|
+ CPPUNIT_ASSERT_EQUAL(OUString("123.255.255.255"), out);
|
||||||
|
+ CPPUNIT_ASSERT_EQUAL(sal_Int32(100), osl_getInetPortOfSocketAddr(addr));
|
||||||
|
+ osl_destroySocketAddr(addr);
|
||||||
|
+ }
|
||||||
|
+};
|
||||||
|
+
|
||||||
|
+CPPUNIT_TEST_SUITE_REGISTRATION(SocketTest);
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
+/* vim:set shiftwidth=4 softtabstop=4 expandtab cinoptions=b1,g0,N-s cinkeys+=0=break: */
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 87b90b6fbf010effd44ef0e2bd3d75b27562a82b Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Mon, 27 Mar 2017 11:47:01 +0100
|
||||||
|
Subject: [PATCH] Resolves: rhbz#1432468 disable opencl by default
|
||||||
|
|
||||||
|
Change-Id: Ie037fcabdd219f195425979dd721501fb5527573
|
||||||
|
---
|
||||||
|
officecfg/registry/schema/org/openoffice/Office/Common.xcs | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
|
||||||
|
index 99b4104f6499..ef7ada84c2f3 100644
|
||||||
|
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
|
||||||
|
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
|
||||||
|
@@ -5652,7 +5652,7 @@
|
||||||
|
<desc>Determines whether OpenCL can be used, when available, to speed up
|
||||||
|
some operations.</desc>
|
||||||
|
</info>
|
||||||
|
- <value>true</value>
|
||||||
|
+ <value>false</value>
|
||||||
|
</prop>
|
||||||
|
<prop oor:name="OpenCLDenyList" oor:type="oor:string-list" oor:nillable="false">
|
||||||
|
<!-- UIHints: Tools - Options General OpenCL -->
|
||||||
|
--
|
||||||
|
2.29.2
|
||||||
|
|
@ -0,0 +1,51 @@
|
|||||||
|
From 1dbfd248524789efa4a84dc94d56a229c19bc0b9 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Wed, 4 May 2022 11:52:58 +0100
|
||||||
|
Subject: [PATCH] Resolves: rhbz#2081661 gtk-critical
|
||||||
|
gtk_tree_view_scroll_to_cell assertion
|
||||||
|
|
||||||
|
Change-Id: I4c7c4caed907072ef3a73ccfafabe882d618fa0e
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/133730
|
||||||
|
Tested-by: Jenkins
|
||||||
|
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
|
||||||
|
(cherry picked from commit 816435e4c2d52615462670464c48689bebdf1e55)
|
||||||
|
---
|
||||||
|
cui/source/customize/SvxMenuConfigPage.cxx | 2 +-
|
||||||
|
cui/source/customize/SvxToolbarConfigPage.cxx | 6 ++++--
|
||||||
|
2 files changed, 5 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/cui/source/customize/SvxMenuConfigPage.cxx b/cui/source/customize/SvxMenuConfigPage.cxx
|
||||||
|
index 34cee1368d7a..bf7457193f5c 100644
|
||||||
|
--- a/cui/source/customize/SvxMenuConfigPage.cxx
|
||||||
|
+++ b/cui/source/customize/SvxMenuConfigPage.cxx
|
||||||
|
@@ -136,7 +136,7 @@ void SvxMenuConfigPage::Init()
|
||||||
|
|
||||||
|
ReloadTopLevelListBox();
|
||||||
|
|
||||||
|
- m_xTopLevelListBox->set_active(0);
|
||||||
|
+ m_xTopLevelListBox->set_active(m_xTopLevelListBox->get_count() ? 0 : -1);
|
||||||
|
SelectElement();
|
||||||
|
|
||||||
|
m_xCommandCategoryListBox->Init(comphelper::getProcessComponentContext(), m_xFrame,
|
||||||
|
diff --git a/cui/source/customize/SvxToolbarConfigPage.cxx b/cui/source/customize/SvxToolbarConfigPage.cxx
|
||||||
|
index 99a85d82f96e..d2284428d8f1 100644
|
||||||
|
--- a/cui/source/customize/SvxToolbarConfigPage.cxx
|
||||||
|
+++ b/cui/source/customize/SvxToolbarConfigPage.cxx
|
||||||
|
@@ -246,10 +246,12 @@ void SvxToolbarConfigPage::Init()
|
||||||
|
|
||||||
|
ReloadTopLevelListBox();
|
||||||
|
|
||||||
|
- sal_Int32 nPos = 0;
|
||||||
|
+ sal_Int32 nCount = m_xTopLevelListBox->get_count();
|
||||||
|
+ sal_Int32 nPos = nCount > 0 ? 0 : -1;
|
||||||
|
+
|
||||||
|
if (!m_aURLToSelect.isEmpty())
|
||||||
|
{
|
||||||
|
- for (sal_Int32 i = 0, nCount = m_xTopLevelListBox->get_count(); i < nCount; ++i)
|
||||||
|
+ for (sal_Int32 i = 0; i < nCount; ++i)
|
||||||
|
{
|
||||||
|
SvxConfigEntry* pData
|
||||||
|
= reinterpret_cast<SvxConfigEntry*>(m_xTopLevelListBox->get_id(i).toInt64());
|
||||||
|
--
|
||||||
|
2.35.1
|
||||||
|
|
@ -0,0 +1,123 @@
|
|||||||
|
From 197efb35e6f9661ecbeac2897d36a25bc2f6433e Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Sun, 14 Nov 2021 14:59:38 +0000
|
||||||
|
Subject: [PATCH] Resolves: tdf#140250 don't share adjustments between
|
||||||
|
differerent spinbuttons
|
||||||
|
|
||||||
|
Change-Id: Ib684c746ff3176cf45ea9364efc12f2d6dde1f70
|
||||||
|
---
|
||||||
|
cui/uiconfig/ui/breaknumberoption.ui | 18 ++++++++++++++++--
|
||||||
|
cui/uiconfig/ui/calloutpage.ui | 14 ++++++++++++--
|
||||||
|
svx/uiconfig/ui/sidebareffect.ui | 7 ++++++-
|
||||||
|
3 files changed, 34 insertions(+), 5 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/cui/uiconfig/ui/breaknumberoption.ui b/cui/uiconfig/ui/breaknumberoption.ui
|
||||||
|
index 2641babeeb5d..23fe294ec702 100644
|
||||||
|
--- a/cui/uiconfig/ui/breaknumberoption.ui
|
||||||
|
+++ b/cui/uiconfig/ui/breaknumberoption.ui
|
||||||
|
@@ -9,6 +9,20 @@
|
||||||
|
<property name="step_increment">1</property>
|
||||||
|
<property name="page_increment">10</property>
|
||||||
|
</object>
|
||||||
|
+ <object class="GtkAdjustment" id="adjustment2">
|
||||||
|
+ <property name="lower">2</property>
|
||||||
|
+ <property name="upper">9</property>
|
||||||
|
+ <property name="value">1</property>
|
||||||
|
+ <property name="step_increment">1</property>
|
||||||
|
+ <property name="page_increment">10</property>
|
||||||
|
+ </object>
|
||||||
|
+ <object class="GtkAdjustment" id="adjustment3">
|
||||||
|
+ <property name="lower">2</property>
|
||||||
|
+ <property name="upper">9</property>
|
||||||
|
+ <property name="value">1</property>
|
||||||
|
+ <property name="step_increment">1</property>
|
||||||
|
+ <property name="page_increment">10</property>
|
||||||
|
+ </object>
|
||||||
|
<object class="GtkDialog" id="BreakNumberOption">
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
<property name="border_width">6</property>
|
||||||
|
@@ -134,7 +148,7 @@
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="activates_default">True</property>
|
||||||
|
- <property name="adjustment">adjustment1</property>
|
||||||
|
+ <property name="adjustment">adjustment2</property>
|
||||||
|
<property name="truncate-multiline">True</property>
|
||||||
|
<child internal-child="accessible">
|
||||||
|
<object class="AtkObject" id="afterbreak-atkobject">
|
||||||
|
@@ -179,7 +193,7 @@
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="halign">start</property>
|
||||||
|
<property name="activates_default">True</property>
|
||||||
|
- <property name="adjustment">adjustment1</property>
|
||||||
|
+ <property name="adjustment">adjustment3</property>
|
||||||
|
<property name="truncate-multiline">True</property>
|
||||||
|
<child internal-child="accessible">
|
||||||
|
<object class="AtkObject" id="wordlength-atkobject">
|
||||||
|
diff --git a/cui/uiconfig/ui/calloutpage.ui b/cui/uiconfig/ui/calloutpage.ui
|
||||||
|
index 87d4eff64eb4..00898dc3390c 100644
|
||||||
|
--- a/cui/uiconfig/ui/calloutpage.ui
|
||||||
|
+++ b/cui/uiconfig/ui/calloutpage.ui
|
||||||
|
@@ -7,6 +7,16 @@
|
||||||
|
<property name="step_increment">0.5</property>
|
||||||
|
<property name="page_increment">10</property>
|
||||||
|
</object>
|
||||||
|
+ <object class="GtkAdjustment" id="adjustment2">
|
||||||
|
+ <property name="upper">2400</property>
|
||||||
|
+ <property name="step_increment">0.5</property>
|
||||||
|
+ <property name="page_increment">10</property>
|
||||||
|
+ </object>
|
||||||
|
+ <object class="GtkAdjustment" id="adjustment3">
|
||||||
|
+ <property name="upper">2400</property>
|
||||||
|
+ <property name="step_increment">0.5</property>
|
||||||
|
+ <property name="page_increment">10</property>
|
||||||
|
+ </object>
|
||||||
|
<object class="GtkBox" id="CalloutPage">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
<property name="can_focus">False</property>
|
||||||
|
@@ -231,7 +241,7 @@
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="activates_default">True</property>
|
||||||
|
<property name="text">0.00</property>
|
||||||
|
- <property name="adjustment">adjustment1</property>
|
||||||
|
+ <property name="adjustment">adjustment2</property>
|
||||||
|
<property name="digits">2</property>
|
||||||
|
<property name="truncate-multiline">True</property>
|
||||||
|
<child internal-child="accessible">
|
||||||
|
@@ -277,7 +287,7 @@
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="activates_default">True</property>
|
||||||
|
<property name="text">0.00</property>
|
||||||
|
- <property name="adjustment">adjustment1</property>
|
||||||
|
+ <property name="adjustment">adjustment3</property>
|
||||||
|
<property name="digits">2</property>
|
||||||
|
<property name="truncate-multiline">True</property>
|
||||||
|
<child internal-child="accessible">
|
||||||
|
diff --git a/svx/uiconfig/ui/sidebareffect.ui b/svx/uiconfig/ui/sidebareffect.ui
|
||||||
|
index 0e633242cd5c..1e041a2a8726 100644
|
||||||
|
--- a/svx/uiconfig/ui/sidebareffect.ui
|
||||||
|
+++ b/svx/uiconfig/ui/sidebareffect.ui
|
||||||
|
@@ -12,6 +12,11 @@
|
||||||
|
<property name="step_increment">1</property>
|
||||||
|
<property name="page_increment">10</property>
|
||||||
|
</object>
|
||||||
|
+ <object class="GtkAdjustment" id="adjustment3">
|
||||||
|
+ <property name="upper">150</property>
|
||||||
|
+ <property name="step_increment">1</property>
|
||||||
|
+ <property name="page_increment">10</property>
|
||||||
|
+ </object>
|
||||||
|
<!-- n-columns=1 n-rows=1 -->
|
||||||
|
<object class="GtkGrid" id="EffectPropertyPanel">
|
||||||
|
<property name="visible">True</property>
|
||||||
|
@@ -195,7 +200,7 @@
|
||||||
|
<property name="can_focus">True</property>
|
||||||
|
<property name="hexpand">True</property>
|
||||||
|
<property name="truncate-multiline">True</property>
|
||||||
|
- <property name="adjustment">adjustment1</property>
|
||||||
|
+ <property name="adjustment">adjustment3</property>
|
||||||
|
</object>
|
||||||
|
<packing>
|
||||||
|
<property name="left_attach">1</property>
|
||||||
|
--
|
||||||
|
2.33.1
|
||||||
|
|
@ -0,0 +1,63 @@
|
|||||||
|
From ea6cfca48017b76bfeb8898e6d9e47b3011a3add Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Sat, 6 Nov 2021 21:32:21 +0000
|
||||||
|
Subject: [PATCH] Resolves: tdf#145567 restore focus to the usual frame focus
|
||||||
|
widget
|
||||||
|
|
||||||
|
when tearing down the start center. Don't leave the focus in an
|
||||||
|
arbitrary widget.
|
||||||
|
|
||||||
|
Change-Id: I82c30c94121dc43b2ea1b4fbc66a0a3e79f7e664
|
||||||
|
---
|
||||||
|
vcl/unx/gtk3/gtk3gtkinst.cxx | 28 ++++++++++++++++++++++++++++
|
||||||
|
1 file changed, 28 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
|
||||||
|
index a5d233e2f95e..0fddb27aaa2d 100644
|
||||||
|
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
|
||||||
|
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
|
||||||
|
@@ -1899,6 +1899,26 @@ GdkDragAction VclToGdk(sal_Int8 dragOperation)
|
||||||
|
return eRet;
|
||||||
|
}
|
||||||
|
|
||||||
|
+GtkWindow* get_active_window()
|
||||||
|
+{
|
||||||
|
+ GtkWindow* pFocus = nullptr;
|
||||||
|
+
|
||||||
|
+ GList* pList = gtk_window_list_toplevels();
|
||||||
|
+
|
||||||
|
+ for (GList* pEntry = pList; pEntry; pEntry = pEntry->next)
|
||||||
|
+ {
|
||||||
|
+ if (gtk_window_has_toplevel_focus(GTK_WINDOW(pEntry->data)))
|
||||||
|
+ {
|
||||||
|
+ pFocus = GTK_WINDOW(pEntry->data);
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ g_list_free(pList);
|
||||||
|
+
|
||||||
|
+ return pFocus;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
class GtkInstanceWidget : public virtual weld::Widget
|
||||||
|
{
|
||||||
|
protected:
|
||||||
|
@@ -16635,6 +16655,14 @@ private:
|
||||||
|
// rehook handler and let vcl cycle its own way through this widget's
|
||||||
|
// children
|
||||||
|
pFrame->AllowCycleFocusOut();
|
||||||
|
+
|
||||||
|
+ // tdf#145567 if the focus is in this hierarchy then, now that we are tearing down,
|
||||||
|
+ // move focus to the usual focus candidate for the frame
|
||||||
|
+ GtkWindow* pFocusWin = get_active_window();
|
||||||
|
+ GtkWidget* pFocus = pFocusWin ? gtk_window_get_focus(pFocusWin) : nullptr;
|
||||||
|
+ bool bHasFocus = pFocus && gtk_widget_is_ancestor(pFocus, pTopLevel);
|
||||||
|
+ if (bHasFocus)
|
||||||
|
+ pFrame->GrabFocus();
|
||||||
|
}
|
||||||
|
|
||||||
|
static void signalUnmap(GtkWidget*, gpointer user_data)
|
||||||
|
--
|
||||||
|
2.33.1
|
||||||
|
|
@ -0,0 +1,39 @@
|
|||||||
|
From 68a6c70f25762374f7aed0d4d755345c6f37c78d Mon Sep 17 00:00:00 2001
|
||||||
|
From: Stephan Bergmann <sbergman@redhat.com>
|
||||||
|
Date: Mon, 31 May 2021 10:56:38 +0200
|
||||||
|
Subject: [PATCH] Simplify construction of a hardcoded IPv4 address
|
||||||
|
|
||||||
|
Change-Id: I822313ee708935dd4ecb636c13a961fdd054d660
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116434
|
||||||
|
Tested-by: Jenkins
|
||||||
|
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
|
||||||
|
---
|
||||||
|
sd/source/ui/remotecontrol/DiscoveryService.cxx | 12 +-----------
|
||||||
|
1 file changed, 1 insertion(+), 11 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sd/source/ui/remotecontrol/DiscoveryService.cxx b/sd/source/ui/remotecontrol/DiscoveryService.cxx
|
||||||
|
index 9ed2ae727761..cf0043387403 100644
|
||||||
|
--- a/sd/source/ui/remotecontrol/DiscoveryService.cxx
|
||||||
|
+++ b/sd/source/ui/remotecontrol/DiscoveryService.cxx
|
||||||
|
@@ -119,17 +119,7 @@ void DiscoveryService::setupSockets()
|
||||||
|
|
||||||
|
struct ip_mreq multicastRequest;
|
||||||
|
|
||||||
|
-// the Win32 SDK 8.1 deprecates inet_addr()
|
||||||
|
-#if defined(_WIN32)
|
||||||
|
- IN_ADDR addr;
|
||||||
|
- INT ret = InetPtonW(AF_INET, L"239.0.0.1", & addr);
|
||||||
|
- if (1 == ret)
|
||||||
|
- {
|
||||||
|
- multicastRequest.imr_multiaddr.s_addr = addr.S_un.S_addr;
|
||||||
|
- }
|
||||||
|
-#else
|
||||||
|
- multicastRequest.imr_multiaddr.s_addr = inet_addr( "239.0.0.1" );
|
||||||
|
-#endif
|
||||||
|
+ multicastRequest.imr_multiaddr.s_addr = htonl((239U << 24) | 1U); // 239.0.0.1
|
||||||
|
multicastRequest.imr_interface.s_addr = htonl(INADDR_ANY);
|
||||||
|
|
||||||
|
rc = setsockopt( mSocket, IPPROTO_IP, IP_ADD_MEMBERSHIP,
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,143 @@
|
|||||||
|
From 6de192ad5ffe9ec04328bfd178050cb8a33e1cbb Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Wed, 15 Dec 2021 12:46:24 +0000
|
||||||
|
Subject: [PATCH] annocheck warning about missing .note.gnu.property section
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
copy and paste recommendation from:
|
||||||
|
https://sourceware.org/annobin/annobin.html/Test-cf-protection.html
|
||||||
|
|
||||||
|
and adapt like:
|
||||||
|
https://github.com/openssl/openssl/commit/51994e505dbb1cd0dd76869ec962e2948b77b585
|
||||||
|
where https://bugs.ruby-lang.org/attachments/8962 is similar
|
||||||
|
|
||||||
|
Intel docs have "The ENDBR32 and ENDBR64 (collectively ENDBRANCH) are
|
||||||
|
two new instructions that are used to mark valid indirect CALL/JMP
|
||||||
|
target locations in the program."
|
||||||
|
|
||||||
|
Change-Id: Ie867c263a888763db4478720ba189c9ec6cc974d
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/126859
|
||||||
|
Tested-by: Jenkins
|
||||||
|
Tested-by: Caolán McNamara <caolanm@redhat.com>
|
||||||
|
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
||||||
|
(cherry picked from commit af55dc3891f7950d392175004b2090cb0e54828e)
|
||||||
|
---
|
||||||
|
.../source/cpp_uno/gcc3_linux_intel/call.s | 16 ++++++++++++++++
|
||||||
|
.../source/cpp_uno/gcc3_linux_x86-64/call.s | 19 +++++++++++++++++++
|
||||||
|
config_host.mk.in | 1 +
|
||||||
|
configure.ac | 14 ++++++++++++++
|
||||||
|
solenv/gbuild/platform/com_GCC_class.mk | 1 +
|
||||||
|
5 files changed, 51 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/bridges/source/cpp_uno/gcc3_linux_intel/call.s b/bridges/source/cpp_uno/gcc3_linux_intel/call.s
|
||||||
|
index 6be583247733..0a5870defcf3 100644
|
||||||
|
--- a/bridges/source/cpp_uno/gcc3_linux_intel/call.s
|
||||||
|
+++ b/bridges/source/cpp_uno/gcc3_linux_intel/call.s
|
||||||
|
@@ -290,3 +290,19 @@ privateSnippetExecutorClass:
|
||||||
|
.align 4
|
||||||
|
.LEFDEc:
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
+ .section .note.gnu.property,"a"
|
||||||
|
+ .p2align 2
|
||||||
|
+ .long 1f - 0f
|
||||||
|
+ .long 4f - 1f
|
||||||
|
+ .long 5
|
||||||
|
+0:
|
||||||
|
+ .string "GNU"
|
||||||
|
+1:
|
||||||
|
+ .p2align 2
|
||||||
|
+ .long 0xc0000002
|
||||||
|
+ .long 3f - 2f
|
||||||
|
+2:
|
||||||
|
+ .long 0x3
|
||||||
|
+3:
|
||||||
|
+ .p2align 2
|
||||||
|
+4:
|
||||||
|
diff --git a/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s b/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s
|
||||||
|
index 447ac0cecfdd..2e9346dff8a0 100644
|
||||||
|
--- a/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s
|
||||||
|
+++ b/bridges/source/cpp_uno/gcc3_linux_x86-64/call.s
|
||||||
|
@@ -22,6 +22,9 @@
|
||||||
|
.type privateSnippetExecutor, @function
|
||||||
|
privateSnippetExecutor:
|
||||||
|
.LFB3:
|
||||||
|
+#if defined(END_BRANCH_INS_SUPPORT)
|
||||||
|
+ endbr64
|
||||||
|
+#endif
|
||||||
|
pushq %rbp
|
||||||
|
.LCFI0:
|
||||||
|
movq %rsp, %rbp
|
||||||
|
@@ -115,3 +118,19 @@ privateSnippetExecutor:
|
||||||
|
.align 8
|
||||||
|
.LEFDE1:
|
||||||
|
.section .note.GNU-stack,"",@progbits
|
||||||
|
+ .section .note.gnu.property,"a"
|
||||||
|
+ .p2align 3
|
||||||
|
+ .long 1f - 0f
|
||||||
|
+ .long 4f - 1f
|
||||||
|
+ .long 5
|
||||||
|
+0:
|
||||||
|
+ .string "GNU"
|
||||||
|
+1:
|
||||||
|
+ .p2align 3
|
||||||
|
+ .long 0xc0000002
|
||||||
|
+ .long 3f - 2f
|
||||||
|
+2:
|
||||||
|
+ .long 0x3
|
||||||
|
+3:
|
||||||
|
+ .p2align 3
|
||||||
|
+4:
|
||||||
|
diff --git a/config_host.mk.in b/config_host.mk.in
|
||||||
|
index d6edba704b21..6ac2a90695e2 100644
|
||||||
|
--- a/config_host.mk.in
|
||||||
|
+++ b/config_host.mk.in
|
||||||
|
@@ -260,6 +260,7 @@ export GTK3_CFLAGS=$(gb_SPACE)@GTK3_CFLAGS@
|
||||||
|
export GTK3_LIBS=$(gb_SPACE)@GTK3_LIBS@
|
||||||
|
export USING_X11=@USING_X11@
|
||||||
|
export HAMCREST_JAR=@HAMCREST_JAR@
|
||||||
|
+export HAVE_ASM_END_BRANCH_INS_SUPPORT=@HAVE_ASM_END_BRANCH_INS_SUPPORT@
|
||||||
|
export HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED=@HAVE_BROKEN_GCC_WMAYBE_UNINITIALIZED@
|
||||||
|
export HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR=@HAVE_CLANG_DEBUG_INFO_KIND_CONSTRUCTOR@
|
||||||
|
export HAVE_LO_CLANG_DLLEXPORTINLINES=@HAVE_LO_CLANG_DLLEXPORTINLINES@
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index bd28bc6eb38e..ef03408e8e98 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -7730,6 +7730,20 @@ _ACEOF
|
||||||
|
|
||||||
|
CPPFLAGS="$save_CPPFLAGS"
|
||||||
|
|
||||||
|
+ AC_MSG_CHECKING([if CET endbranch is recognized])
|
||||||
|
+cat > endbr.s <<_ACEOF
|
||||||
|
+endbr32
|
||||||
|
+_ACEOF
|
||||||
|
+ HAVE_ASM_END_BRANCH_INS_SUPPORT=
|
||||||
|
+ if $CXX -c endbr.s -o endbr.o >/dev/null 2>&5; then
|
||||||
|
+ AC_MSG_RESULT([yes])
|
||||||
|
+ HAVE_ASM_END_BRANCH_INS_SUPPORT=TRUE
|
||||||
|
+ else
|
||||||
|
+ AC_MSG_RESULT([no])
|
||||||
|
+ fi
|
||||||
|
+ rm -f endbr.s endbr.o
|
||||||
|
+ AC_SUBST(HAVE_ASM_END_BRANCH_INS_SUPPORT)
|
||||||
|
+
|
||||||
|
AC_LANG_POP([C++])
|
||||||
|
fi
|
||||||
|
|
||||||
|
diff --git a/solenv/gbuild/platform/com_GCC_class.mk b/solenv/gbuild/platform/com_GCC_class.mk
|
||||||
|
index c29e2a979fd9..e2056abf9682 100644
|
||||||
|
--- a/solenv/gbuild/platform/com_GCC_class.mk
|
||||||
|
+++ b/solenv/gbuild/platform/com_GCC_class.mk
|
||||||
|
@@ -44,6 +44,7 @@ $(call gb_Helper_abbreviate_dirs,\
|
||||||
|
-x assembler-with-cpp \
|
||||||
|
$(gb_LTOFLAGS) \
|
||||||
|
$(gb_AFLAGS) \
|
||||||
|
+ $(if $(HAVE_ASM_END_BRANCH_INS_SUPPORT),-DEND_BRANCH_INS_SUPPORT) \
|
||||||
|
-c $(3) \
|
||||||
|
-o $(1)) \
|
||||||
|
$(INCLUDE) && \
|
||||||
|
--
|
||||||
|
2.33.1
|
||||||
|
|
@ -0,0 +1,145 @@
|
|||||||
|
From 4cac125f90e0a3d6828d879cb06f3a4bac14321b Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Tardon <dtardon@redhat.com>
|
||||||
|
Date: Thu, 21 Aug 2014 16:10:51 +0200
|
||||||
|
Subject: [PATCH] disable libe-book support
|
||||||
|
|
||||||
|
Change-Id: Ie915a9bd2acf7f3aeb8b0933252da33c17043bc4
|
||||||
|
---
|
||||||
|
configure.ac | 3 ---
|
||||||
|
external/Module_external.mk | 1 -
|
||||||
|
filter/Configuration_filter.mk | 8 --------
|
||||||
|
writerperfect/Library_wpftwriter.mk | 2 --
|
||||||
|
writerperfect/qa/unit/WpftFilterFixture.hxx | 4 ----
|
||||||
|
writerperfect/qa/unit/WpftWriterFilterTest.cxx | 5 -----
|
||||||
|
writerperfect/source/writer/wpftwriter.component | 5 -----
|
||||||
|
7 files changed, 28 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index fe425319b8f8..4b8f6a95472c 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -8566,9 +8566,6 @@ libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
|
||||||
|
|
||||||
|
libo_CHECK_SYSTEM_MODULE([libfreehand],[FREEHAND],[libfreehand-0.1])
|
||||||
|
|
||||||
|
-libo_CHECK_SYSTEM_MODULE([libebook],[EBOOK],[libe-book-0.1])
|
||||||
|
-libo_PKG_VERSION([EBOOK], [libe-book-0.1], [0.1.2])
|
||||||
|
-
|
||||||
|
libo_CHECK_SYSTEM_MODULE([libabw],[ABW],[libabw-0.1])
|
||||||
|
|
||||||
|
libo_CHECK_SYSTEM_MODULE([libpagemaker],[PAGEMAKER],[libpagemaker-0.0])
|
||||||
|
diff --git a/external/Module_external.mk b/external/Module_external.mk
|
||||||
|
index 41e018d2ef3f..1b7627a1b3e2 100644
|
||||||
|
--- a/external/Module_external.mk
|
||||||
|
+++ b/external/Module_external.mk
|
||||||
|
@@ -33,7 +33,6 @@ $(eval $(call gb_Module_add_moduledirs,external,\
|
||||||
|
$(call gb_Helper_optional,CT2N,ct2n) \
|
||||||
|
$(call gb_Helper_optional,CURL,curl) \
|
||||||
|
dtoa \
|
||||||
|
- $(call gb_Helper_optional,EBOOK,libebook) \
|
||||||
|
$(call gb_Helper_optional,EPM,epm) \
|
||||||
|
$(call gb_Helper_optional,EPOXY,epoxy) \
|
||||||
|
$(call gb_Helper_optional,EPUBGEN,libepubgen) \
|
||||||
|
diff --git a/filter/Configuration_filter.mk b/filter/Configuration_filter.mk
|
||||||
|
index e71ffacf8f25..74d2ef05c4aa 100644
|
||||||
|
--- a/filter/Configuration_filter.mk
|
||||||
|
+++ b/filter/Configuration_filter.mk
|
||||||
|
@@ -358,10 +358,6 @@ $(eval $(call filter_Configuration_add_types,fcfg_langpack,fcfg_writer_types.xcu
|
||||||
|
writer_OOXML \
|
||||||
|
writer_OOXML_Template \
|
||||||
|
writer_layout_dump_xml \
|
||||||
|
- writer_BroadBand_eBook \
|
||||||
|
- writer_FictionBook_2 \
|
||||||
|
- writer_PalmDoc \
|
||||||
|
- writer_Plucker_eBook \
|
||||||
|
writer_ApplePages \
|
||||||
|
MWAW_Text_Document \
|
||||||
|
Palm_Text_Document \
|
||||||
|
@@ -406,10 +402,6 @@ $(eval $(call filter_Configuration_add_filters,fcfg_langpack,fcfg_writer_filters
|
||||||
|
OOXML_Text \
|
||||||
|
OOXML_Text_Template \
|
||||||
|
writer_layout_dump \
|
||||||
|
- BroadBand_eBook \
|
||||||
|
- FictionBook_2 \
|
||||||
|
- PalmDoc \
|
||||||
|
- Plucker_eBook \
|
||||||
|
ApplePages \
|
||||||
|
MWAW_Text_Document \
|
||||||
|
Palm_Text_Document \
|
||||||
|
diff --git a/writerperfect/Library_wpftwriter.mk b/writerperfect/Library_wpftwriter.mk
|
||||||
|
index 8993cca31490..b6e11f356d97 100644
|
||||||
|
--- a/writerperfect/Library_wpftwriter.mk
|
||||||
|
+++ b/writerperfect/Library_wpftwriter.mk
|
||||||
|
@@ -53,7 +53,6 @@ $(eval $(call gb_Library_use_libraries,wpftwriter,\
|
||||||
|
$(eval $(call gb_Library_use_externals,wpftwriter,\
|
||||||
|
abw \
|
||||||
|
boost_headers \
|
||||||
|
- ebook \
|
||||||
|
epubgen \
|
||||||
|
etonyek \
|
||||||
|
icu_headers \
|
||||||
|
@@ -73,7 +72,6 @@ $(eval $(call gb_Library_use_externals,wpftwriter,\
|
||||||
|
|
||||||
|
$(eval $(call gb_Library_add_exception_objects,wpftwriter,\
|
||||||
|
writerperfect/source/writer/AbiWordImportFilter \
|
||||||
|
- writerperfect/source/writer/EBookImportFilter \
|
||||||
|
writerperfect/source/writer/EPUBExportDialog \
|
||||||
|
writerperfect/source/writer/EPUBExportFilter \
|
||||||
|
writerperfect/source/writer/EPUBExportUIComponent \
|
||||||
|
diff --git a/writerperfect/qa/unit/WpftFilterFixture.hxx b/writerperfect/qa/unit/WpftFilterFixture.hxx
|
||||||
|
index f32478165617..f42edb0d7f55 100644
|
||||||
|
--- a/writerperfect/qa/unit/WpftFilterFixture.hxx
|
||||||
|
+++ b/writerperfect/qa/unit/WpftFilterFixture.hxx
|
||||||
|
@@ -26,10 +26,6 @@
|
||||||
|
|| ((major) == (req_major) \
|
||||||
|
&& ((minor) > (req_minor) || ((minor) == (req_minor) && ((micro) >= (req_micro)))))
|
||||||
|
|
||||||
|
-#define REQUIRE_EBOOK_VERSION(major, minor, micro) \
|
||||||
|
- REQUIRE_VERSION(EBOOK_VERSION_MAJOR, EBOOK_VERSION_MINOR, EBOOK_VERSION_MICRO, major, minor, \
|
||||||
|
- micro)
|
||||||
|
-
|
||||||
|
#define REQUIRE_ETONYEK_VERSION(major, minor, micro) \
|
||||||
|
REQUIRE_VERSION(ETONYEK_VERSION_MAJOR, ETONYEK_VERSION_MINOR, ETONYEK_VERSION_MICRO, major, \
|
||||||
|
minor, micro)
|
||||||
|
diff --git a/writerperfect/qa/unit/WpftWriterFilterTest.cxx b/writerperfect/qa/unit/WpftWriterFilterTest.cxx
|
||||||
|
index 8bc4c7cadbb3..eca43caf8d8c 100644
|
||||||
|
--- a/writerperfect/qa/unit/WpftWriterFilterTest.cxx
|
||||||
|
+++ b/writerperfect/qa/unit/WpftWriterFilterTest.cxx
|
||||||
|
@@ -30,9 +30,6 @@ WpftWriterFilterTest::WpftWriterFilterTest()
|
||||||
|
|
||||||
|
void WpftWriterFilterTest::test()
|
||||||
|
{
|
||||||
|
- const writerperfect::test::WpftOptionalMap_t aEBookOptional{
|
||||||
|
- { "FictionBook2.fb2.zip", REQUIRE_EBOOK_VERSION(0, 1, 1) },
|
||||||
|
- };
|
||||||
|
const writerperfect::test::WpftOptionalMap_t aEtonyekOptional{
|
||||||
|
{ "Pages_4.pages", REQUIRE_ETONYEK_VERSION(0, 1, 2) },
|
||||||
|
{ "Pages_5.pages", REQUIRE_ETONYEK_VERSION(0, 1, 8) },
|
||||||
|
@@ -54,8 +51,6 @@ void WpftWriterFilterTest::test()
|
||||||
|
|
||||||
|
doTest("com.sun.star.comp.Writer.AbiWordImportFilter",
|
||||||
|
"/writerperfect/qa/unit/data/writer/libabw/");
|
||||||
|
- doTest("org.libreoffice.comp.Writer.EBookImportFilter",
|
||||||
|
- "/writerperfect/qa/unit/data/writer/libe-book/", aEBookOptional);
|
||||||
|
doTest("com.sun.star.comp.Writer.MSWorksImportFilter",
|
||||||
|
"/writerperfect/qa/unit/data/writer/libwps/", aWpsOptional);
|
||||||
|
doTest("com.sun.star.comp.Writer.MWAWImportFilter",
|
||||||
|
diff --git a/writerperfect/source/writer/wpftwriter.component b/writerperfect/source/writer/wpftwriter.component
|
||||||
|
index 8ab436634052..2720023baedf 100644
|
||||||
|
--- a/writerperfect/source/writer/wpftwriter.component
|
||||||
|
+++ b/writerperfect/source/writer/wpftwriter.component
|
||||||
|
@@ -38,11 +38,6 @@
|
||||||
|
<service name="com.sun.star.document.ExtendedTypeDetection"/>
|
||||||
|
<service name="com.sun.star.document.ImportFilter"/>
|
||||||
|
</implementation>
|
||||||
|
- <implementation name="org.libreoffice.comp.Writer.EBookImportFilter"
|
||||||
|
- constructor="org_libreoffice_comp_Writer_EBookImportFilter_get_implementation">
|
||||||
|
- <service name="com.sun.star.document.ExtendedTypeDetection"/>
|
||||||
|
- <service name="com.sun.star.document.ImportFilter"/>
|
||||||
|
- </implementation>
|
||||||
|
<implementation name="org.libreoffice.comp.Writer.PagesImportFilter"
|
||||||
|
constructor="org_libreoffice_comp_Writer_PagesImportFilter_get_implementation">
|
||||||
|
<service name="com.sun.star.document.ExtendedTypeDetection"/>
|
||||||
|
--
|
||||||
|
2.25.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From d6e2cdb0023e422546e3ece5bf9915f7c490ced8 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Fri, 20 Mar 2020 14:24:05 +0000
|
||||||
|
Subject: [PATCH] disble tip-of-the-day dialog by default
|
||||||
|
|
||||||
|
Change-Id: Ie7f0e3fe3dda12c2ec88c376d2b57419253ae5cf
|
||||||
|
---
|
||||||
|
officecfg/registry/schema/org/openoffice/Office/Common.xcs | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
|
||||||
|
index e7c339e2e22e..9aa88ef1aa02 100644
|
||||||
|
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
|
||||||
|
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
|
||||||
|
@@ -5570,7 +5570,7 @@
|
||||||
|
<info>
|
||||||
|
<desc>Determines whether the Tip-of-the-Day dialog is shown on startup.</desc>
|
||||||
|
</info>
|
||||||
|
- <value>true</value>
|
||||||
|
+ <value>false</value>
|
||||||
|
</prop>
|
||||||
|
<prop oor:name="LastTipOfTheDayShown" oor:type="xs:int" oor:nillable="false">
|
||||||
|
<info>
|
||||||
|
--
|
||||||
|
2.24.1
|
||||||
|
|
@ -0,0 +1,45 @@
|
|||||||
|
From ce37356f6bcaaef62a80814d7d54d3aa6d53167d Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Tue, 12 Oct 2021 09:52:53 +0100
|
||||||
|
Subject: [PATCH] document-new shouldn't get prefixed to become
|
||||||
|
libreoffice-document-new
|
||||||
|
|
||||||
|
seen by rpminspect as .desktop "references icon libreoffice-document-new
|
||||||
|
but no subpackages contain libreoffice-document-new"
|
||||||
|
|
||||||
|
introduced by:
|
||||||
|
|
||||||
|
commit f767d5e2b017c0d0cfd23ff3318cb30901847722
|
||||||
|
Date: Sun Sep 1 11:30:12 2019 +0200
|
||||||
|
|
||||||
|
Add icons to New Document desktop file actions
|
||||||
|
|
||||||
|
in the [Desktop Action NewDocument] section
|
||||||
|
|
||||||
|
Change-Id: I64ce5e2dbaca32083b2f76e960c33a815f8a3773
|
||||||
|
---
|
||||||
|
sysui/desktop/share/brand.pl | 8 +++++---
|
||||||
|
1 file changed, 5 insertions(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sysui/desktop/share/brand.pl b/sysui/desktop/share/brand.pl
|
||||||
|
index 9d73e619c495..b17a7374fd62 100644
|
||||||
|
--- a/sysui/desktop/share/brand.pl
|
||||||
|
+++ b/sysui/desktop/share/brand.pl
|
||||||
|
@@ -81,9 +81,11 @@ while ($arg = shift) {
|
||||||
|
# remove possible Windows line-ends
|
||||||
|
chomp;
|
||||||
|
|
||||||
|
- # patch all occurrences of openoffice in ICON line with
|
||||||
|
- # $prefix
|
||||||
|
- s/Icon=/Icon=$iconprefix/;
|
||||||
|
+ # patch all icons in ICON line with $prefix
|
||||||
|
+ if (! /Icon=document-new/ ) { # except for Icon=document-new which
|
||||||
|
+ # is a stock icon, not one of ours
|
||||||
|
+ s/Icon=/Icon=$iconprefix/;
|
||||||
|
+ }
|
||||||
|
|
||||||
|
# patch all occurrences of openoffice in icon_filename
|
||||||
|
# line with $prefix
|
||||||
|
--
|
||||||
|
2.32.0
|
||||||
|
|
@ -0,0 +1,35 @@
|
|||||||
|
From a6f2cba43d79347b6975b3b8069b423c94a7dba6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: David Tardon <dtardon@redhat.com>
|
||||||
|
Date: Tue, 8 Nov 2016 11:50:06 +0100
|
||||||
|
Subject: [PATCH] don't suppress crashes
|
||||||
|
|
||||||
|
An automatic restart after a crash makes the crash invisible to abrt.
|
||||||
|
|
||||||
|
Change-Id: I3854e619356049b144b08575879d289a3c12e4c9
|
||||||
|
---
|
||||||
|
desktop/source/app/app.cxx | 4 +---
|
||||||
|
1 file changed, 1 insertion(+), 3 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/desktop/source/app/app.cxx b/desktop/source/app/app.cxx
|
||||||
|
index c54aea9dd4f7..a613fe12cef2 100644
|
||||||
|
--- a/desktop/source/app/app.cxx
|
||||||
|
+++ b/desktop/source/app/app.cxx
|
||||||
|
@@ -1147,14 +1147,12 @@ void Desktop::Exception(ExceptionCategory nCategory)
|
||||||
|
if( bRestart )
|
||||||
|
{
|
||||||
|
RequestHandler::Disable();
|
||||||
|
- if( pSignalHandler )
|
||||||
|
- osl_removeSignalHandler( pSignalHandler );
|
||||||
|
|
||||||
|
restartOnMac(false);
|
||||||
|
if ( m_rSplashScreen.is() )
|
||||||
|
m_rSplashScreen->reset();
|
||||||
|
|
||||||
|
- _exit( EXITHELPER_CRASH_WITH_RESTART );
|
||||||
|
+ return;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
--
|
||||||
|
2.29.2
|
||||||
|
|
@ -0,0 +1,40 @@
|
|||||||
|
From a94b58277c7aeaa83ce14347cd0b8f7137969d03 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Lubo=C5=A1=20Lu=C5=88=C3=A1k?= <l.lunak@collabora.com>
|
||||||
|
Date: Fri, 29 Oct 2021 14:20:57 +0200
|
||||||
|
Subject: [PATCH] fix comparison when searching cache
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
This made the cache always fail and re-cache, making CJK text layout
|
||||||
|
slower over time. A mistake from ef513fd4b049b214a03fbe6e that
|
||||||
|
converted !strcmp() to != instead of ==.
|
||||||
|
|
||||||
|
Change-Id: Ib70579cd36d7b1df062e4d067e03f5c65e34b142
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124432
|
||||||
|
Reviewed-by: Noel Grandin <noel.grandin@collabora.co.uk>
|
||||||
|
Reviewed-by: Luboš Luňák <l.lunak@collabora.com>
|
||||||
|
Tested-by: Luboš Luňák <l.lunak@collabora.com>
|
||||||
|
(cherry picked from commit 5b38b5744af1e896892df708c16b83e1b551d2c7)
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/124206
|
||||||
|
Tested-by: Jenkins
|
||||||
|
---
|
||||||
|
i18npool/source/breakiterator/xdictionary.cxx | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/i18npool/source/breakiterator/xdictionary.cxx b/i18npool/source/breakiterator/xdictionary.cxx
|
||||||
|
index 947a23c5073b..6b57433370c7 100644
|
||||||
|
--- a/i18npool/source/breakiterator/xdictionary.cxx
|
||||||
|
+++ b/i18npool/source/breakiterator/xdictionary.cxx
|
||||||
|
@@ -152,7 +152,7 @@ void xdictionary::initDictionaryData(const char *pLang)
|
||||||
|
osl::MutexGuard aGuard( osl::Mutex::getGlobalMutex() );
|
||||||
|
for(const datacache & i : aLoadedCache)
|
||||||
|
{
|
||||||
|
- if( i.maLang != pLang )
|
||||||
|
+ if( i.maLang == pLang )
|
||||||
|
{
|
||||||
|
data = i.maData;
|
||||||
|
return;
|
||||||
|
--
|
||||||
|
2.33.1
|
||||||
|
|
@ -0,0 +1,40 @@
|
|||||||
|
From 2f11e4247b6332b06a5b23c33207fa10767244a6 Mon Sep 17 00:00:00 2001
|
||||||
|
From: Thierry Vignaud <thierry.vignaud@gmail.com>
|
||||||
|
Date: Thu, 30 Jan 2020 11:19:20 +0000
|
||||||
|
Subject: [PATCH] fix detecting qrcodegen
|
||||||
|
|
||||||
|
Change-Id: Ib945b57420083489273cefc5655eb50932b5a3f8
|
||||||
|
---
|
||||||
|
configure.ac | 2 +-
|
||||||
|
cui/source/dialogs/QrCodeGenDialog.cxx | 2 +-
|
||||||
|
2 files changed, 2 insertions(+), 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 5a14369..ebd1b55 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -10250,7 +10250,7 @@ else
|
||||||
|
AC_MSG_RESULT([external])
|
||||||
|
SYSTEM_QRCODEGEN=TRUE
|
||||||
|
AC_LANG_PUSH([C++])
|
||||||
|
- AC_CHECK_HEADER(qrcodegen/QrCode.hpp, [],
|
||||||
|
+ AC_CHECK_HEADER(qrcodegencpp/QrCode.hpp, [],
|
||||||
|
[AC_MSG_ERROR(qrcodegen headers not found.)], [#include <stdexcept>])
|
||||||
|
AC_CHECK_LIB([qrcodegencpp], [main], [:],
|
||||||
|
[ AC_MSG_ERROR(qrcodegen C++ library not found.) ], [])
|
||||||
|
diff --git a/cui/source/dialogs/QrCodeGenDialog.cxx b/cui/source/dialogs/QrCodeGenDialog.cxx
|
||||||
|
index 7f3f6a8..b79a356 100644
|
||||||
|
--- a/cui/source/dialogs/QrCodeGenDialog.cxx
|
||||||
|
+++ b/cui/source/dialogs/QrCodeGenDialog.cxx
|
||||||
|
@@ -19,7 +19,7 @@
|
||||||
|
|
||||||
|
#if ENABLE_QRCODEGEN
|
||||||
|
#if defined(SYSTEM_QRCODEGEN)
|
||||||
|
-#include <qrcodegen/QrCode.hpp>
|
||||||
|
+#include <qrcodegencpp/QrCode.hpp>
|
||||||
|
#else
|
||||||
|
#include <QrCode.hpp>
|
||||||
|
#endif
|
||||||
|
--
|
||||||
|
2.26.2
|
||||||
|
|
@ -0,0 +1,118 @@
|
|||||||
|
From b06e5e2b9761d242d9269b091da9a98ec705d2b1 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Tue, 1 Jun 2021 13:20:43 +0100
|
||||||
|
Subject: [PATCH] gtk3: workaround missing gdk_threads_enter calls in external
|
||||||
|
code
|
||||||
|
MIME-Version: 1.0
|
||||||
|
Content-Type: text/plain; charset=UTF-8
|
||||||
|
Content-Transfer-Encoding: 8bit
|
||||||
|
|
||||||
|
with gtk3 file dialog. file, open, +other locations,
|
||||||
|
type davs://somewhere + return
|
||||||
|
|
||||||
|
#0 0x00007ffff7a6e2a2 in raise () at /lib64/libc.so.6
|
||||||
|
#1 0x00007ffff7a578a4 in abort () at /lib64/libc.so.6
|
||||||
|
#2 0x00007ffff7a57789 in _nl_load_domain.cold () at /lib64/libc.so.6
|
||||||
|
#3 0x00007ffff7a66a16 in () at /lib64/libc.so.6
|
||||||
|
#4 0x00007fffd9be7672 in GtkYieldMutex::ThreadsLeave() (this=0x513480) at vcl/unx/gtk3/gtkinst.cxx:354
|
||||||
|
#5 0x00007fffd9be6a53 in GdkThreadsLeave() () at vcl/unx/gtk3/gtkinst.cxx:116
|
||||||
|
#6 0x00007fffd947ac2d in gtk_dialog_run (dialog=0xa984310) at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkdialog.c:1397
|
||||||
|
^^^ this also (see #30) calls gdk_threads_leave before g_main_loop_run, but no gdk_threads_enter has been called, presumably emit_show_error_message should have called it (?) ^^^
|
||||||
|
#7 0x00007fffd94a6dc6 in error_message_with_parent (detail=0xa97f9b0 "HTTP Error: Error resolving “nowhere”: Name or service not known", msg=<optimized out>, parent=<optimized out>)
|
||||||
|
at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkfilechooserwidget.c:763
|
||||||
|
#8 error_message (impl=<optimized out>, msg=<optimized out>, detail=0xa97f9b0 "HTTP Error: Error resolving “nowhere”: Name or service not known") at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkfilechooserwidget.c:786
|
||||||
|
#9 0x00007fffe996ec2f in g_closure_invoke () at /lib64/libgobject-2.0.so.0
|
||||||
|
#10 0x00007fffe998aea6 in signal_emit_unlocked_R () at /lib64/libgobject-2.0.so.0
|
||||||
|
#11 0x00007fffe998c76a in g_signal_emit_valist () at /lib64/libgobject-2.0.so.0
|
||||||
|
#12 0x00007fffe998c983 in g_signal_emit () at /lib64/libgobject-2.0.so.0
|
||||||
|
#13 0x00007fffd9561fc7 in emit_show_error_message (secondary_message=0x7fffbc0566f0 "HTTP Error: Error resolving “nowhere”: Name or service not known", primary_message=<optimized out>, view=0x900a240)
|
||||||
|
at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkplacesview.c:171
|
||||||
|
#14 server_mount_ready_cb (source_file=0x7fffbc05b4c0, res=<optimized out>, user_data=0x900a240) at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkplacesview.c:1232
|
||||||
|
#15 0x00007fffe9a64a7a in g_task_return_now () at /lib64/libgio-2.0.so.0
|
||||||
|
#16 0x00007fffe9a64c7b in g_task_return () at /lib64/libgio-2.0.so.0
|
||||||
|
#17 0x00007fffd80653b8 in mount_reply () at /usr/lib64/gio/modules/libgvfsdbus.so
|
||||||
|
#18 0x00007fffe9a64a7a in g_task_return_now () at /lib64/libgio-2.0.so.0
|
||||||
|
#19 0x00007fffe9a64c7b in g_task_return () at /lib64/libgio-2.0.so.0
|
||||||
|
#20 0x00007fffe9acd2dd in reply_cb () at /lib64/libgio-2.0.so.0
|
||||||
|
#21 0x00007fffe9a64a7a in g_task_return_now () at /lib64/libgio-2.0.so.0
|
||||||
|
#22 0x00007fffe9a64c7b in g_task_return () at /lib64/libgio-2.0.so.0
|
||||||
|
#23 0x00007fffe9ac4c34 in g_dbus_connection_call_done () at /lib64/libgio-2.0.so.0
|
||||||
|
#24 0x00007fffe9a64a7a in g_task_return_now () at /lib64/libgio-2.0.so.0
|
||||||
|
#25 0x00007fffe9a64abd in complete_in_idle_cb () at /lib64/libgio-2.0.so.0
|
||||||
|
#26 0x00007fffe987074b in g_idle_dispatch () at /lib64/libglib-2.0.so.0
|
||||||
|
#27 0x00007fffe98744cf in g_main_context_dispatch () at /lib64/libglib-2.0.so.0
|
||||||
|
#28 0x00007fffe98c84e8 in g_main_context_iterate.constprop () at /lib64/libglib-2.0.so.0
|
||||||
|
#29 0x00007fffe9873a93 in g_main_loop_run () at /lib64/libglib-2.0.so.0
|
||||||
|
#30 0x00007fffd947ac37 in gtk_dialog_run (dialog=0x1604460) at /usr/src/debug/gtk3-3.24.29-1.fc34.x86_64/gtk/gtkdialog.c:1398
|
||||||
|
^^^ this will call gdk_threads_leave before g_main_loop_run, (gdk_threads_enter has been called earlier, and gdk_threads_enter will be called after g_main_loop_run) ^^^
|
||||||
|
#31 0x00007fffd9bdbd96 in RunDialog::run() (this=0x9134f00) at vcl/unx/gtk3/fpicker/SalGtkPicker.cxx:199
|
||||||
|
#32 0x00007fffd9bbf23f in SalGtkFilePicker::execute() (this=0x9004690) at vcl/unx/gtk3/fpicker/SalGtkFilePicker.cxx:953
|
||||||
|
#33 0x00007ffff474741a in sfx2::FileDialogHelper_Impl::implDoExecute() (this=0x1667470) at sfx2/source/dialog/filedlghelper.cxx:1279
|
||||||
|
|
||||||
|
#14 presumably server_mount_ready_cb of gtkplacesview.c should protect its gtk
|
||||||
|
calls with gdk_threads_enter/gdk_threads_leave like enclosing_volume_mount_cb
|
||||||
|
of gtkfilesystem.c does.
|
||||||
|
|
||||||
|
Seeing as gdk_threads_leave/gdk_threads_enter is gone in gtk4 I doubt
|
||||||
|
there's any point looking for a fix in gtk3 and we should just try and
|
||||||
|
survive the problem.
|
||||||
|
|
||||||
|
Change-Id: I007be4dee4f615d4431e27034dcf7f3d446c3e9a
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116559
|
||||||
|
Tested-by: Jenkins
|
||||||
|
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
|
||||||
|
(cherry picked from commit 08b7529f628eda1d209cf27f9bbe52ee336fef62)
|
||||||
|
---
|
||||||
|
vcl/unx/gtk3/gtk3gtkinst.cxx | 30 ++++++++++++++++++++++--------
|
||||||
|
1 file changed, 22 insertions(+), 8 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
|
||||||
|
index 2d4dc36ce5fe..bba4e07f3003 100644
|
||||||
|
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
|
||||||
|
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
|
||||||
|
@@ -314,20 +314,34 @@ thread_local std::stack<sal_uInt32> GtkYieldMutex::yieldCounts;
|
||||||
|
void GtkYieldMutex::ThreadsEnter()
|
||||||
|
{
|
||||||
|
acquire();
|
||||||
|
- if (!yieldCounts.empty()) {
|
||||||
|
- auto n = yieldCounts.top();
|
||||||
|
- yieldCounts.pop();
|
||||||
|
- assert(n > 0);
|
||||||
|
- n--;
|
||||||
|
- if (n > 0)
|
||||||
|
- acquire(n);
|
||||||
|
+ if (yieldCounts.empty())
|
||||||
|
+ return;
|
||||||
|
+ auto n = yieldCounts.top();
|
||||||
|
+ yieldCounts.pop();
|
||||||
|
+
|
||||||
|
+ const bool bUndoingLeaveWithoutEnter = n == 0;
|
||||||
|
+ // if the ThreadsLeave bLeaveWithoutEnter of true condition occurred to
|
||||||
|
+ // create this entry then return early undoing the initial acquire of the
|
||||||
|
+ // function
|
||||||
|
+ if G_UNLIKELY(bUndoingLeaveWithoutEnter)
|
||||||
|
+ {
|
||||||
|
+ release();
|
||||||
|
+ return;
|
||||||
|
}
|
||||||
|
+
|
||||||
|
+ assert(n > 0);
|
||||||
|
+ n--;
|
||||||
|
+ if (n > 0)
|
||||||
|
+ acquire(n);
|
||||||
|
}
|
||||||
|
|
||||||
|
void GtkYieldMutex::ThreadsLeave()
|
||||||
|
{
|
||||||
|
- assert(m_nCount != 0);
|
||||||
|
+ const bool bLeaveWithoutEnter = m_nCount == 0;
|
||||||
|
+ SAL_WARN_IF(bLeaveWithoutEnter, "vcl.gtk", "gdk_threads_leave without matching gdk_threads_enter");
|
||||||
|
yieldCounts.push(m_nCount);
|
||||||
|
+ if G_UNLIKELY(bLeaveWithoutEnter) // this ideally shouldn't happen, but can due to the gtk3 file dialog
|
||||||
|
+ return;
|
||||||
|
release(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,111 @@
|
|||||||
|
From 748a9fd3a8e90e52a126190dbe0d97da6e0941ff Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Wed, 11 Aug 2021 20:55:14 +0100
|
||||||
|
Subject: [PATCH] make --with-idlc-cpp=cpp work for gcc cpp as a ucpp
|
||||||
|
replacement
|
||||||
|
|
||||||
|
e.g. the example of
|
||||||
|
https://bugs.launchpad.net/ubuntu/+source/libreoffice/+bug/1524638
|
||||||
|
has the same output .urd using cpp with these flags as ucpp created
|
||||||
|
|
||||||
|
Change-Id: Iadfd2deba7d365c66c3260fd6736c031987e107c
|
||||||
|
---
|
||||||
|
config_host.mk.in | 1 +
|
||||||
|
configure.ac | 14 ++++++++++++++
|
||||||
|
idlc/Executable_idlc.mk | 8 ++++++++
|
||||||
|
idlc/source/idlccompile.cxx | 8 ++++++++
|
||||||
|
4 files changed, 31 insertions(+)
|
||||||
|
|
||||||
|
diff --git a/config_host.mk.in b/config_host.mk.in
|
||||||
|
index 58ca1d1c14fb..6810660067b0 100644
|
||||||
|
--- a/config_host.mk.in
|
||||||
|
+++ b/config_host.mk.in
|
||||||
|
@@ -635,6 +635,7 @@ export SYSTEM_RHINO=@SYSTEM_RHINO@
|
||||||
|
export SYSTEM_SERF=@SYSTEM_SERF@
|
||||||
|
export SYSTEM_STAROFFICE=@SYSTEM_STAROFFICE@
|
||||||
|
export SYSTEM_UCPP=@SYSTEM_UCPP@
|
||||||
|
+export SYSTEM_UCPP_IS_GCC=@SYSTEM_UCPP_IS_GCC@
|
||||||
|
export SYSTEM_VISIO=@SYSTEM_VISIO@
|
||||||
|
export SYSTEM_WPD=@SYSTEM_WPD@
|
||||||
|
export SYSTEM_WPG=@SYSTEM_WPG@
|
||||||
|
diff --git a/configure.ac b/configure.ac
|
||||||
|
index 3d2bf7e24555..ac226fd46ace 100644
|
||||||
|
--- a/configure.ac
|
||||||
|
+++ b/configure.ac
|
||||||
|
@@ -8807,9 +8807,22 @@ dnl ===================================================================
|
||||||
|
dnl Check for C preprocessor to use
|
||||||
|
dnl ===================================================================
|
||||||
|
AC_MSG_CHECKING([which C preprocessor to use in idlc])
|
||||||
|
+SYSTEM_UCPP_IS_GCC=
|
||||||
|
if test -n "$with_idlc_cpp"; then
|
||||||
|
AC_MSG_RESULT([$with_idlc_cpp])
|
||||||
|
AC_PATH_PROG(SYSTEM_UCPP, $with_idlc_cpp)
|
||||||
|
+ AC_MSG_CHECKING([if $with_idlc_cpp is GCC CPP])
|
||||||
|
+ # ucpp will accept -v (to output version), warn about the others as unknown
|
||||||
|
+ # and return 1 (due to -v)
|
||||||
|
+ # gcc will accept -v (as verbose), --version (to output version) and -nostdinc
|
||||||
|
+ # and return 0 (due to --version ) if all options are supported
|
||||||
|
+ $SYSTEM_UCPP -v --version -nostdinc >/dev/null 2>/dev/null
|
||||||
|
+ if test $? -eq 0; then
|
||||||
|
+ SYSTEM_UCPP_IS_GCC=TRUE
|
||||||
|
+ AC_MSG_RESULT([yes])
|
||||||
|
+ else
|
||||||
|
+ AC_MSG_RESULT([no])
|
||||||
|
+ fi
|
||||||
|
else
|
||||||
|
AC_MSG_RESULT([ucpp])
|
||||||
|
AC_MSG_CHECKING([which ucpp tp use])
|
||||||
|
@@ -8822,6 +8835,7 @@ else
|
||||||
|
fi
|
||||||
|
fi
|
||||||
|
AC_SUBST(SYSTEM_UCPP)
|
||||||
|
+AC_SUBST(SYSTEM_UCPP_IS_GCC)
|
||||||
|
|
||||||
|
dnl ===================================================================
|
||||||
|
dnl Check for epm (not needed for Windows)
|
||||||
|
diff --git a/idlc/Executable_idlc.mk b/idlc/Executable_idlc.mk
|
||||||
|
index e194e9049c77..f2f79dcb8911 100644
|
||||||
|
--- a/idlc/Executable_idlc.mk
|
||||||
|
+++ b/idlc/Executable_idlc.mk
|
||||||
|
@@ -35,10 +35,18 @@ $(eval $(call gb_Executable_add_scanners,idlc,\
|
||||||
|
))
|
||||||
|
|
||||||
|
ifneq (,$(SYSTEM_UCPP))
|
||||||
|
+
|
||||||
|
$(eval $(call gb_Executable_add_defs,idlc,\
|
||||||
|
-DSYSTEM_UCPP \
|
||||||
|
-DUCPP=\"file://$(SYSTEM_UCPP)\" \
|
||||||
|
))
|
||||||
|
+
|
||||||
|
+ifneq ($(SYSTEM_UCPP_IS_GCC),)
|
||||||
|
+$(eval $(call gb_Executable_add_defs,idlc,\
|
||||||
|
+ -DSYSTEM_UCPP_IS_GCC \
|
||||||
|
+))
|
||||||
|
+endif
|
||||||
|
+
|
||||||
|
endif
|
||||||
|
|
||||||
|
$(eval $(call gb_Executable_add_exception_objects,idlc,\
|
||||||
|
diff --git a/idlc/source/idlccompile.cxx b/idlc/source/idlccompile.cxx
|
||||||
|
index bf3325d6821a..1902d63e0cad 100644
|
||||||
|
--- a/idlc/source/idlccompile.cxx
|
||||||
|
+++ b/idlc/source/idlccompile.cxx
|
||||||
|
@@ -237,7 +237,15 @@ sal_Int32 compileFile(const OString * pathname)
|
||||||
|
::std::vector< OUString> lCppArgs;
|
||||||
|
lCppArgs.emplace_back("-DIDL");
|
||||||
|
lCppArgs.emplace_back("-C");
|
||||||
|
+#ifdef SYSTEM_UCPP_IS_GCC
|
||||||
|
+ // -nostdinc Do not search the standard system directories for header files
|
||||||
|
+ lCppArgs.emplace_back("-nostdinc");
|
||||||
|
+ // with gcc cpp, even when not explicitly including anything, /usr/include/stdc-predef.h
|
||||||
|
+ // gets inserted without -nostdinc
|
||||||
|
+#else
|
||||||
|
+ // -zI Do not use the standard (compile-time) include path.
|
||||||
|
lCppArgs.emplace_back("-zI");
|
||||||
|
+#endif
|
||||||
|
|
||||||
|
Options* pOptions = idlc()->getOptions();
|
||||||
|
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,39 @@
|
|||||||
|
From f586051919d047e2b67d32637817c3d96a898494 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Wed, 9 Jun 2021 09:13:23 +0100
|
||||||
|
Subject: [PATCH] math.desktop include "Spreadsheet" category
|
||||||
|
|
||||||
|
but it's not a spreadsheet
|
||||||
|
|
||||||
|
since...
|
||||||
|
|
||||||
|
commit dad7fe7227fb80a32d3c2c777584dc9d74b9e929
|
||||||
|
Date: Thu Jan 2 16:16:55 2014 +0100
|
||||||
|
|
||||||
|
Fix math categories to make SUSE rpm check happy
|
||||||
|
|
||||||
|
Change-Id: I0397ea12cd7f29f4b0c1f0e0ad76a3429b55c455
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116884
|
||||||
|
Tested-by: Jenkins
|
||||||
|
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
|
||||||
|
(cherry picked from commit 2df2ce1b51d13bc9e203fab1b7eb3c88c906588c)
|
||||||
|
---
|
||||||
|
sysui/desktop/menus/math.desktop | 2 +-
|
||||||
|
1 file changed, 1 insertion(+), 1 deletion(-)
|
||||||
|
|
||||||
|
diff --git a/sysui/desktop/menus/math.desktop b/sysui/desktop/menus/math.desktop
|
||||||
|
index d2391be5c234..5a8192ae4abc 100644
|
||||||
|
--- a/sysui/desktop/menus/math.desktop
|
||||||
|
+++ b/sysui/desktop/menus/math.desktop
|
||||||
|
@@ -21,7 +21,7 @@ Terminal=false
|
||||||
|
NoDisplay=false
|
||||||
|
Icon=math
|
||||||
|
Type=Application
|
||||||
|
-Categories=Office;Spreadsheet;Education;Science;Math;X-Red-Hat-Base;X-MandrivaLinux-Office-Other;
|
||||||
|
+Categories=Office;Education;Science;Math;X-Red-Hat-Base;X-MandrivaLinux-Office-Other;
|
||||||
|
Exec=${UNIXBASISROOTNAME} --math %%FILE%%
|
||||||
|
MimeType=application/vnd.oasis.opendocument.formula;application/vnd.sun.xml.math;application/vnd.oasis.opendocument.formula-template;text/mathml;application/mathml+xml;
|
||||||
|
Name=%PRODUCTNAME Math
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,26 @@
|
|||||||
|
From 8b8a49e14c1010c5ab325b64fc3b65524a6a6049 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Wed, 20 Jan 2021 09:19:25 +0000
|
||||||
|
Subject: [PATCH] rhbz#1918152 fix FTBFS
|
||||||
|
|
||||||
|
Change-Id: I5c03c810d3b2572b0e58c62293add49bd7025e70
|
||||||
|
---
|
||||||
|
vcl/source/gdi/bitmap3.cxx | 2 --
|
||||||
|
1 file changed, 2 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/vcl/source/gdi/bitmap3.cxx b/vcl/source/gdi/bitmap3.cxx
|
||||||
|
index ec80b03c6008..8ea5c31bee3e 100644
|
||||||
|
--- a/vcl/source/gdi/bitmap3.cxx
|
||||||
|
+++ b/vcl/source/gdi/bitmap3.cxx
|
||||||
|
@@ -17,8 +17,6 @@
|
||||||
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||||
|
*/
|
||||||
|
|
||||||
|
-#include <math.h>
|
||||||
|
-
|
||||||
|
#include <vcl/bitmapaccess.hxx>
|
||||||
|
#include <vcl/bitmapex.hxx>
|
||||||
|
#include <vcl/bitmap.hxx>
|
||||||
|
--
|
||||||
|
2.28.0
|
||||||
|
|
@ -0,0 +1,428 @@
|
|||||||
|
From aec3e189e6e9aa1eb2fe91cbb1c46f308b074cd5 Mon Sep 17 00:00:00 2001
|
||||||
|
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
|
||||||
|
Date: Tue, 13 Jul 2021 12:38:07 +0100
|
||||||
|
Subject: [PATCH] rhbz#1980800 allow --convert-to csv to write each sheet to a
|
||||||
|
separate file
|
||||||
|
|
||||||
|
Related: tdf#135762 except only currently implemented for command line use
|
||||||
|
|
||||||
|
sample usage:
|
||||||
|
soffice --convert-to csv:"Text - txt - csv (StarCalc)":44,34,UTF8,1,,0,false,true,false,false,false,-1 sample.ods
|
||||||
|
where the new (11th!) final token ("-1") enables writing each sheet to a
|
||||||
|
new file based on the suggested target name so output in this example
|
||||||
|
is files sample-Sheet1.csv and sample-Sheet2.csv
|
||||||
|
|
||||||
|
Only -1 for 'all sheets' vs 0 for existing 'current sheet only' (which
|
||||||
|
is always sheet 0 from the command line) are currently options but the
|
||||||
|
token could be expanded in the future to select specific sheets to
|
||||||
|
export.
|
||||||
|
|
||||||
|
Change-Id: Ib99a120f1a2c8d1008a7a3c59a6b39f572fb346e
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118850
|
||||||
|
Tested-by: Jenkins
|
||||||
|
Reviewed-by: Eike Rathke <erack@redhat.com>
|
||||||
|
(cherry picked from commit b8903bc106dad036acb3d117e5c4fc955697fe02)
|
||||||
|
|
||||||
|
Related: tdf#135762 Allow --convert-to csv to specify 1-based sheet number
|
||||||
|
|
||||||
|
Same multifile mechanism as for -1 all sheets is used, so
|
||||||
|
|
||||||
|
soffice --convert-to csv:"Text - txt - csv (StarCalc)":44,34,UTF8,1,,0,false,true,false,false,false,2 sample.ods
|
||||||
|
|
||||||
|
writes a file sample-Sheet2.csv
|
||||||
|
|
||||||
|
Change-Id: Ib9248c9561e4e340c88458ac5dfd159e443a4cfd
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118971
|
||||||
|
Reviewed-by: Eike Rathke <erack@redhat.com>
|
||||||
|
Tested-by: Jenkins
|
||||||
|
(cherry picked from commit fda91f8be16ba760e360940ebafd6244c648cb8c)
|
||||||
|
|
||||||
|
Related: tdf#135762 Suppress cout if not command line
|
||||||
|
|
||||||
|
Change-Id: I9431221aadf97739bb197871f25fa151ef4c391c
|
||||||
|
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/119294
|
||||||
|
Reviewed-by: Eike Rathke <erack@redhat.com>
|
||||||
|
Tested-by: Jenkins
|
||||||
|
(cherry picked from commit 0cda081c9aa3b3dcb363f97bac60c845ce9a13e0)
|
||||||
|
---
|
||||||
|
desktop/source/app/dispatchwatcher.cxx | 50 +++++++--
|
||||||
|
sc/source/ui/dbgui/imoptdlg.cxx | 16 ++-
|
||||||
|
sc/source/ui/docshell/docsh.cxx | 141 +++++++++++++++++++++----
|
||||||
|
sc/source/ui/inc/docsh.hxx | 2 +-
|
||||||
|
sc/source/ui/inc/imoptdlg.hxx | 6 +-
|
||||||
|
5 files changed, 179 insertions(+), 36 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/desktop/source/app/dispatchwatcher.cxx b/desktop/source/app/dispatchwatcher.cxx
|
||||||
|
index 50b92ecb7834..3df4f34ccf83 100644
|
||||||
|
--- a/desktop/source/app/dispatchwatcher.cxx
|
||||||
|
+++ b/desktop/source/app/dispatchwatcher.cxx
|
||||||
|
@@ -30,6 +30,7 @@
|
||||||
|
#include "officeipcthread.hxx"
|
||||||
|
#include <rtl/ustring.hxx>
|
||||||
|
#include <comphelper/processfactory.hxx>
|
||||||
|
+#include <comphelper/string.hxx>
|
||||||
|
#include <comphelper/synchronousdispatch.hxx>
|
||||||
|
#include <com/sun/star/io/IOException.hpp>
|
||||||
|
#include <com/sun/star/util/XCloseable.hpp>
|
||||||
|
@@ -598,6 +599,8 @@ bool DispatchWatcher::executeDispatchRequests( const std::vector<DispatchRequest
|
||||||
|
aFilter = impl_GuessFilter( aOutFile, aDocService );
|
||||||
|
}
|
||||||
|
|
||||||
|
+ bool bMultiFileTarget = false;
|
||||||
|
+
|
||||||
|
if (aFilter.isEmpty())
|
||||||
|
{
|
||||||
|
std::cerr << "Error: no export filter" << std::endl;
|
||||||
|
@@ -605,29 +608,54 @@ bool DispatchWatcher::executeDispatchRequests( const std::vector<DispatchRequest
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sal_Int32 nFilterOptionsIndex = aFilter.indexOf(':');
|
||||||
|
- sal_Int32 nProps = ( 0 < nFilterOptionsIndex ) ? 3 : 2;
|
||||||
|
+ sal_Int32 nProps = ( 0 < nFilterOptionsIndex ) ? 4 : 3;
|
||||||
|
|
||||||
|
if ( !aImgOut.isEmpty() )
|
||||||
|
nProps +=1;
|
||||||
|
Sequence<PropertyValue> conversionProperties( nProps );
|
||||||
|
- conversionProperties[0].Name = "Overwrite";
|
||||||
|
- conversionProperties[0].Value <<= true;
|
||||||
|
+ conversionProperties[0].Name = "ConversionRequestOrigin";
|
||||||
|
+ conversionProperties[0].Value <<= OUString("CommandLine");
|
||||||
|
+ conversionProperties[1].Name = "Overwrite";
|
||||||
|
+ conversionProperties[1].Value <<= true;
|
||||||
|
|
||||||
|
- conversionProperties[1].Name = "FilterName";
|
||||||
|
+ conversionProperties[2].Name = "FilterName";
|
||||||
|
if( 0 < nFilterOptionsIndex )
|
||||||
|
{
|
||||||
|
- conversionProperties[1].Value <<= aFilter.copy(0, nFilterOptionsIndex);
|
||||||
|
+ OUString sFilterName = aFilter.copy(0, nFilterOptionsIndex);
|
||||||
|
+ OUString sFilterOptions = aFilter.copy(nFilterOptionsIndex + 1);
|
||||||
|
+
|
||||||
|
+ if (sFilterName == "Text - txt - csv (StarCalc)")
|
||||||
|
+ {
|
||||||
|
+ sal_Int32 nIdx(0);
|
||||||
|
+ // If the 11th token is '-1' then we export a file
|
||||||
|
+ // per sheet where the file name is based on the suggested
|
||||||
|
+ // output filename concatenated with the sheet name, so adjust
|
||||||
|
+ // the output and overwrite messages
|
||||||
|
+ // If the 11th token is not present or numeric 0 then the
|
||||||
|
+ // default sheet is exported with the output filename. If it
|
||||||
|
+ // is numeric >0 then that sheet (1-based) with the output
|
||||||
|
+ // filename concatenated with the sheet name. So even if
|
||||||
|
+ // that is a single file, the multi file target mechanism is
|
||||||
|
+ // used.
|
||||||
|
+ const OUString aTok(sFilterOptions.getToken(11, ',', nIdx));
|
||||||
|
+ // Actual validity is checked in Calc, here just check for
|
||||||
|
+ // presence of numeric value at start.
|
||||||
|
+ bMultiFileTarget = (!aTok.isEmpty() && aTok.toInt32() != 0);
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ conversionProperties[2].Value <<= sFilterName;
|
||||||
|
|
||||||
|
- conversionProperties[2].Name = "FilterOptions";
|
||||||
|
- conversionProperties[2].Value <<= aFilter.copy(nFilterOptionsIndex + 1);
|
||||||
|
+ conversionProperties[3].Name = "FilterOptions";
|
||||||
|
+ conversionProperties[3].Value <<= sFilterOptions;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
- conversionProperties[1].Value <<= aFilter;
|
||||||
|
+ conversionProperties[2].Value <<= aFilter;
|
||||||
|
}
|
||||||
|
|
||||||
|
if ( !aImgOut.isEmpty() )
|
||||||
|
{
|
||||||
|
+ assert(conversionProperties[nProps-1].Name.isEmpty());
|
||||||
|
conversionProperties[nProps-1].Name = "ImageFilter";
|
||||||
|
conversionProperties[nProps-1].Value <<= aImgOut;
|
||||||
|
}
|
||||||
|
@@ -639,9 +667,11 @@ bool DispatchWatcher::executeDispatchRequests( const std::vector<DispatchRequest
|
||||||
|
OString aTargetURL8 = OUStringToOString(aTempName, osl_getThreadTextEncoding());
|
||||||
|
if (aDispatchRequest.aRequestType != REQUEST_CAT)
|
||||||
|
{
|
||||||
|
- std::cout << "convert " << aSource8 << " -> " << aTargetURL8;
|
||||||
|
+ std::cout << "convert " << aSource8;
|
||||||
|
+ if (!bMultiFileTarget)
|
||||||
|
+ std::cout << " -> " << aTargetURL8;
|
||||||
|
std::cout << " using filter : " << OUStringToOString(aFilter, osl_getThreadTextEncoding()) << std::endl;
|
||||||
|
- if (FStatHelper::IsDocument(aOutFile))
|
||||||
|
+ if (!bMultiFileTarget && FStatHelper::IsDocument(aOutFile))
|
||||||
|
std::cout << "Overwriting: " << OUStringToOString(aTempName, osl_getThreadTextEncoding()) << std::endl ;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
diff --git a/sc/source/ui/dbgui/imoptdlg.cxx b/sc/source/ui/dbgui/imoptdlg.cxx
|
||||||
|
index 071f1b0257bc..a362e4df0ee7 100644
|
||||||
|
--- a/sc/source/ui/dbgui/imoptdlg.cxx
|
||||||
|
+++ b/sc/source/ui/dbgui/imoptdlg.cxx
|
||||||
|
@@ -20,6 +20,7 @@
|
||||||
|
#include <imoptdlg.hxx>
|
||||||
|
#include <asciiopt.hxx>
|
||||||
|
#include <comphelper/string.hxx>
|
||||||
|
+#include <unotools/charclass.hxx>
|
||||||
|
#include <osl/thread.h>
|
||||||
|
#include <global.hxx>
|
||||||
|
|
||||||
|
@@ -43,6 +44,7 @@ ScImportOptions::ScImportOptions( const OUString& rStr )
|
||||||
|
bSaveNumberAsSuch = true;
|
||||||
|
bSaveFormulas = false;
|
||||||
|
bRemoveSpace = false;
|
||||||
|
+ nSheetToExport = 0;
|
||||||
|
sal_Int32 nTokenCount = comphelper::string::getTokenCount(rStr, ',');
|
||||||
|
if ( nTokenCount < 3 )
|
||||||
|
return;
|
||||||
|
@@ -77,6 +79,16 @@ ScImportOptions::ScImportOptions( const OUString& rStr )
|
||||||
|
bSaveFormulas = rStr.getToken(0, ',', nIdx) == "true";
|
||||||
|
if ( nTokenCount >= 11 )
|
||||||
|
bRemoveSpace = rStr.getToken(0, ',', nIdx) == "true";
|
||||||
|
+ if ( nTokenCount >= 12 )
|
||||||
|
+ {
|
||||||
|
+ const OUString aTok(rStr.getToken(0, ',', nIdx));
|
||||||
|
+ if (aTok == "-1")
|
||||||
|
+ nSheetToExport = -1; // all
|
||||||
|
+ else if (aTok.isEmpty() || CharClass::isAsciiNumeric(aTok))
|
||||||
|
+ nSheetToExport = aTok.toInt32();
|
||||||
|
+ else
|
||||||
|
+ nSheetToExport = -23; // invalid, force error
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
@@ -99,7 +111,9 @@ OUString ScImportOptions::BuildString() const
|
||||||
|
"," +
|
||||||
|
OUString::boolean( bSaveFormulas ) + // "save formulas": not in ScAsciiOptions
|
||||||
|
"," +
|
||||||
|
- OUString::boolean( bRemoveSpace ); // same as "Remove space" in ScAsciiOptions
|
||||||
|
+ OUString::boolean( bRemoveSpace ) + // same as "Remove space" in ScAsciiOptions
|
||||||
|
+ "," +
|
||||||
|
+ OUString::number(nSheetToExport) ; // Only available for command line --convert-to
|
||||||
|
|
||||||
|
return aResult;
|
||||||
|
}
|
||||||
|
diff --git a/sc/source/ui/docshell/docsh.cxx b/sc/source/ui/docshell/docsh.cxx
|
||||||
|
index 91020db0b2e0..5fdfddd0c89b 100644
|
||||||
|
--- a/sc/source/ui/docshell/docsh.cxx
|
||||||
|
+++ b/sc/source/ui/docshell/docsh.cxx
|
||||||
|
@@ -44,6 +44,7 @@
|
||||||
|
#include <sfx2/objface.hxx>
|
||||||
|
#include <sfx2/viewfrm.hxx>
|
||||||
|
#include <svl/documentlockfile.hxx>
|
||||||
|
+#include <svl/fstathelper.hxx>
|
||||||
|
#include <svl/sharecontrolfile.hxx>
|
||||||
|
#include <svl/urihelper.hxx>
|
||||||
|
#include <osl/file.hxx>
|
||||||
|
@@ -119,6 +120,7 @@
|
||||||
|
#include <comphelper/processfactory.hxx>
|
||||||
|
#include <comphelper/string.hxx>
|
||||||
|
#include <unotools/configmgr.hxx>
|
||||||
|
+#include <unotools/ucbstreamhelper.hxx>
|
||||||
|
#include <uiitems.hxx>
|
||||||
|
#include <dpobject.hxx>
|
||||||
|
#include <markdata.hxx>
|
||||||
|
@@ -1925,7 +1927,7 @@ void escapeTextSep(sal_Int32 nPos, const StrT& rStrDelim, StrT& rStr)
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
-void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt )
|
||||||
|
+void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt, SCTAB nTab )
|
||||||
|
{
|
||||||
|
sal_Unicode cDelim = rAsciiOpt.nFieldSepCode;
|
||||||
|
sal_Unicode cStrDelim = rAsciiOpt.nTextSepCode;
|
||||||
|
@@ -1971,7 +1973,6 @@ void ScDocShell::AsciiSave( SvStream& rStream, const ScImportOptions& rAsciiOpt
|
||||||
|
|
||||||
|
SCCOL nStartCol = 0;
|
||||||
|
SCROW nStartRow = 0;
|
||||||
|
- SCTAB nTab = GetSaveTab();
|
||||||
|
SCCOL nEndCol;
|
||||||
|
SCROW nEndRow;
|
||||||
|
m_aDocument.GetCellArea( nTab, nEndCol, nEndRow );
|
||||||
|
@@ -2389,35 +2390,129 @@ bool ScDocShell::ConvertTo( SfxMedium &rMed )
|
||||||
|
}
|
||||||
|
else if (aFltName == pFilterAscii)
|
||||||
|
{
|
||||||
|
- SvStream* pStream = rMed.GetOutStream();
|
||||||
|
- if (pStream)
|
||||||
|
+ OUString sItStr;
|
||||||
|
+ SfxItemSet* pSet = rMed.GetItemSet();
|
||||||
|
+ const SfxPoolItem* pItem;
|
||||||
|
+ if ( pSet && SfxItemState::SET ==
|
||||||
|
+ pSet->GetItemState( SID_FILE_FILTEROPTIONS, true, &pItem ) )
|
||||||
|
{
|
||||||
|
- OUString sItStr;
|
||||||
|
- SfxItemSet* pSet = rMed.GetItemSet();
|
||||||
|
- const SfxPoolItem* pItem;
|
||||||
|
- if ( pSet && SfxItemState::SET ==
|
||||||
|
- pSet->GetItemState( SID_FILE_FILTEROPTIONS, true, &pItem ) )
|
||||||
|
+ sItStr = static_cast<const SfxStringItem*>(pItem)->GetValue();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ if ( sItStr.isEmpty() )
|
||||||
|
+ {
|
||||||
|
+ // default for ascii export (from API without options):
|
||||||
|
+ // ISO8859-1/MS_1252 encoding, comma, double quotes
|
||||||
|
+
|
||||||
|
+ ScImportOptions aDefOptions( ',', '"', RTL_TEXTENCODING_MS_1252 );
|
||||||
|
+ sItStr = aDefOptions.BuildString();
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ weld::WaitObject aWait( GetActiveDialogParent() );
|
||||||
|
+ ScImportOptions aOptions( sItStr );
|
||||||
|
+
|
||||||
|
+ if (aOptions.nSheetToExport)
|
||||||
|
+ {
|
||||||
|
+ // Only from command line --convert-to
|
||||||
|
+ bRet = true;
|
||||||
|
+
|
||||||
|
+ // Verbose only from command line, not UI (in case we actually
|
||||||
|
+ // implement that) nor macro filter options.
|
||||||
|
+ bool bVerbose = false;
|
||||||
|
+ const css::uno::Sequence<css::beans::PropertyValue> & rArgs = rMed.GetArgs();
|
||||||
|
+ const auto pProp = std::find_if( rArgs.begin(), rArgs.end(),
|
||||||
|
+ [](const css::beans::PropertyValue& rProp) { return rProp.Name == "ConversionRequestOrigin"; });
|
||||||
|
+ if (pProp != rArgs.end())
|
||||||
|
{
|
||||||
|
- sItStr = static_cast<const SfxStringItem*>(pItem)->GetValue();
|
||||||
|
+ OUString aOrigin;
|
||||||
|
+ pProp->Value >>= aOrigin;
|
||||||
|
+ bVerbose = (aOrigin == "CommandLine");
|
||||||
|
}
|
||||||
|
|
||||||
|
- if ( sItStr.isEmpty() )
|
||||||
|
+ SCTAB nStartTab;
|
||||||
|
+ SCTAB nCount = m_aDocument.GetTableCount();
|
||||||
|
+ if (aOptions.nSheetToExport == -1)
|
||||||
|
{
|
||||||
|
- // default for ascii export (from API without options):
|
||||||
|
- // ISO8859-1/MS_1252 encoding, comma, double quotes
|
||||||
|
-
|
||||||
|
- ScImportOptions aDefOptions( ',', '"', RTL_TEXTENCODING_MS_1252 );
|
||||||
|
- sItStr = aDefOptions.BuildString();
|
||||||
|
+ // All sheets.
|
||||||
|
+ nStartTab = 0;
|
||||||
|
+ }
|
||||||
|
+ else if (0 < aOptions.nSheetToExport && aOptions.nSheetToExport <= nCount)
|
||||||
|
+ {
|
||||||
|
+ // One sheet, 1-based.
|
||||||
|
+ nCount = aOptions.nSheetToExport;
|
||||||
|
+ nStartTab = nCount - 1;
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ // Usage error, no export but log.
|
||||||
|
+ if (bVerbose)
|
||||||
|
+ {
|
||||||
|
+ if (aOptions.nSheetToExport < 0)
|
||||||
|
+ std::cout << "Bad sheet number string given." << std::endl;
|
||||||
|
+ else
|
||||||
|
+ std::cout << "No sheet number " << aOptions.nSheetToExport
|
||||||
|
+ << ", number of sheets is " << nCount << std::endl;
|
||||||
|
+ }
|
||||||
|
+ nStartTab = 0;
|
||||||
|
+ nCount = 0;
|
||||||
|
+ SetError(SCERR_EXPORT_DATA);
|
||||||
|
+ bRet = false;
|
||||||
|
}
|
||||||
|
|
||||||
|
- weld::WaitObject aWait( GetActiveDialogParent() );
|
||||||
|
- ScImportOptions aOptions( sItStr );
|
||||||
|
- AsciiSave( *pStream, aOptions );
|
||||||
|
- bRet = true;
|
||||||
|
+ INetURLObject aURLObject(rMed.GetURLObject());
|
||||||
|
+ OUString sExt = aURLObject.CutExtension();
|
||||||
|
+ OUString sBaseName = aURLObject.GetLastName();
|
||||||
|
+ aURLObject.CutLastName();
|
||||||
|
|
||||||
|
- if (m_aDocument.GetTableCount() > 1)
|
||||||
|
- if (!rMed.GetError())
|
||||||
|
- rMed.SetError(SCWARN_EXPORT_ASCII);
|
||||||
|
+ for (SCTAB i = nStartTab; i < nCount; ++i)
|
||||||
|
+ {
|
||||||
|
+ OUString sTabName;
|
||||||
|
+ if (!m_aDocument.GetName(i, sTabName))
|
||||||
|
+ sTabName = OUString::number(i);
|
||||||
|
+ INetURLObject aSheetURLObject(aURLObject);
|
||||||
|
+ OUString sFileName = sBaseName + "-" + sTabName;
|
||||||
|
+ if (!sExt.isEmpty())
|
||||||
|
+ sFileName = sFileName + "." + sExt;
|
||||||
|
+ aSheetURLObject.Append(sFileName);
|
||||||
|
+
|
||||||
|
+ // log similar to DispatchWatcher::executeDispatchRequests
|
||||||
|
+ OUString aOutFile = aSheetURLObject.GetMainURL(INetURLObject::DecodeMechanism::NONE);
|
||||||
|
+ if (bVerbose)
|
||||||
|
+ {
|
||||||
|
+ OUString aDisplayedName;
|
||||||
|
+ if (osl::FileBase::E_None != osl::FileBase::getSystemPathFromFileURL(aOutFile, aDisplayedName))
|
||||||
|
+ aDisplayedName = aOutFile;
|
||||||
|
+ std::cout << "Writing sheet " << OUStringToOString(sTabName, osl_getThreadTextEncoding()) << " -> "
|
||||||
|
+ << OUStringToOString(aDisplayedName, osl_getThreadTextEncoding())
|
||||||
|
+ << std::endl;
|
||||||
|
+
|
||||||
|
+ if (FStatHelper::IsDocument(aOutFile))
|
||||||
|
+ std::cout << "Overwriting: " << OUStringToOString(aDisplayedName, osl_getThreadTextEncoding())
|
||||||
|
+ << std::endl ;
|
||||||
|
+ }
|
||||||
|
+
|
||||||
|
+ std::unique_ptr<SvStream> xStm = ::utl::UcbStreamHelper::CreateStream(aOutFile, StreamMode::TRUNC | StreamMode::WRITE);
|
||||||
|
+ if (!xStm)
|
||||||
|
+ {
|
||||||
|
+ SetError(ERRCODE_IO_CANTCREATE);
|
||||||
|
+ bRet = false;
|
||||||
|
+ break;
|
||||||
|
+ }
|
||||||
|
+ AsciiSave(*xStm, aOptions, i);
|
||||||
|
+ }
|
||||||
|
+ }
|
||||||
|
+ else
|
||||||
|
+ {
|
||||||
|
+ SvStream* pStream = rMed.GetOutStream();
|
||||||
|
+ if (pStream)
|
||||||
|
+ {
|
||||||
|
+ AsciiSave(*pStream, aOptions, GetSaveTab());
|
||||||
|
+ bRet = true;
|
||||||
|
+
|
||||||
|
+ if (m_aDocument.GetTableCount() > 1)
|
||||||
|
+ if (!rMed.GetError())
|
||||||
|
+ rMed.SetError(SCWARN_EXPORT_ASCII);
|
||||||
|
+ }
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (aFltName == pFilterDBase)
|
||||||
|
diff --git a/sc/source/ui/inc/docsh.hxx b/sc/source/ui/inc/docsh.hxx
|
||||||
|
index 41c0b30a42a8..3aa5f6caf311 100644
|
||||||
|
--- a/sc/source/ui/inc/docsh.hxx
|
||||||
|
+++ b/sc/source/ui/inc/docsh.hxx
|
||||||
|
@@ -227,7 +227,7 @@ public:
|
||||||
|
|
||||||
|
ScDrawLayer* MakeDrawLayer();
|
||||||
|
|
||||||
|
- void AsciiSave( SvStream& rStream, const ScImportOptions& rOpt );
|
||||||
|
+ void AsciiSave( SvStream& rStream, const ScImportOptions& rOpt, SCTAB nTab );
|
||||||
|
|
||||||
|
void Execute( SfxRequest& rReq );
|
||||||
|
void GetState( SfxItemSet &rSet );
|
||||||
|
diff --git a/sc/source/ui/inc/imoptdlg.hxx b/sc/source/ui/inc/imoptdlg.hxx
|
||||||
|
index bac941c2a377..382067d67813 100644
|
||||||
|
--- a/sc/source/ui/inc/imoptdlg.hxx
|
||||||
|
+++ b/sc/source/ui/inc/imoptdlg.hxx
|
||||||
|
@@ -32,7 +32,8 @@ public:
|
||||||
|
ScImportOptions( sal_Unicode nFieldSep, sal_Unicode nTextSep, rtl_TextEncoding nEnc )
|
||||||
|
: nFieldSepCode(nFieldSep), nTextSepCode(nTextSep),
|
||||||
|
bFixedWidth(false), bSaveAsShown(false), bQuoteAllText(false),
|
||||||
|
- bSaveNumberAsSuch(true), bSaveFormulas(false), bRemoveSpace(false)
|
||||||
|
+ bSaveNumberAsSuch(true), bSaveFormulas(false), bRemoveSpace(false),
|
||||||
|
+ nSheetToExport(0)
|
||||||
|
{ SetTextEncoding( nEnc ); }
|
||||||
|
|
||||||
|
ScImportOptions& operator=( const ScImportOptions& rCpy ) = default;
|
||||||
|
@@ -51,6 +52,9 @@ public:
|
||||||
|
bool bSaveNumberAsSuch;
|
||||||
|
bool bSaveFormulas;
|
||||||
|
bool bRemoveSpace;
|
||||||
|
+ // "0" for 'current sheet', "-1" for all sheets (each to a separate file),
|
||||||
|
+ // or 1-based specific sheet number (to a separate file).
|
||||||
|
+ sal_Int32 nSheetToExport;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // INCLUDED_SC_SOURCE_UI_INC_IMOPTDLG_HXX
|
||||||
|
--
|
||||||
|
2.31.1
|
||||||
|
|
@ -0,0 +1,72 @@
|
|||||||
|
From bced744fea67d50242701ed55271d40e803ac14e Mon Sep 17 00:00:00 2001
|
||||||
|
From: Michael Stahl <michael.stahl@allotropia.de>
|
||||||
|
Date: Mon, 15 Nov 2021 17:29:59 +0100
|
||||||
|
Subject: [PATCH] tdf#121546 sw: don't use undo array's m_pOutlineNodes
|
||||||
|
|
||||||
|
It's pointless.
|
||||||
|
|
||||||
|
Change-Id: I304c123bffc16e6133d2953bc9a4f7a3afad14ef
|
||||||
|
---
|
||||||
|
sw/source/core/docnode/ndnum.cxx | 2 ++
|
||||||
|
sw/source/core/docnode/nodes.cxx | 18 ++++++++++++------
|
||||||
|
2 files changed, 14 insertions(+), 6 deletions(-)
|
||||||
|
|
||||||
|
diff --git a/sw/source/core/docnode/ndnum.cxx b/sw/source/core/docnode/ndnum.cxx
|
||||||
|
index b3d66affa66e..a7b898ee5f0a 100644
|
||||||
|
--- a/sw/source/core/docnode/ndnum.cxx
|
||||||
|
+++ b/sw/source/core/docnode/ndnum.cxx
|
||||||
|
@@ -38,6 +38,8 @@ bool SwOutlineNodes::Seek_Entry(SwNode* rP, size_type* pnPos) const
|
||||||
|
|
||||||
|
void SwNodes::UpdateOutlineNode(SwNode & rNd)
|
||||||
|
{
|
||||||
|
+ assert(IsDocNodes()); // no point in m_pOutlineNodes for undo nodes
|
||||||
|
+
|
||||||
|
SwTextNode * pTextNd = rNd.GetTextNode();
|
||||||
|
|
||||||
|
if (!(pTextNd && pTextNd->IsOutlineStateChanged()))
|
||||||
|
diff --git a/sw/source/core/docnode/nodes.cxx b/sw/source/core/docnode/nodes.cxx
|
||||||
|
index a7a2078b2091..ab3eb62ac9f2 100644
|
||||||
|
--- a/sw/source/core/docnode/nodes.cxx
|
||||||
|
+++ b/sw/source/core/docnode/nodes.cxx
|
||||||
|
@@ -109,6 +109,16 @@ SwNodes::~SwNodes()
|
||||||
|
m_pEndOfContent.reset();
|
||||||
|
}
|
||||||
|
|
||||||
|
+static bool IsInsertOutline(SwNodes const& rNodes, sal_uLong const nIndex)
|
||||||
|
+{
|
||||||
|
+ if (!rNodes.IsDocNodes())
|
||||||
|
+ {
|
||||||
|
+ return false;
|
||||||
|
+ }
|
||||||
|
+ return nIndex < rNodes.GetEndOfRedlines().StartOfSectionNode()->GetIndex()
|
||||||
|
+ || rNodes.GetEndOfRedlines().GetIndex() < nIndex;
|
||||||
|
+}
|
||||||
|
+
|
||||||
|
void SwNodes::ChgNode( SwNodeIndex const & rDelPos, sal_uLong nSz,
|
||||||
|
SwNodeIndex& rInsPos, bool bNewFrames )
|
||||||
|
{
|
||||||
|
@@ -124,9 +134,7 @@ void SwNodes::ChgNode( SwNodeIndex const & rDelPos, sal_uLong nSz,
|
||||||
|
|
||||||
|
// NEVER include nodes from the RedLineArea
|
||||||
|
sal_uLong nNd = rInsPos.GetIndex();
|
||||||
|
- bool bInsOutlineIdx = (
|
||||||
|
- rNds.GetEndOfRedlines().StartOfSectionNode()->GetIndex() >= nNd ||
|
||||||
|
- nNd >= rNds.GetEndOfRedlines().GetIndex() );
|
||||||
|
+ bool const bInsOutlineIdx = IsInsertOutline(rNds, nNd);
|
||||||
|
|
||||||
|
if( &rNds == this ) // if in the same node array -> move
|
||||||
|
{
|
||||||
|
@@ -478,9 +486,7 @@ bool SwNodes::MoveNodes( const SwNodeRange& aRange, SwNodes & rNodes,
|
||||||
|
|
||||||
|
// NEVER include nodes from the RedLineArea
|
||||||
|
sal_uLong nNd = aIdx.GetIndex();
|
||||||
|
- bool bInsOutlineIdx = ( rNodes.GetEndOfRedlines().
|
||||||
|
- StartOfSectionNode()->GetIndex() >= nNd ||
|
||||||
|
- nNd >= rNodes.GetEndOfRedlines().GetIndex() );
|
||||||
|
+ bool const bInsOutlineIdx = IsInsertOutline(rNodes, nNd);
|
||||||
|
|
||||||
|
if( bNewFrames )
|
||||||
|
// delete all frames
|
||||||
|
--
|
||||||
|
2.33.1
|
||||||
|
|
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmGqk2oACgkQ9DSh76/u
|
||||||
|
rqPr6A//ViToQECHwnSk30IjrjyAP516Cgad9cONe+vz1bSLAo7urIAOwLSFot+T
|
||||||
|
CjRFvKIvMRt4m2pPiBQTfEAIqq4rWur4jP/5SDRz4oAdrZUNGztJp+MKeLtH3yxR
|
||||||
|
DyWbGxtr+XoC2c5wbWmL8SPSRXoZQAdnxqb/ie4Em3DVmSohCLkMeTBMxd5vagDz
|
||||||
|
jJsCv31SyGhMEkZy8TD903u9CDlwTc5heD4LL7iIX6XIozzhvywPhj8qF+8F0mj3
|
||||||
|
KJQBhJFoWJRYjb0Vi8pnnXpE/1USzaHtcLB3jkg5SwbrC0EzDxWBsLZiAbNA6jAk
|
||||||
|
RUch2zhzXoI/hyMKEG/pw2FdcvndDtnClYnszcx/hVBlS+35ZkLSp9SklUydj2Hg
|
||||||
|
/Xed86J+BY+IOIgiMHi2Vr8CDgzK3ZTYhqiFeKGqtf8Vxf6PcpJy2OYus56nCD9j
|
||||||
|
pyLyczwRPvlsXxiWY0kPLvOE4h7zYCw+vLlwH6VSSxEsD7G+vzFS2xt9l0z6SdhX
|
||||||
|
xDZF9V08TLpcWJ8/IkUdRutoOMazghOrfL97YjUjnWOVIxAAXA1EPietDLQPdcbB
|
||||||
|
+tCOqSqXaEkrM5dvZo07p3mEZjv1KxhWqtjE3DsyqKBfHt6d5j/q61+9/87uJxNT
|
||||||
|
Rgh1MLAxbeo6E2iwp3kmOS5NLfxXkRjTIKzqnxr02nXXOMXSOo0=
|
||||||
|
=I1bc
|
||||||
|
-----END PGP SIGNATURE-----
|
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 4.3 KiB |
After Width: | Height: | Size: 4.3 KiB |
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmGqk3AACgkQ9DSh76/u
|
||||||
|
rqPfLA//T1a1rqVsDz3Ozx+EDtqslPvXN4RNHtn6kQOR+0d9JkuA/habErjHzpv3
|
||||||
|
pH1OwKo8f+iOE9tWjZpUOIfDUcFSfX/5EyEGTWKqg51H8Eu8rD1OTs11+i/VDoqs
|
||||||
|
oSi7I2SrUu0nNfAMcgYK1omYXs5euN/9VySujAMo0n0CHz6bGwyGkObBZSkYYJUa
|
||||||
|
oSAxxkrLQRQcYWrPloDxJgsvySZ3gMnrxesZp0WQl2eCBZXEzKf/GJyjdZqrDPzV
|
||||||
|
3ClJ952tzqNcrSFzzXK+UduM5heQcXvglL951StimzLgefrR1uDfQ6KD7dnysVdz
|
||||||
|
N88EfsLpDMufBoQK8lf5COYiR4Mi4DE81/vqSr/dmZemtZDD49jrrpZGol47nILg
|
||||||
|
BkAHqfEmfYXScUIU4w6YYD4ZBmdw+9WctSbXHOuX5z9m6/52LLVuZ62caEW4ZoNg
|
||||||
|
W9hv+Okfd6S4MGavZzwMoYuEQXUPhxbFXCDx58G3zO3RrJDpjAeZouqrKjGNTu9G
|
||||||
|
bVZPGjiABAcnYVYHFZgJiwO5b93DGDco3+2LvgaodmaBCBBqjLuEekNOqZaKnH7a
|
||||||
|
ufcIkDHfZyBvHV8b6ISImmx4xuPSeln8K5RQV+Bz4s2CZapt8lryPZwOvNjLA9EP
|
||||||
|
lOy8+Dk3afwaGrwRUcpu16eCRZT6QvHE+bLd7TJd0OWusVBX7Mg=
|
||||||
|
=iDHZ
|
||||||
|
-----END PGP SIGNATURE-----
|
After Width: | Height: | Size: 4.7 KiB |
After Width: | Height: | Size: 3.9 KiB |
After Width: | Height: | Size: 4.1 KiB |
@ -0,0 +1,16 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
OOO_ARCH=$(uname -m)
|
||||||
|
case $OOO_ARCH in
|
||||||
|
x86_64 | s390x | sparc64 | aarch64)
|
||||||
|
OOO_LIB_DIR="/usr/lib64"
|
||||||
|
SECONDARY_LIB_DIR="/usr/lib"
|
||||||
|
;;
|
||||||
|
* )
|
||||||
|
OOO_LIB_DIR="/usr/lib"
|
||||||
|
SECONDARY_LIB_DIR="/usr/lib64"
|
||||||
|
;;
|
||||||
|
esac
|
||||||
|
if [ ! -x $OOO_LIB_DIR/BRAND/program/LAUNCHER ]; then
|
||||||
|
OOO_LIB_DIR="$SECONDARY_LIB_DIR"
|
||||||
|
fi
|
||||||
|
exec $OOO_LIB_DIR/BRAND/program/LAUNCHER "$@"
|
@ -0,0 +1,16 @@
|
|||||||
|
-----BEGIN PGP SIGNATURE-----
|
||||||
|
|
||||||
|
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAmGqk3EACgkQ9DSh76/u
|
||||||
|
rqPU8g/8DwKupld+tKgdYYTjrbxn0eKRU8Rj9J94Z6MTr/hgxC+lewywg/ks+D0J
|
||||||
|
YFn2Stc95Z52bm9k7dg/sGqJYYXTACiAnvtTWe6jnk9Ze4k/4iMbIoTivnI5C2dU
|
||||||
|
M96crGxkFbpEJAEOaMTClckt3cJ0Cfm3s+IHZS6ydjjOnYDv8PaRcOZbbRnzQtuh
|
||||||
|
8/vit3Xlp3RN2dxCilgv3JnL4woTCKnWIuL/nBHk606DcFlHYBLsgAQdA/Nbt0hs
|
||||||
|
KG2S3PiAgB2hfuoduNV33IfEkCn/nzA1GxGhkv6WLYh/PuCxG0KULsNndrTOD2gU
|
||||||
|
Vxyiun+eMk9X/Rh6Pqd7Vn75bttsHEiorScejXRkcZcaM+vyKapHgf2N+ynXDU4k
|
||||||
|
amzhaimwroTwt1jFX046NsuFIUY8Ck4xlbWkPv34u/EgZRaKHAX0PhNCZJigTsTM
|
||||||
|
vagEyHYvo+WLDk+IxNRVBx5ceTbB8PzNXQc+cyvnoy/RuswqsjaijSrbautiyM2m
|
||||||
|
jStUAiOxBKanye8IztJuCSUPNczfi85bZ2PDxuAxytAgfwKpiEvMCJR4lpoOpeW4
|
||||||
|
EXuFWzNnpH6j28aro2fQQhZcp4XSxQuxkrjJ5+gtsIxyiCSizVfPzrAYNGAtwrHI
|
||||||
|
f9q+sKdmywywUZ6W2LXYL8f3excZddjum9aVm2cmpezy1mXLX/k=
|
||||||
|
=a6IV
|
||||||
|
-----END PGP SIGNATURE-----
|
After Width: | Height: | Size: 4.4 KiB |