import libreoffice-6.4.7.2-5.el8

This commit is contained in:
CentOS Sources 2021-03-30 15:20:55 -04:00 committed by Stepan Oksanichenko
parent 9e49b5658b
commit 7b003310b0
47 changed files with 13963 additions and 2435 deletions

6
.gitignore vendored
View File

@ -3,13 +3,13 @@ SOURCES/185d60944ea767075d27247c3162b3bc-unowinreg.dll
SOURCES/884ed41809687c3e168fc7c19b16585149ff058eca79acbf3ee784f6630704cc-opens___.ttf
SOURCES/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
SOURCES/gpgkey-C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3.gpg.asc
SOURCES/libreoffice-6.3.6.2.tar.xz
SOURCES/libreoffice-6.4.7.2.tar.xz
SOURCES/libreoffice-base-symbolic.svg
SOURCES/libreoffice-calc-symbolic.svg
SOURCES/libreoffice-draw-symbolic.svg
SOURCES/libreoffice-help-6.3.6.2.tar.xz
SOURCES/libreoffice-help-6.4.7.2.tar.xz
SOURCES/libreoffice-impress-symbolic.svg
SOURCES/libreoffice-main-symbolic.svg
SOURCES/libreoffice-math-symbolic.svg
SOURCES/libreoffice-translations-6.3.6.2.tar.xz
SOURCES/libreoffice-translations-6.4.7.2.tar.xz
SOURCES/libreoffice-writer-symbolic.svg

View File

@ -3,13 +3,13 @@
d336802a36ed2c87dd243e7c2f1d0542dace5cca SOURCES/884ed41809687c3e168fc7c19b16585149ff058eca79acbf3ee784f6630704cc-opens___.ttf
2d49e11b0b711970f494294dc3698f05eb294853 SOURCES/a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2.zip
7b5fd93d787fbc6d9c2d4025d543730ee8dc4559 SOURCES/gpgkey-C2839ECAD9408FBE9531C3E9F434A1EFAFEEAEA3.gpg.asc
79aa683b98c465ce570652852faead9f973f8d95 SOURCES/libreoffice-6.3.6.2.tar.xz
b29d8cdb3db8d6b317e1cb9117b020d7e676e601 SOURCES/libreoffice-6.4.7.2.tar.xz
54fc749ba924f9ca4e0391caaf579ab344302038 SOURCES/libreoffice-base-symbolic.svg
9de544172d736d59589767000c1f657034a5d53d SOURCES/libreoffice-calc-symbolic.svg
0f6dc4726da0920869354fbe4b2924f9ac569b4a SOURCES/libreoffice-draw-symbolic.svg
f6f94206dad1038c4369610a90e1727e4266ea80 SOURCES/libreoffice-help-6.3.6.2.tar.xz
ca7e087ef62f30c033db84ceb0f6a4021f53653e SOURCES/libreoffice-help-6.4.7.2.tar.xz
8c74dd667c660cc643c4d715dd50491ba92146d5 SOURCES/libreoffice-impress-symbolic.svg
c77acd04a7647b09745f9424ab0f65d52dfcd397 SOURCES/libreoffice-main-symbolic.svg
3857a55644148eb25ed1a594bd00d1262761fb39 SOURCES/libreoffice-math-symbolic.svg
52b483e3d868345f7aa9ed187fd8b59d713d24fc SOURCES/libreoffice-translations-6.3.6.2.tar.xz
0f74fd6286e71ff2b7c7bc01f41c8972e354d81c SOURCES/libreoffice-translations-6.4.7.2.tar.xz
d4f0674ad46a832120db956cc01a27fdc2060458 SOURCES/libreoffice-writer-symbolic.svg

View File

@ -0,0 +1,46 @@
From ceac69bff953ebd9b54a1f3a032079523c4414d0 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Sun, 25 Oct 2020 20:23:39 +0000
Subject: [PATCH] 0.5.1 is sufficient
Change-Id: I710a83de8f261d6164eb760d3290c963a5bbe5e1
---
configure.ac | 15 +--------------
1 file changed, 1 insertion(+), 14 deletions(-)
diff --git a/configure.ac b/configure.ac
index a6696df15f06..c17fdf5b0d22 100644
--- a/configure.ac
+++ b/configure.ac
@@ -7050,7 +7050,7 @@ dnl Check for system libcmis
dnl ===================================================================
# libcmis requires curl and we can't build curl for iOS
if test $_os != iOS; then
- libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.2])
+ libo_CHECK_SYSTEM_MODULE([libcmis],[LIBCMIS],[libcmis-0.5 >= 0.5.0])
ENABLE_LIBCMIS=TRUE
else
ENABLE_LIBCMIS=
@@ -7090,19 +7090,6 @@ elif test "$GCC" = "yes" -o "$COM_IS_CLANG" = TRUE; then
#include <functional>
#include <vector>
- #if defined SYSTEM_LIBCMIS
- // See ucb/source/ucp/cmis/auth_provider.hxx:
- #if !defined __clang__
- #pragma GCC diagnostic push
- #pragma GCC diagnostic ignored "-Wdeprecated"
- #pragma GCC diagnostic ignored "-Wunused-but-set-parameter"
- #endif
- #include <libcmis/libcmis.hxx>
- #if !defined __clang__
- #pragma GCC diagnostic pop
- #endif
- #endif
-
void f(std::vector<int> & v, std::function<bool(int, int)> fn) {
std::sort(v.begin(), v.end(), fn);
}
--
2.26.2

View File

@ -0,0 +1,26 @@
From 92c95c8c3724f267e57827f69f93ef4e6387f793 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Sun, 25 Oct 2020 21:14:10 +0000
Subject: [PATCH] 1.2.25 is sufficient
Change-Id: Ie184fbaaf6eea0ae1a39bf142d3391768be9607d
---
configure.ac | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/configure.ac b/configure.ac
index a62c131a6d0e..c815ea2c3f8b 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8364,7 +8364,7 @@ libo_CHECK_SYSTEM_MODULE([expat], [EXPAT], [expat])
dnl ===================================================================
dnl Check for system xmlsec
dnl ===================================================================
-libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.28])
+libo_CHECK_SYSTEM_MODULE([xmlsec], [XMLSEC], [xmlsec1-nss >= 1.2.25])
AC_MSG_CHECKING([whether to enable Embedded OpenType support])
if test "$_os" != "WINNT" -a "$_os" != "Darwin" -a "$enable_eot" = "yes"; then
--
2.26.2

View File

@ -1,59 +0,0 @@
From b8bb7fd853db5d0d7cc4ea9120efb1a707e46c22 Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Tue, 3 Dec 2019 11:56:33 +0100
Subject: [PATCH] Adapt SAL_WARN to C++20 deleted ostream << for sal_Unicode
(aka char16_t)
<http://www.open-std.org/jtc1/sc22/wg21/docs/papers/2019/p1423r3.html> "char8_t
backward compatibility remediation", as implemented now by <https://gcc.gnu.org/
git/?p=gcc.git;a=commit;h=0c5b35933e5b150df0ab487efb2f11ef5685f713> "libstdc++:
P1423R3 char8_t remediation (2/4)" for -std=c++2a, deletes operator << overloads
that would print an integer rather than a (presumably expected) character.
Change-Id: Ic70d3e90e4b990d297e35f07379fe4952e138820
Reviewed-on: https://gerrit.libreoffice.org/84321
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
---
basegfx/source/polygon/b2dsvgpolypolygon.cxx | 2 +-
starmath/source/ooxmlimport.cxx | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/basegfx/source/polygon/b2dsvgpolypolygon.cxx b/basegfx/source/polygon/b2dsvgpolypolygon.cxx
index 2fdacad3653f..490bcd69c9a6 100644
--- a/basegfx/source/polygon/b2dsvgpolypolygon.cxx
+++ b/basegfx/source/polygon/b2dsvgpolypolygon.cxx
@@ -648,7 +648,7 @@ namespace basegfx
default:
{
SAL_WARN("basegfx", "importFromSvgD(): skipping tags in svg:d element (unknown: \""
- << aCurrChar
+ << OUString(aCurrChar)
<< "\")!");
++nPos;
break;
diff --git a/starmath/source/ooxmlimport.cxx b/starmath/source/ooxmlimport.cxx
index f0913f157078..731daa054120 100644
--- a/starmath/source/ooxmlimport.cxx
+++ b/starmath/source/ooxmlimport.cxx
@@ -223,7 +223,7 @@ OUString SmOoxmlImport::handleAcc()
break;
default:
acc = "acute";
- SAL_WARN( "starmath.ooxml", "Unknown m:chr in m:acc \'" << accChr << "\'" );
+ SAL_WARN( "starmath.ooxml", "Unknown m:chr in m:acc \'" << OUString(accChr) << "\'" );
break;
}
OUString e = readOMathArgInElement( M_TOKEN( e ));
@@ -554,7 +554,7 @@ OUString SmOoxmlImport::handleNary()
ret = "sum";
break;
default:
- SAL_WARN( "starmath.ooxml", "Unknown m:nary chr \'" << chr << "\'" );
+ SAL_WARN( "starmath.ooxml", "Unknown m:nary chr \'" << OUString(chr) << "\'" );
break;
}
if( !subHide )
--
2.24.1

View File

@ -1,54 +0,0 @@
From 22005041f829d85e675ea27bdee1770af58a1ea0 Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Mon, 3 Jun 2019 16:21:24 +0200
Subject: [PATCH] AppendInfoBar can return null
e.g., when opening the old help window ("Help - LibreOffice Help" in a build
configured with --with-help to "build the old local help" (configure.ac))
Change-Id: Icecd224774b98811ddf9545c5fa83a85fab259fc
Reviewed-on: https://gerrit.libreoffice.org/73390
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
---
sfx2/source/view/viewfrm.cxx | 24 ++++++++++++++----------
1 file changed, 14 insertions(+), 10 deletions(-)
diff --git a/sfx2/source/view/viewfrm.cxx b/sfx2/source/view/viewfrm.cxx
index 5620f4396e8f..ed8ffa200ef6 100644
--- a/sfx2/source/view/viewfrm.cxx
+++ b/sfx2/source/view/viewfrm.cxx
@@ -1239,16 +1239,20 @@ void SfxViewFrame::Notify( SfxBroadcaster& /*rBC*/, const SfxHint& rHint )
if ((iCurrent > iLast) && !Application::IsHeadlessModeEnabled() && !bIsUITest)
{
VclPtr<SfxInfoBarWindow> pInfoBar = AppendInfoBar("whatsnew", SfxResId(STR_WHATSNEW_TEXT), InfoBarType::Info);
- VclPtrInstance<PushButton> xWhatsNewButton(&GetWindow());
- xWhatsNewButton->SetText(SfxResId(STR_WHATSNEW_BUTTON));
- xWhatsNewButton->SetSizePixel(xWhatsNewButton->GetOptimalSize());
- xWhatsNewButton->SetClickHdl(LINK(this, SfxViewFrame, WhatsNewHandler));
- pInfoBar->addButton(xWhatsNewButton);
-
- //update lastversion
- std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
- officecfg::Setup::Product::ooSetupLastVersion::set(sSetupVersion, batch);
- batch->commit();
+ if (pInfoBar)
+ {
+ VclPtrInstance<PushButton> xWhatsNewButton(&GetWindow());
+ xWhatsNewButton->SetText(SfxResId(STR_WHATSNEW_BUTTON));
+ xWhatsNewButton->SetSizePixel(xWhatsNewButton->GetOptimalSize());
+ xWhatsNewButton->SetClickHdl(LINK(this, SfxViewFrame, WhatsNewHandler));
+ pInfoBar->addButton(xWhatsNewButton);
+
+ //update lastversion
+ std::shared_ptr<comphelper::ConfigurationChanges> batch(comphelper::ConfigurationChanges::create());
+ officecfg::Setup::Product::ooSetupLastVersion::set(
+ sSetupVersion, batch);
+ batch->commit();
+ }
}
}
--
2.25.1

View File

@ -0,0 +1,64 @@
From acca5c87e73255db350a02d13bf34a62efaf9c93 Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Tue, 21 Apr 2020 14:07:24 +0200
Subject: [PATCH] Flatpak: Add /app/bin/libreoffice ->
/app/libreoffice/program/soffice symlink
Which removes the need to rewrite the
Exec=${UNIXBASISROOTNAME}
lines from sysui/desktop/menus/*.desktop, and helps to harmonize the plain
Flatpak build with the one done from Fedora RPMs (see
<https://src.fedoraproject.org/flatpaks/libreoffice>).
(Also change the manifest command from an absolute path to a filename relative
to PATH. It is not clear to me which one would be better or more conventional,
but at least <https://docs.flatpak.org/en/latest/manifests.html> also uses just
a filename in its example.)
Change-Id: I69c380b84503bf3d85801093fb92567852ceb00b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92837
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
---
solenv/bin/assemble-flatpak.sh | 4 ++--
solenv/flatpak-manifest.in | 2 +-
2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/solenv/bin/assemble-flatpak.sh b/solenv/bin/assemble-flatpak.sh
index b4bce2d4d172..0738fcd59ad2 100755
--- a/solenv/bin/assemble-flatpak.sh
+++ b/solenv/bin/assemble-flatpak.sh
@@ -14,13 +14,13 @@
set -e
cp -r "${PREFIXDIR?}"/lib/libreoffice /app/
+ln -s /app/libreoffice/program/soffice /app/bin/libreoffice
## libreoffice-*.desktop -> org.libreoffice.LibreOffice.*.desktop:
mkdir -p /app/share/applications
for i in "${PREFIXDIR?}"/share/applications/libreoffice-*.desktop
do
- sed -e 's,^Exec=libreoffice,Exec=/app/libreoffice/program/soffice,' \
- -e 's/^Icon=libreoffice-/Icon=org.libreoffice.LibreOffice./' "$i" \
+ sed -e 's/^Icon=libreoffice-/Icon=org.libreoffice.LibreOffice./' "$i" \
>/app/share/applications/org.libreoffice.LibreOffice."${i#"${PREFIXDIR?}"/share/applications/libreoffice-}"
done
mv /app/share/applications/org.libreoffice.LibreOffice.startcenter.desktop \
diff --git a/solenv/flatpak-manifest.in b/solenv/flatpak-manifest.in
index 9f64a142dd68..754b6b6dbbe1 100644
--- a/solenv/flatpak-manifest.in
+++ b/solenv/flatpak-manifest.in
@@ -6,7 +6,7 @@
"sdk-extensions": [
"org.freedesktop.Sdk.Extension.openjdk11"
],
- "command": "/app/libreoffice/program/soffice",
+ "command": "libreoffice",
"modules": [
{
"name": "openjdk",
--
2.26.0

View File

@ -1,40 +0,0 @@
From ac68d29966f78ac8799f31f13578e4843a49043f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 14 Apr 2020 13:46:44 +0100
Subject: [PATCH] "General Internet Error" dialog appearing on gio mount
we get a GError of G_IO_ERROR_FAILED_HANDLED which is documented
as "Operation failed and a helper program has already interacted with the user.
Do not display any error dialog." PENDING seems to describe this state
better than a generic error case and results in no error dialog.
Change-Id: Iee382e49edaa0a734526659971e0339991e2c03e
---
ucb/source/ucp/gio/gio_content.cxx | 4 +++-
1 file changed, 3 insertions(+), 1 deletion(-)
diff --git a/ucb/source/ucp/gio/gio_content.cxx b/ucb/source/ucp/gio/gio_content.cxx
index 77a5c0127ae7..8576713974a8 100644
--- a/ucb/source/ucp/gio/gio_content.cxx
+++ b/ucb/source/ucp/gio/gio_content.cxx
@@ -196,6 +196,9 @@ css::uno::Any convertToException(GError *pError, const css::uno::Reference< css:
css::task::InteractionClassification_ERROR, css::ucb::IOErrorCode_NAME_TOO_LONG, aArgs);
EXCEPT(aExcept); }
break;
+ case G_IO_ERROR_FAILED_HANDLED: /* Operation failed and a helper program
+ has already interacted with the user. Do not display any error
+ dialog */
case G_IO_ERROR_PENDING:
{ css::ucb::InteractiveAugmentedIOException aExcept(sMessage, rContext,
css::task::InteractionClassification_ERROR, css::ucb::IOErrorCode_PENDING, aArgs);
@@ -257,7 +260,6 @@ css::uno::Any convertToException(GError *pError, const css::uno::Reference< css:
case G_IO_ERROR_NOT_EMPTY:
case G_IO_ERROR_NOT_SYMBOLIC_LINK:
case G_IO_ERROR_NOT_MOUNTABLE_FILE:
- case G_IO_ERROR_FAILED_HANDLED:
{ css::ucb::InteractiveNetworkGeneralException aExcept(sMessage, rContext,
css::task::InteractionClassification_ERROR);
EXCEPT(aExcept);}
--
2.25.1

View File

@ -1,70 +0,0 @@
From 0c20ed4d58f7b55bcc12fa288b93d1c6d88a7dcc Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Thu, 14 May 2020 14:47:21 +0200
Subject: [PATCH] Keep order of GDK input events intact
As explained at <https://bugzilla.redhat.com/show_bug.cgi?id=1377293#c12>
"[Wayland] When typing fast at high CPU load, LibreOffice breaks key (letter)
order": "with a local LO master --with-lang=ALL ASan+UBSan build (i.e., which
executes somewhat slowly): When typing 'file' in Writer right after it started
up (but no longer after more typing), that gets garbled as 'fiel'." The reason
for that (but probably not for the original issue reported in that rhbz#1377293)
apparently was:
Two GDK_KEY_PRESS events (A and B) were in the GTK event queue.
GtkInstance::AnyInput consumed only A, because it broke from the first while
loop as soon as it saw the first event of appropriate type. In the second while
loop it put A back on the end of the GTK event loop, so that it now followed B.
GtkSalFrame::signalKey (vcl/unx/gtk3/gtk3gtkframe.cxx) thus received the events
in the wrong order.
Dropping the "break" also reveals that GtkInstance::AnyInput should obviously
use a queue (i.e., deque) rather than a stack to hold the events it consumed and
needs to re-enqueue.
This appears to be a regression introduced with
658954e8b50fc264428402dc5a95b0d6f690d191 "Resolves: fdo#48011 writer
idle-callbacks are halting when events pending".
Change-Id: I87d601df118a20ea3dd59e9cebbcf5176db04be8
---
vcl/unx/gtk/gtkinst.cxx | 9 ++++-----
1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/vcl/unx/gtk/gtkinst.cxx b/vcl/unx/gtk/gtkinst.cxx
index 02ed688f366b..744c66b0baf0 100644
--- a/vcl/unx/gtk/gtkinst.cxx
+++ b/vcl/unx/gtk/gtkinst.cxx
@@ -427,25 +427,24 @@ bool GtkInstance::AnyInput( VclInputFlags nType )
return true;
bool bRet = false;
- std::stack<GdkEvent*> aEvents;
+ std::deque<GdkEvent*> aEvents;
GdkEvent *pEvent = nullptr;
while ((pEvent = gdk_event_get()))
{
- aEvents.push(pEvent);
+ aEvents.push_back(pEvent);
VclInputFlags nEventType = categorizeEvent(pEvent);
if ( (nEventType & nType) || ( nEventType == VclInputFlags::NONE && (nType & VclInputFlags::OTHER) ) )
{
bRet = true;
- break;
}
}
while (!aEvents.empty())
{
- pEvent = aEvents.top();
+ pEvent = aEvents.front();
gdk_event_put(pEvent);
gdk_event_free(pEvent);
- aEvents.pop();
+ aEvents.pop_front();
}
#endif
return bRet;
--
2.25.4

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,30 @@
From d59960d5de3f07726594d980152a3bfeb58bace9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Mon, 2 Nov 2020 19:27:04 +0000
Subject: [PATCH 1/8] Resolves: rhbz#1893846 if last close had insert, index
dialog open
when starting a new writer document
Change-Id: I83131c01aa53208a321abade48d48a6f7965d0ff
---
sw/source/ui/index/swuiidxmrk.cxx | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/sw/source/ui/index/swuiidxmrk.cxx b/sw/source/ui/index/swuiidxmrk.cxx
index 33a0eab8cd69..5eca069b963b 100644
--- a/sw/source/ui/index/swuiidxmrk.cxx
+++ b/sw/source/ui/index/swuiidxmrk.cxx
@@ -955,7 +955,8 @@ SwIndexMarkFloatDlg::SwIndexMarkFloatDlg(SfxBindings* _pBindings,
"modules/swriter/ui/indexentry.ui", "IndexEntryDialog")
, m_aContent(m_xDialog, *m_xBuilder, bNew, *::GetActiveWrtShell())
{
- m_aContent.ReInitDlg(*::GetActiveWrtShell());
+ if (SwWrtShell* pSh = ::GetActiveWrtShell())
+ m_aContent.ReInitDlg(*pSh);
Initialize(pInfo);
}
--
2.28.0

View File

@ -1,255 +0,0 @@
From fd1692b657838f137c8974eae7730510b7d190df Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 24 Apr 2020 16:38:26 +0100
Subject: [PATCH] Resolves: tdf#132288 don't merge adjacent properties for
spell checking
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
spell checking relies on each attribute chunk being unmerged with identical
adjacent chunks
squash includes...
nStartPosition and nEndPosition are always the same
and
tdf#132288 preservation of footnote depends on reverse iteration
like TextCharAttribList::FindAttrib does which spell checking
used before
commit 243b5b392906042ab03800e0b5765e6f3513372c
Author: Caolán McNamara <caolanm@redhat.com>
Date: Fri Jun 14 21:56:44 2019 +0100
weld SpellDialog
converted to use an EditEngine instead of a TextEngine in order to
be able to host it in a native widget
Change-Id: Ia835fa054cad0dee4304f16724b9eb0c29b46102
---
cui/source/dialogs/SpellDialog.cxx | 37 ++++++++++++++++--------------
editeng/inc/editdoc.hxx | 3 +++
editeng/source/editeng/editdoc.cxx | 12 +++++++++-
editeng/source/editeng/editeng.cxx | 4 ++++
include/editeng/editeng.hxx | 5 ++++
5 files changed, 43 insertions(+), 18 deletions(-)
diff --git a/cui/source/dialogs/SpellDialog.cxx b/cui/source/dialogs/SpellDialog.cxx
index 1bb15c934552..17bff36056fb 100644
--- a/cui/source/dialogs/SpellDialog.cxx
+++ b/cui/source/dialogs/SpellDialog.cxx
@@ -1142,6 +1142,8 @@ void SentenceEditWindow_Impl::SetDrawingArea(weld::DrawingArea* pDrawingArea)
pDrawingArea->get_text_height() * 6);
pDrawingArea->set_size_request(aSize.Width(), aSize.Height());
WeldEditView::SetDrawingArea(pDrawingArea);
+ // tdf#132288 don't merge equal adjacent attributes
+ m_xEditEngine->DisableAttributeExpanding();
}
SentenceEditWindow_Impl::~SentenceEditWindow_Impl()
@@ -1150,13 +1152,14 @@ SentenceEditWindow_Impl::~SentenceEditWindow_Impl()
namespace
{
- const EECharAttrib* FindCharAttrib(int nStartPosition, int nEndPosition, sal_uInt16 nWhich, std::vector<EECharAttrib>& rAttribList)
+ const EECharAttrib* FindCharAttrib(int nPosition, sal_uInt16 nWhich, std::vector<EECharAttrib>& rAttribList)
{
- for (const auto& rTextAtr : rAttribList)
+ for (auto it = rAttribList.rbegin(); it != rAttribList.rend(); ++it)
{
+ const auto& rTextAtr = *it;
if (rTextAtr.pAttr->Which() != nWhich)
continue;
- if (rTextAtr.nStart <= nStartPosition && rTextAtr.nEnd >= nEndPosition)
+ if (rTextAtr.nStart <= nPosition && rTextAtr.nEnd >= nPosition)
{
return &rTextAtr;
}
@@ -1272,8 +1275,8 @@ bool SentenceEditWindow_Impl::KeyInput(const KeyEvent& rKeyEvt)
m_xEditEngine->GetCharAttribs(0, aAttribList);
auto nCursor = aCurrentSelection.nStartPos;
- const EECharAttrib* pBackAttr = FindCharAttrib(nCursor, nCursor, EE_CHAR_BKGCOLOR, aAttribList);
- const EECharAttrib* pErrorAttr = FindCharAttrib(nCursor, nCursor, EE_CHAR_GRABBAG, aAttribList);
+ const EECharAttrib* pBackAttr = FindCharAttrib(nCursor, EE_CHAR_BKGCOLOR, aAttribList);
+ const EECharAttrib* pErrorAttr = FindCharAttrib(nCursor, EE_CHAR_GRABBAG, aAttribList);
const EECharAttrib* pBackAttrLeft = nullptr;
const EECharAttrib* pErrorAttrLeft = nullptr;
@@ -1299,8 +1302,8 @@ bool SentenceEditWindow_Impl::KeyInput(const KeyEvent& rKeyEvt)
while (nCursor < aCurrentSelection.nEndPos)
{
++nCursor;
- const EECharAttrib* pIntBackAttr = FindCharAttrib(nCursor, nCursor, EE_CHAR_BKGCOLOR, aAttribList);
- const EECharAttrib* pIntErrorAttr = FindCharAttrib(nCursor, nCursor, EE_CHAR_GRABBAG, aAttribList);
+ const EECharAttrib* pIntBackAttr = FindCharAttrib(nCursor, EE_CHAR_BKGCOLOR, aAttribList);
+ const EECharAttrib* pIntErrorAttr = FindCharAttrib(nCursor, EE_CHAR_GRABBAG, aAttribList);
//if any attr has been found then BRACE
if (pIntBackAttr || pIntErrorAttr)
nSelectionType = BRACE;
@@ -1342,8 +1345,8 @@ bool SentenceEditWindow_Impl::KeyInput(const KeyEvent& rKeyEvt)
if (nCursor)
{
--nCursor;
- pBackAttrLeft = FindCharAttrib(nCursor, nCursor, EE_CHAR_BKGCOLOR, aAttribList);
- pErrorAttrLeft = FindCharAttrib(nCursor, nCursor, EE_CHAR_GRABBAG, aAttribList);
+ pBackAttrLeft = FindCharAttrib(nCursor, EE_CHAR_BKGCOLOR, aAttribList);
+ pErrorAttrLeft = FindCharAttrib(nCursor, EE_CHAR_GRABBAG, aAttribList);
bHasFieldLeft = pBackAttrLeft !=nullptr;
bHasErrorLeft = pErrorAttrLeft != nullptr;
++nCursor;
@@ -1492,8 +1495,8 @@ bool SentenceEditWindow_Impl::KeyInput(const KeyEvent& rKeyEvt)
//start position
if (!IsUndoEditMode() && bIsErrorActive)
{
- const EECharAttrib* pFontColor = FindCharAttrib(nCursor, nCursor, EE_CHAR_COLOR, aAttribList);
- const EECharAttrib* pErrorAttrib = FindCharAttrib(m_nErrorStart, m_nErrorStart, EE_CHAR_GRABBAG, aAttribList);
+ const EECharAttrib* pFontColor = FindCharAttrib(nCursor, EE_CHAR_COLOR, aAttribList);
+ const EECharAttrib* pErrorAttrib = FindCharAttrib(m_nErrorStart, EE_CHAR_GRABBAG, aAttribList);
if (pFontColor && pErrorAttrib)
{
m_nErrorStart = pFontColor->nStart;
@@ -1695,7 +1698,7 @@ int SentenceEditWindow_Impl::ChangeMarkedWord(const OUString& rNewWord, Language
auto nDiffLen = rNewWord.getLength() - m_nErrorEnd + m_nErrorStart;
//Remove spell error attribute
m_xEditEngine->UndoActionStart(SPELLUNDO_MOVE_ERROREND);
- const EECharAttrib* pErrorAttrib = FindCharAttrib(m_nErrorStart, m_nErrorStart, EE_CHAR_GRABBAG, aAttribList);
+ const EECharAttrib* pErrorAttrib = FindCharAttrib(m_nErrorStart, EE_CHAR_GRABBAG, aAttribList);
DBG_ASSERT(pErrorAttrib, "no error attribute found");
bool bSpellErrorDescription = false;
SpellErrorDescription aSpellErrorDescription;
@@ -1706,7 +1709,7 @@ int SentenceEditWindow_Impl::ChangeMarkedWord(const OUString& rNewWord, Language
bSpellErrorDescription = true;
}
- const EECharAttrib* pBackAttrib = FindCharAttrib(m_nErrorStart, m_nErrorStart, EE_CHAR_BKGCOLOR, aAttribList);
+ const EECharAttrib* pBackAttrib = FindCharAttrib(m_nErrorStart, EE_CHAR_BKGCOLOR, aAttribList);
ESelection aSel(0, m_nErrorStart, 0, m_nErrorEnd);
m_xEditEngine->QuickInsertText(rNewWord, aSel);
@@ -1721,7 +1724,7 @@ int SentenceEditWindow_Impl::ChangeMarkedWord(const OUString& rNewWord, Language
//attributes following an error at the start of the text are not moved but expanded from the
//text engine - this is done to keep full-paragraph-attributes
//in the current case that handling is not desired
- const EECharAttrib* pLangAttrib = FindCharAttrib(m_nErrorEnd, m_nErrorEnd, EE_CHAR_LANGUAGE, aAttribList);
+ const EECharAttrib* pLangAttrib = FindCharAttrib(m_nErrorEnd, EE_CHAR_LANGUAGE, aAttribList);
if (pLangAttrib && !pLangAttrib->nStart && pLangAttrib->nEnd == nTextLen)
{
@@ -1776,7 +1779,7 @@ bool SentenceEditWindow_Impl::GetErrorDescription(SpellErrorDescription& rSpellE
std::vector<EECharAttrib> aAttribList;
m_xEditEngine->GetCharAttribs(0, aAttribList);
- if (const EECharAttrib* pEECharAttrib = FindCharAttrib(nPosition, nPosition, EE_CHAR_GRABBAG, aAttribList))
+ if (const EECharAttrib* pEECharAttrib = FindCharAttrib(nPosition, EE_CHAR_GRABBAG, aAttribList))
{
ExtractErrorDescription(*pEECharAttrib, rSpellErrorDescription);
return true;
@@ -1895,7 +1898,7 @@ svx::SpellPortions SentenceEditWindow_Impl::CreateSpellPortions() const
const EECharAttrib* pError = nullptr;
while (nCursor < nTextLen)
{
- const EECharAttrib* pLang = FindCharAttrib(nCursor, nCursor, EE_CHAR_LANGUAGE, aAttribList);
+ const EECharAttrib* pLang = FindCharAttrib(nCursor, EE_CHAR_LANGUAGE, aAttribList);
if(pLang && pLang != pLastLang)
{
eLang = static_cast<const SvxLanguageItem*>(pLang->pAttr)->GetLanguage();
@@ -1903,7 +1906,7 @@ svx::SpellPortions SentenceEditWindow_Impl::CreateSpellPortions() const
lcl_InsertBreakPosition_Impl(aBreakPositions, pLang->nEnd, eLang);
pLastLang = pLang;
}
- pError = FindCharAttrib(nCursor, nCursor, EE_CHAR_GRABBAG, aAttribList);
+ pError = FindCharAttrib(nCursor, EE_CHAR_GRABBAG, aAttribList);
if (pError && pLastError != pError)
{
lcl_InsertBreakPosition_Impl(aBreakPositions, pError->nStart, eLang);
diff --git a/editeng/inc/editdoc.hxx b/editeng/inc/editdoc.hxx
index 089addc59c07..258fa945912c 100644
--- a/editeng/inc/editdoc.hxx
+++ b/editeng/inc/editdoc.hxx
@@ -747,6 +747,7 @@ private:
bool bOwnerOfPool:1;
bool bModified:1;
+ bool bDisableAttributeExpanding:1;
private:
void ImplDestroyContents();
@@ -761,6 +762,8 @@ public:
bool IsModified() const { return bModified; }
void SetModified( bool b );
+ void DisableAttributeExpanding() { bDisableAttributeExpanding = true; }
+
void SetModifyHdl( const Link<LinkParamNone*,void>& rLink ) { aModifyHdl = rLink; }
void CreateDefFont( bool bUseStyles );
diff --git a/editeng/source/editeng/editdoc.cxx b/editeng/source/editeng/editdoc.cxx
index 73a356054741..aacc0b2c7b6b 100644
--- a/editeng/source/editeng/editdoc.cxx
+++ b/editeng/source/editeng/editdoc.cxx
@@ -1906,7 +1906,8 @@ EditDoc::EditDoc( SfxItemPool* pPool ) :
bIsTopToBottomVert(false),
bIsFixedCellHeight(false),
bOwnerOfPool(pPool == nullptr),
- bModified(false)
+ bModified(false),
+ bDisableAttributeExpanding(false)
{
// Don't create an empty node, Clear() will be called in EditEngine-CTOR
};
@@ -2354,6 +2355,15 @@ void EditDoc::InsertAttribInSelection( ContentNode* pNode, sal_Int32 nStart, sal
RemoveAttribs( pNode, nStart, nEnd, pStartingAttrib, pEndingAttrib, rPoolItem.Which() );
+ // tdf#132288 By default inserting an attribute beside another that is of
+ // the same type expands the original instead of inserting another. But the
+ // spell check dialog doesn't want that behaviour
+ if (bDisableAttributeExpanding)
+ {
+ pStartingAttrib = nullptr;
+ pEndingAttrib = nullptr;
+ }
+
if ( pStartingAttrib && pEndingAttrib &&
( *(pStartingAttrib->GetItem()) == rPoolItem ) &&
( *(pEndingAttrib->GetItem()) == rPoolItem ) )
diff --git a/editeng/source/editeng/editeng.cxx b/editeng/source/editeng/editeng.cxx
index 458f71b34d3f..f46106a5773c 100644
--- a/editeng/source/editeng/editeng.cxx
+++ b/editeng/source/editeng/editeng.cxx
@@ -2802,6 +2802,10 @@ bool EditEngine::IsPageOverflow() {
return pImpEditEngine->IsPageOverflow();
}
+void EditEngine::DisableAttributeExpanding() {
+ pImpEditEngine->GetEditDoc().DisableAttributeExpanding();
+}
+
EFieldInfo::EFieldInfo()
{
}
diff --git a/include/editeng/editeng.hxx b/include/editeng/editeng.hxx
index f585ce8b5796..7d4129c0ad0b 100644
--- a/include/editeng/editeng.hxx
+++ b/include/editeng/editeng.hxx
@@ -618,6 +618,11 @@ public:
sal_Int32 GetOverflowingLineNum() const;
void ClearOverflowingParaNum();
bool IsPageOverflow();
+
+ // tdf#132288 By default inserting an attribute beside another that is of
+ // the same type expands the original instead of inserting another. But the
+ // spell check dialog doesn't want that behaviour
+ void DisableAttributeExpanding();
};
#endif // INCLUDED_EDITENG_EDITENG_HXX
--
2.25.3

View File

@ -0,0 +1,340 @@
From 54f42e1b75dd795f9d53dce181397f114eeae21b Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Tue, 28 Apr 2020 16:43:31 +0200
Subject: [PATCH] Restructure solenv/bin/assemble-flatpak.sh
...so that parts of it can be reused by the Flatpak build done from Fedora RPMs
(see <https://src.fedoraproject.org/flatpaks/libreoffice>). The reused parts
are split out into solenv/bin/assemble-flatpak-*.sh files.
(I can't remember any specific reason why I added the <releases> section to the
Flathub org.libreoffice.LibreOffice.appdata.xml; maybe just because the file
format allows for it and it appeared easy to generate the section when writing
the file. For the Fedora LO RPMs, none of the existing appdata.xml files
contained such a section, and generating one for the Fedora Flatpak case would
require obtaining values for those LIBO_VERSION_* variables, so I just added a
switch to solenv/bin/assemble-flatpak-appdata-step1.sh allowing not to write
that section at all. Splitting solenv/bin/assemble-flatpak-appdata.sh in two
steps is necessary because the Fedora Flatpak case wants to replace the
screenshots in the first part of the generated
org.libreoffice.LibreOffice.appdata.xml, but not in the appended original
appdata.xml files, so needs to hook in between those two steps.)
Change-Id: Ic527f3d88ccbee85e86dad3569b8e73776adf273
---
solenv/bin/assemble-flatpak-appdata-step1.sh | 96 +++++++++++++++++
solenv/bin/assemble-flatpak-appdata-step2.sh | 26 +++++
solenv/bin/assemble-flatpak-desktop.sh | 42 ++++++++
solenv/bin/assemble-flatpak.sh | 102 +------------------
4 files changed, 169 insertions(+), 97 deletions(-)
create mode 100755 solenv/bin/assemble-flatpak-appdata-step1.sh
create mode 100755 solenv/bin/assemble-flatpak-appdata-step2.sh
create mode 100755 solenv/bin/assemble-flatpak-desktop.sh
diff --git a/solenv/bin/assemble-flatpak-appdata-step1.sh b/solenv/bin/assemble-flatpak-appdata-step1.sh
new file mode 100755
index 000000000000..4658dd45d018
--- /dev/null
+++ b/solenv/bin/assemble-flatpak-appdata-step1.sh
@@ -0,0 +1,96 @@
+#! /bin/bash
+#
+# 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/.
+#
+
+# Part of solenv/bin/assemble-flatpak.sh that is shared with a downstream mechanism of building a
+# Flatpak from a Fedora libreoffice.spec file.
+#
+# Arguments:
+# $1 pathname, ending in a slash, of the directory into which to put the target
+# org.libreoffice.LibreOffice.appdata.xml file
+# $2 "1" if a <releases> section shall be included in the target
+# org.libreoffice.LibreOffice.appdata.xml file, "0" if not
+
+set -e
+
+## org.libreoffice.LibreOffice.appdata.xml is manually derived from the various
+## inst/share/appdata/libreoffice-*.appdata.xml (at least recent GNOME Software
+## doesn't show more than five screenshots anyway, so restrict to one each from
+## the five libreoffice-*.appdata.xml: Writer, Calc, Impress, Draw, Base):
+cat <<\EOF >"${1?}"org.libreoffice.LibreOffice.appdata.xml
+<?xml version="1.0" encoding="UTF-8"?>
+<component type="desktop">
+ <id>org.libreoffice.LibreOffice.desktop</id>
+ <metadata_license>CC0-1.0</metadata_license>
+ <project_license>MPL-2.0</project_license>
+ <name>LibreOffice</name>
+ <summary>The LibreOffice productivity suite</summary>
+ <description>
+ <p>LibreOffice is a powerful office suite. Its clean interface and
+ feature-rich tools help you unleash your creativity and enhance your
+ productivity. LibreOffice includes several applications that make it the most
+ powerful Free and Open Source office suite on the market: Writer (word
+ processing), Calc (spreadsheets), Impress (presentations), Draw (vector
+ graphics and flowcharts), Base (databases), and Math (formula editing).</p>
+ <p>LibreOffice supports opening and saving into a wide variety of formats, so
+ you can easily share documents with users of other popular office suites
+ without worrying about compatibility.</p>
+ </description>
+ <url type="homepage">http://www.libreoffice.org/discover/libreoffice/</url>
+ <url type="bugtracker">https://bugs.documentfoundation.org/</url>
+ <url type="donation">https://donate.libreoffice.org/</url>
+ <url type="faq">https://wiki.documentfoundation.org/Faq</url>
+ <url type="help">http://www.libreoffice.org/get-help/documentation/</url>
+ <url type="translate">https://wiki.documentfoundation.org/Translating_LibreOffice</url>
+ <screenshots>
+ <screenshot type="default">
+ <image>https://hub.libreoffice.org/screenshots/writer-01.png</image>
+ <caption><!-- Describe this screenshot in less than ~10 words --></caption>
+ </screenshot>
+ <screenshot>
+ <image>https://hub.libreoffice.org/screenshots/calc-02.png</image>
+ <caption><!-- Describe this screenshot in less than ~10 words --></caption>
+ </screenshot>
+ <screenshot>
+ <image>https://hub.libreoffice.org/screenshots/impress-01.png</image>
+ <caption><!-- Describe this screenshot in less than ~10 words --></caption>
+ </screenshot>
+ <screenshot>
+ <image>https://hub.libreoffice.org/screenshots/draw-02.png</image>
+ <caption><!-- Describe this screenshot in less than ~10 words --></caption>
+ </screenshot>
+ <screenshot>
+ <image>https://hub.libreoffice.org/screenshots/base-02.png</image>
+ <caption><!-- Describe this screenshot in less than ~10 words --></caption>
+ </screenshot>
+ </screenshots>
+ <developer_name>The Document Foundation</developer_name>
+ <update_contact>libreoffice_at_lists.freedesktop.org</update_contact>
+ <kudos>
+ <kudo>HiDpiIcon</kudo>
+ <kudo>HighContrast</kudo>
+ <kudo>ModernToolkit</kudo>
+ <kudo>UserDocs</kudo>
+ </kudos>
+ <content_rating type="oars-1.0"/>
+EOF
+
+if [ "${2?}" = 1 ]
+then
+ cat <<EOF >>"${1?}"org.libreoffice.LibreOffice.appdata.xml
+ <releases>
+ <release
+ version="${LIBO_VERSION_MAJOR?}.${LIBO_VERSION_MINOR?}.${LIBO_VERSION_MICRO?}.${LIBO_VERSION_PATCH?}"
+ date="$(date +%Y-%m-%d)"/>
+ </releases>
+EOF
+fi
+
+cat <<\EOF >>"${1?}"org.libreoffice.LibreOffice.appdata.xml
+</component>
+EOF
diff --git a/solenv/bin/assemble-flatpak-appdata-step2.sh b/solenv/bin/assemble-flatpak-appdata-step2.sh
new file mode 100755
index 000000000000..4f06e6b19148
--- /dev/null
+++ b/solenv/bin/assemble-flatpak-appdata-step2.sh
@@ -0,0 +1,26 @@
+#! /bin/bash
+#
+# 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/.
+#
+
+# Part of solenv/bin/assemble-flatpak.sh that is shared with a downstream mechanism of building a
+# Flatpak from a Fedora libreoffice.spec file.
+#
+# Arguments:
+# $1 pathname, ending in a slash, of the directory containing the source libreoffice-*.appdata.xml
+# files
+# $2 pathname, ending in a slash, of the directory containing the target
+# org.libreoffice.LibreOffice.appdata.xml file
+
+set -e
+
+# append the appdata for the different components
+for i in "${1?}"libreoffice-*.appdata.xml
+do
+ sed "1 d; s/<id>libreoffice-/<id>org.libreoffice.LibreOffice./" "$i" \
+ >>"${2?}"org.libreoffice.LibreOffice.appdata.xml
+done
diff --git a/solenv/bin/assemble-flatpak-desktop.sh b/solenv/bin/assemble-flatpak-desktop.sh
new file mode 100755
index 000000000000..6d06de4fbbbe
--- /dev/null
+++ b/solenv/bin/assemble-flatpak-desktop.sh
@@ -0,0 +1,42 @@
+#! /bin/bash
+#
+# 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/.
+#
+
+# Part of solenv/bin/assemble-flatpak.sh that is shared with a downstream mechanism of building a
+# Flatpak from a Fedora libreoffice.spec file.
+#
+# Arguments:
+# $1 pathname, ending in a slash, of the directory containing the source libreoffice-*.desktop
+# files
+# $2 pathname, ending in a slash, of the directory into which to put the target
+# org.libreoffice.LibreOffice.*.desktop files
+
+set -e
+
+## libreoffice-*.desktop -> org.libreoffice.LibreOffice.*.desktop:
+for i in "${1?}"libreoffice-*.desktop
+do
+ sed -e 's/^Icon=libreoffice-/Icon=org.libreoffice.LibreOffice./' "$i" \
+ >"${2?}"org.libreoffice.LibreOffice."${i#"${1?}"libreoffice-}"
+done
+mv "${2?}"org.libreoffice.LibreOffice.startcenter.desktop "${2?}"org.libreoffice.LibreOffice.desktop
+
+# Flatpak .desktop exports take precedence over system ones due to
+# the order of XDG_DATA_DIRS - re-associating text/plain seems a bit much
+sed -i "s/text\/plain;//" "${2?}"org.libreoffice.LibreOffice.writer.desktop
+
+desktop-file-edit --set-key=X-Endless-Alias --set-value=libreoffice-startcenter \
+ --set-key=X-Flatpak-RenamedFrom --set-value='libreoffice-startcenter.desktop;' \
+ "${2?}"org.libreoffice.LibreOffice.desktop
+for i in base calc draw impress math writer xsltfilter
+do
+ desktop-file-edit --set-key=X-Endless-Alias --set-value=libreoffice-"$i" \
+ --set-key=X-Flatpak-RenamedFrom \
+ --set-value="libreoffice-$i.desktop;org.libreoffice.LibreOffice-$i.desktop;" \
+ "${2?}"org.libreoffice.LibreOffice."$i".desktop
+done
diff --git a/solenv/bin/assemble-flatpak.sh b/solenv/bin/assemble-flatpak.sh
index 0738fcd59ad2..8ca5bcf08c41 100755
--- a/solenv/bin/assemble-flatpak.sh
+++ b/solenv/bin/assemble-flatpak.sh
@@ -16,30 +16,9 @@ set -e
cp -r "${PREFIXDIR?}"/lib/libreoffice /app/
ln -s /app/libreoffice/program/soffice /app/bin/libreoffice
-## libreoffice-*.desktop -> org.libreoffice.LibreOffice.*.desktop:
mkdir -p /app/share/applications
-for i in "${PREFIXDIR?}"/share/applications/libreoffice-*.desktop
-do
- sed -e 's/^Icon=libreoffice-/Icon=org.libreoffice.LibreOffice./' "$i" \
- >/app/share/applications/org.libreoffice.LibreOffice."${i#"${PREFIXDIR?}"/share/applications/libreoffice-}"
-done
-mv /app/share/applications/org.libreoffice.LibreOffice.startcenter.desktop \
- /app/share/applications/org.libreoffice.LibreOffice.desktop
-
-# Flatpak .desktop exports take precedence over system ones due to
-# the order of XDG_DATA_DIRS - re-associating text/plain seems a bit much
-sed -i "s/text\/plain;//" /app/share/applications/org.libreoffice.LibreOffice.writer.desktop
-
-desktop-file-edit --set-key=X-Endless-Alias --set-value=libreoffice-startcenter \
- --set-key=X-Flatpak-RenamedFrom --set-value='libreoffice-startcenter.desktop;' \
- /app/share/applications/org.libreoffice.LibreOffice.desktop
-for i in base calc draw impress math writer xsltfilter
-do
- desktop-file-edit --set-key=X-Endless-Alias --set-value=libreoffice-"$i" \
- --set-key=X-Flatpak-RenamedFrom \
- --set-value="libreoffice-$i.desktop;org.libreoffice.LibreOffice-$i.desktop;" \
- /app/share/applications/org.libreoffice.LibreOffice."$i".desktop
-done
+"${SRCDIR?}"/solenv/bin/assemble-flatpak-desktop.sh "${PREFIXDIR?}"/share/applications/ \
+ /app/share/applications/
## icons/hicolor/*/apps/libreoffice-* ->
## icons/hicolor/*/apps/org.libreoffice.LibreOffice-*:
@@ -82,81 +61,10 @@ do
ln -rs /app/share/runtime/locale/"${lang}"/registry/"${basename}".xcd "${i}"
done
-## org.libreoffice.LibreOffice.appdata.xml is manually derived from the various
-## inst/share/appdata/libreoffice-*.appdata.xml (at least recent GNOME Software
-## doesn't show more than five screenshots anyway, so restrict to one each from
-## the five libreoffice-*.appdata.xml: Writer, Calc, Impress, Draw, Base):
mkdir -p /app/share/appdata
-cat <<EOF >/app/share/appdata/org.libreoffice.LibreOffice.appdata.xml
-<?xml version="1.0" encoding="UTF-8"?>
-<component type="desktop">
- <id>org.libreoffice.LibreOffice.desktop</id>
- <metadata_license>CC0-1.0</metadata_license>
- <project_license>MPL-2.0</project_license>
- <name>LibreOffice</name>
- <summary>The LibreOffice productivity suite</summary>
- <description>
- <p>LibreOffice is a powerful office suite. Its clean interface and
- feature-rich tools help you unleash your creativity and enhance your
- productivity. LibreOffice includes several applications that make it the most
- powerful Free and Open Source office suite on the market: Writer (word
- processing), Calc (spreadsheets), Impress (presentations), Draw (vector
- graphics and flowcharts), Base (databases), and Math (formula editing).</p>
- <p>LibreOffice supports opening and saving into a wide variety of formats, so
- you can easily share documents with users of other popular office suites
- without worrying about compatibility.</p>
- </description>
- <url type="homepage">http://www.libreoffice.org/discover/libreoffice/</url>
- <url type="bugtracker">https://bugs.documentfoundation.org/</url>
- <url type="donation">https://donate.libreoffice.org/</url>
- <url type="faq">https://wiki.documentfoundation.org/Faq</url>
- <url type="help">http://www.libreoffice.org/get-help/documentation/</url>
- <url type="translate">https://wiki.documentfoundation.org/Translating_LibreOffice</url>
- <screenshots>
- <screenshot type="default">
- <image>https://hub.libreoffice.org/screenshots/writer-01.png</image>
- <caption><!-- Describe this screenshot in less than ~10 words --></caption>
- </screenshot>
- <screenshot>
- <image>https://hub.libreoffice.org/screenshots/calc-02.png</image>
- <caption><!-- Describe this screenshot in less than ~10 words --></caption>
- </screenshot>
- <screenshot>
- <image>https://hub.libreoffice.org/screenshots/impress-01.png</image>
- <caption><!-- Describe this screenshot in less than ~10 words --></caption>
- </screenshot>
- <screenshot>
- <image>https://hub.libreoffice.org/screenshots/draw-02.png</image>
- <caption><!-- Describe this screenshot in less than ~10 words --></caption>
- </screenshot>
- <screenshot>
- <image>https://hub.libreoffice.org/screenshots/base-02.png</image>
- <caption><!-- Describe this screenshot in less than ~10 words --></caption>
- </screenshot>
- </screenshots>
- <developer_name>The Document Foundation</developer_name>
- <update_contact>libreoffice_at_lists.freedesktop.org</update_contact>
- <kudos>
- <kudo>HiDpiIcon</kudo>
- <kudo>HighContrast</kudo>
- <kudo>ModernToolkit</kudo>
- <kudo>UserDocs</kudo>
- </kudos>
- <content_rating type="oars-1.0"/>
- <releases>
- <release
- version="${LIBO_VERSION_MAJOR?}.${LIBO_VERSION_MINOR?}.${LIBO_VERSION_MICRO?}.${LIBO_VERSION_PATCH?}"
- date="$(date +%Y-%m-%d)"/>
- </releases>
-</component>
-EOF
-
-# append the appdata for the different components
-for i in "${PREFIXDIR?}"/share/appdata/libreoffice-*.appdata.xml
-do
- sed "1 d; s/<id>libreoffice-/<id>org.libreoffice.LibreOffice./" "$i" \
- >>/app/share/appdata/org.libreoffice.LibreOffice.appdata.xml
-done
+"${SRCDIR?}"/solenv/bin/assemble-flatpak-appdata-step1.sh /app/share/appdata/ 1
+"${SRCDIR?}"/solenv/bin/assemble-flatpak-appdata-step2.sh "${PREFIXDIR?}"/share/appdata/ \
+ /app/share/appdata/
## see <https://github.com/flatpak/flatpak/blob/master/app/
## flatpak-builtins-build-finish.c> for further places where build-finish would
--
2.26.2

View File

@ -0,0 +1,150 @@
From d7ed56975a828eac321959e4510ee14560847b1f Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 28 Oct 2020 14:25:11 +0000
Subject: [PATCH] Revert "tdf#69060: lock refreshing font data when loading a
document"
This reverts commit 98d71c4e0847797a4ba9229a8e6d832a8a3d5e0f.
---
include/vcl/outdev.hxx | 3 ---
include/vcl/svapp.hxx | 11 -----------
sfx2/source/doc/objstor.cxx | 4 ----
vcl/inc/svdata.hxx | 3 ---
vcl/source/app/svapp.cxx | 5 -----
vcl/source/outdev/font.cxx | 32 +-------------------------------
6 files changed, 1 insertion(+), 57 deletions(-)
diff --git a/include/vcl/outdev.hxx b/include/vcl/outdev.hxx
index cd3c84d13305..55b466b42464 100644
--- a/include/vcl/outdev.hxx
+++ b/include/vcl/outdev.hxx
@@ -1278,9 +1278,6 @@ public:
//If bNewFontLists is true then drop and refetch lists of system fonts
SAL_DLLPRIVATE static void ImplUpdateAllFontData( bool bNewFontLists );
- // Lock font updates for all output devices
- static void LockFontUpdates(bool bLock);
-
protected:
SAL_DLLPRIVATE const LogicalFontInstance* GetFontInstance() const;
SAL_DLLPRIVATE long GetEmphasisAscent() const { return mnEmphasisAscent; }
diff --git a/include/vcl/svapp.hxx b/include/vcl/svapp.hxx
index 16b8015b923a..4f7b9d6def31 100644
--- a/include/vcl/svapp.hxx
+++ b/include/vcl/svapp.hxx
@@ -1326,17 +1326,6 @@ public:
///@}
- /** Lock font updates for all output devices
-
- @remark When performing operations that might involve multiple registration of fonts, such as
- opening/closing documents with multiple embedded fonts, then each font addition/removal
- might cause an event that initiates a rebuild of each OutputDevice's font lists.
-
- Locking font updates disables processing such events, and unlocking causes a single such
- processing for all OutputDevices.
- */
- static void LockFontUpdates(bool bLock);
-
// For vclbootstrapprotector:
static void setDeInitHook(Link<LinkParamNone*,void> const & hook);
diff --git a/sfx2/source/doc/objstor.cxx b/sfx2/source/doc/objstor.cxx
index 6d7b3f99ee69..ac9f4242a1bc 100644
--- a/sfx2/source/doc/objstor.cxx
+++ b/sfx2/source/doc/objstor.cxx
@@ -582,10 +582,6 @@ bool SfxObjectShell::ImportFromGeneratedStream_Impl(
bool SfxObjectShell::DoLoad( SfxMedium *pMed )
{
ModifyBlocker_Impl aBlock( this );
- struct FontLockGuard {
- FontLockGuard() { Application::LockFontUpdates(true); }
- ~FontLockGuard() { Application::LockFontUpdates(false); }
- } aFontLockGuard;
pMedium = pMed;
pMedium->CanDisposeStorage_Impl( true );
diff --git a/vcl/inc/svdata.hxx b/vcl/inc/svdata.hxx
index e41ec23488b3..dc10f3102ede 100644
--- a/vcl/inc/svdata.hxx
+++ b/vcl/inc/svdata.hxx
@@ -338,9 +338,6 @@ struct ImplSVData
VclPtr<WorkWindow> mpDefaultWin; // Default-Window
bool mbDeInit = false; // Is VCL deinitializing
std::unique_ptr<SalSystem> mpSalSystem; // SalSystem interface
- int mnFontUpdatesLockCount = 0; // avoid repeated font updates
- bool mbFontUpdatesPending = false; // need to update font data after unlock
- bool mbFontUpdatesNewLists = false; // generate new font lists
bool mbResLocaleSet = false; // SV-Resource-Manager
std::locale maResLocale; // Resource locale
ImplSchedulerContext maSchedCtx; // indepen data for class Scheduler
diff --git a/vcl/source/app/svapp.cxx b/vcl/source/app/svapp.cxx
index c4c3be9699e3..de4eac9687fc 100644
--- a/vcl/source/app/svapp.cxx
+++ b/vcl/source/app/svapp.cxx
@@ -1036,11 +1036,6 @@ void Application::RemoveUserEvent( ImplSVEvent * nUserEvent )
}
}
-void Application::LockFontUpdates(bool bLock)
-{
- OutputDevice::LockFontUpdates(bLock);
-}
-
WorkWindow* Application::GetAppWindow()
{
return ImplGetSVData()->maWinData.mpAppWin;
diff --git a/vcl/source/outdev/font.cxx b/vcl/source/outdev/font.cxx
index 22c61063bd21..e1fd7d107e63 100644
--- a/vcl/source/outdev/font.cxx
+++ b/vcl/source/outdev/font.cxx
@@ -559,16 +559,7 @@ void OutputDevice::ImplClearAllFontData(bool bNewFontLists)
void OutputDevice::ImplRefreshAllFontData(bool bNewFontLists)
{
- auto svdata = ImplGetSVData();
- DBG_TESTSOLARMUTEX();
- if (!svdata->mnFontUpdatesLockCount)
- ImplUpdateFontDataForAllFrames(&OutputDevice::ImplRefreshFontData, bNewFontLists);
- else
- {
- svdata->mbFontUpdatesPending = true;
- if (bNewFontLists)
- svdata->mbFontUpdatesNewLists = true;
- }
+ ImplUpdateFontDataForAllFrames( &OutputDevice::ImplRefreshFontData, bNewFontLists );
}
void OutputDevice::ImplUpdateAllFontData(bool bNewFontLists)
@@ -614,27 +605,6 @@ void OutputDevice::ImplUpdateFontDataForAllFrames( const FontUpdateHandler_t pHd
}
}
-void OutputDevice::LockFontUpdates(bool bLock)
-{
- auto svdata = ImplGetSVData();
- DBG_TESTSOLARMUTEX();
- if (bLock)
- {
- ++svdata->mnFontUpdatesLockCount;
- }
- else if (svdata->mnFontUpdatesLockCount > 0)
- {
- --svdata->mnFontUpdatesLockCount;
- if (!svdata->mnFontUpdatesLockCount && svdata->mbFontUpdatesPending)
- {
- ImplRefreshAllFontData(svdata->mbFontUpdatesNewLists);
-
- svdata->mbFontUpdatesPending = false;
- svdata->mbFontUpdatesNewLists = false;
- }
- }
-}
-
void OutputDevice::BeginFontSubstitution()
{
ImplSVData* pSVData = ImplGetSVData();
--
2.26.2

View File

@ -1,35 +1,34 @@
From 613af296887aede8f5b0fa6f94f7fb2781403ef2 Mon Sep 17 00:00:00 2001
From 702a1ad668167a7a8efdd694c820b710a765bb53 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 | 3 ---
writerperfect/qa/unit/WpftFilterFixture.hxx | 4 ----
writerperfect/qa/unit/WpftWriterFilterTest.cxx | 5 -----
writerperfect/source/writer/wpftwriter.component | 5 -----
7 files changed, 27 deletions(-)
6 files changed, 25 deletions(-)
diff --git a/configure.ac b/configure.ac
index bb17f3e..23d48da 100644
index ac8dbc5..bb08d21 100644
--- a/configure.ac
+++ b/configure.ac
@@ -8326,9 +8326,6 @@ libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.8])
@@ -7696,9 +7696,6 @@ libo_PKG_VERSION([ETONYEK], [libetonyek-0.1], [0.1.5])
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 e9d53ee..5bc469f 100644
index baf7215..397ad68 100644
--- a/external/Module_external.mk
+++ b/external/Module_external.mk
@@ -31,7 +31,6 @@ $(eval $(call gb_Module_add_moduledirs,external,\
@ -67,10 +66,10 @@ index 9702332..d250173 100644
MWAW_Text_Document \
Palm_Text_Document \
diff --git a/writerperfect/Library_wpftwriter.mk b/writerperfect/Library_wpftwriter.mk
index 2ac6bd1..6585aba 100644
index 8993cca..b6e11f3 100644
--- a/writerperfect/Library_wpftwriter.mk
+++ b/writerperfect/Library_wpftwriter.mk
@@ -51,7 +51,6 @@ $(eval $(call gb_Library_use_libraries,wpftwriter,\
@@ -53,7 +53,6 @@ $(eval $(call gb_Library_use_libraries,wpftwriter,\
$(eval $(call gb_Library_use_externals,wpftwriter,\
abw \
boost_headers \
@ -78,7 +77,7 @@ index 2ac6bd1..6585aba 100644
epubgen \
etonyek \
icu_headers \
@@ -71,7 +70,6 @@ $(eval $(call gb_Library_use_externals,wpftwriter,\
@@ -73,7 +72,6 @@ $(eval $(call gb_Library_use_externals,wpftwriter,\
$(eval $(call gb_Library_add_exception_objects,wpftwriter,\
writerperfect/source/writer/AbiWordImportFilter \
@ -141,5 +140,5 @@ index 8ab4366..2720023 100644
constructor="org_libreoffice_comp_Writer_PagesImportFilter_get_implementation">
<service name="com.sun.star.document.ExtendedTypeDetection"/>
--
2.24.1
2.26.2

View File

@ -1,4 +1,4 @@
From 005507845c65714b78de36a332a5037f2f4f1a51 Mon Sep 17 00:00:00 2001
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
@ -9,12 +9,12 @@ Change-Id: Ie7f0e3fe3dda12c2ec88c376d2b57419253ae5cf
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 6d54c81..04484eb 100644
index e7c339e2e22e..9aa88ef1aa02 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
@@ -5468,7 +5468,7 @@
@@ -5570,7 +5570,7 @@
<info>
<desc>Determines whether the Tip-Of-The-Day dialog is shown on startup.</desc>
<desc>Determines whether the Tip-of-the-Day dialog is shown on startup.</desc>
</info>
- <value>true</value>
+ <value>false</value>

View File

@ -0,0 +1,64 @@
From 13aba101eadfe4f67a930ac7231d26ece658bbec Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Mon, 28 Sep 2020 14:55:47 +0100
Subject: [PATCH] export HYPERLINK target in html clipboard export
Change-Id: Ia77e4bd8a5b54636d0e9e561360128202a81420b
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103557
Tested-by: Jenkins
Reviewed-by: Eike Rathke <erack@redhat.com>
---
sc/source/filter/html/htmlexp.cxx | 23 +++++++++++++++++++++++
1 file changed, 23 insertions(+)
diff --git a/sc/source/filter/html/htmlexp.cxx b/sc/source/filter/html/htmlexp.cxx
index 6122c9b6c45c..13792201c8b0 100644
--- a/sc/source/filter/html/htmlexp.cxx
+++ b/sc/source/filter/html/htmlexp.cxx
@@ -37,6 +37,7 @@
#include <sfx2/docfile.hxx>
#include <sfx2/frmhtmlw.hxx>
#include <sfx2/objsh.hxx>
+#include <svl/stritem.hxx>
#include <svl/urihelper.hxx>
#include <svtools/htmlkywd.hxx>
#include <svtools/htmlout.hxx>
@@ -1127,6 +1128,26 @@ void ScHTMLExport::WriteCell( sc::ColumnBlockPosition& rBlockPos, SCCOL nCol, SC
TAG_ON(aStr.makeStringAndClear().getStr());
}
+ OUString aURL;
+ bool bWriteHyperLink(false);
+ if (aCell.meType == CELLTYPE_FORMULA)
+ {
+ ScFormulaCell* pFCell = aCell.mpFormula;
+ if (pFCell->IsHyperLinkCell())
+ {
+ OUString aCellText;
+ pFCell->GetURLResult(aURL, aCellText);
+ bWriteHyperLink = true;
+ }
+ }
+
+ if (bWriteHyperLink)
+ {
+ OString aURLStr = HTMLOutFuncs::ConvertStringToHTML(aURL, eDestEnc, &aNonConvertibleChars);
+ OString aStr = OOO_STRING_SVTOOLS_HTML_anchor " " OOO_STRING_SVTOOLS_HTML_O_href "=\"" + aURLStr + "\"";
+ TAG_ON(aStr.getStr());
+ }
+
OUString aStrOut;
bool bFieldText = false;
@@ -1174,6 +1195,8 @@ void ScHTMLExport::WriteCell( sc::ColumnBlockPosition& rBlockPos, SCCOL nCol, SC
if ( pGraphEntry )
WriteGraphEntry( pGraphEntry );
+ if (bWriteHyperLink) { TAG_OFF(OOO_STRING_SVTOOLS_HTML_anchor); }
+
if ( bSetFont ) TAG_OFF( OOO_STRING_SVTOOLS_HTML_font );
if ( bCrossedOut ) TAG_OFF( OOO_STRING_SVTOOLS_HTML_strikethrough );
if ( bUnderline ) TAG_OFF( OOO_STRING_SVTOOLS_HTML_underline );
--
2.26.2

View File

@ -0,0 +1,40 @@
From ddf72365b7e7c67b2580e328e55de6eb988b8787 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 388bee3..c061349 100644
--- a/configure.ac
+++ b/configure.ac
@@ -10092,7 +10092,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 6277e76..f8dd327 100644
--- a/cui/source/dialogs/QrCodeGenDialog.cxx
+++ b/cui/source/dialogs/QrCodeGenDialog.cxx
@@ -20,7 +20,7 @@
#if ENABLE_QRCODEGEN
#if defined(SYSTEM_QRCODEGEN)
-#include <qrcodegen/QrCode.hpp>
+#include <qrcodegencpp/QrCode.hpp>
#else
#include <QrCode.hpp>
#endif
--
2.26.2

View File

@ -1,48 +0,0 @@
From 5d101a65c31e6c2f8dd0edffe05f69055cbd481c Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Mon, 11 May 2020 20:46:43 +0100
Subject: [PATCH] limit forms to http[s]
Change-Id: I3ed0bc626f693ec03f610dc7361f93cad914c9d8
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/93993
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
---
forms/source/xforms/submission.cxx | 3 +++
forms/source/xforms/submission/submission.hxx | 6 ++++++
2 files changed, 9 insertions(+)
diff --git a/forms/source/xforms/submission.cxx b/forms/source/xforms/submission.cxx
index f20b72f11973..7e8517e89481 100644
--- a/forms/source/xforms/submission.cxx
+++ b/forms/source/xforms/submission.cxx
@@ -253,6 +253,9 @@ bool Submission::doSubmit( const Reference< XInteractionHandler >& xHandler )
return false;
}
+ if (!xSubmission->IsWebProtocol())
+ return false;
+
CSubmission::SubmissionResult aResult = xSubmission->submit( xHandler );
if (aResult == CSubmission::SUCCESS)
diff --git a/forms/source/xforms/submission/submission.hxx b/forms/source/xforms/submission/submission.hxx
index 77d59b1f740e..a459f471ba0d 100644
--- a/forms/source/xforms/submission/submission.hxx
+++ b/forms/source/xforms/submission/submission.hxx
@@ -126,6 +126,12 @@ public:
, m_xContext(::comphelper::getProcessComponentContext())
{}
+ bool IsWebProtocol() const
+ {
+ INetProtocol eProtocol = m_aURLObj.GetProtocol();
+ return eProtocol == INetProtocol::Http || eProtocol == INetProtocol::Https;
+ }
+
virtual ~CSubmission() {}
virtual SubmissionResult submit(const css::uno::Reference< css::task::XInteractionHandler >& ) = 0;
--
2.25.4

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,26 @@
From 06b19641b0eac7b7992fae861eb4807397c9aee4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 28 Oct 2020 10:03:23 +0000
Subject: [PATCH] replace 'Palatino Linotype' with 'Liberation Serif'
for consistent font replacement
Change-Id: I3c124c0adcab8ac2dd7f989c2fa5c97182e32b64
---
sw/qa/extras/layout/data/forcepoint75-1.rtf | Bin 88740 -> 88738 bytes
1 file changed, 0 insertions(+), 0 deletions(-)
diff --git a/sw/qa/extras/layout/data/forcepoint75-1.rtf b/sw/qa/extras/layout/data/forcepoint75-1.rtf
index 01a52963757d8568e5ae8b80b7767c924c37a407..263a585c57e162caf1c9f9dd3aee4f3d8aa3edd2 100644
GIT binary patch
delta 85
zcmZ3om37fp)(y#wVm_HksYQt;nfZAN!Kp==Y1XyXF=>XA=QD{5pi50&#At*e*!+}n
M`%^~7{Sk~@09cV9Z2$lO
delta 104
zcmZ3qm37Hh)(y#w_5q1Gi6xnN`3gQjqNK7Q)w;GiCe1J=ttdY?F)t>$Al)D)Ejc5x
ds5rI6KmkMb<OPgIf*7LBj~KT<Vr1MO0RTX3C};ox
--
2.26.2

View File

@ -0,0 +1,110 @@
From 193b49763a03d63ba79db50c1fa0563ec0d6b0c3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 29 Jan 2020 12:44:52 +0000
Subject: [PATCH] replace boost::bimap in sdext pdfimport
Change-Id: Ie324a0b81931bbd427483878a87beeca455ada18
---
sdext/source/pdfimport/inc/pdfiprocessor.hxx | 12 ++++-------
sdext/source/pdfimport/tree/pdfiprocessor.cxx | 21 +++++++++++--------
2 files changed, 16 insertions(+), 17 deletions(-)
diff --git a/sdext/source/pdfimport/inc/pdfiprocessor.hxx b/sdext/source/pdfimport/inc/pdfiprocessor.hxx
index 89f9d601b7b0..9e08d6a6a765 100644
--- a/sdext/source/pdfimport/inc/pdfiprocessor.hxx
+++ b/sdext/source/pdfimport/inc/pdfiprocessor.hxx
@@ -37,9 +37,6 @@
#include "treevisitorfactory.hxx"
#include "genericelements.hxx"
-#include <boost/bimap/bimap.hpp>
-#include <boost/bimap/unordered_set_of.hpp>
-
namespace pdfi
{
@@ -160,10 +157,8 @@ namespace pdfi
typedef std::unordered_map<sal_Int32,FontAttributes> IdToFontMap;
typedef std::unordered_map<FontAttributes,sal_Int32,FontAttrHash> FontToIdMap;
- typedef boost::bimaps::bimap<
- boost::bimaps::unordered_set_of<GraphicsContext, GraphicsContextHash>,
- boost::bimaps::unordered_set_of<sal_Int32>
- > GCToIdBiMap;
+ typedef std::unordered_map<sal_Int32,GraphicsContext> IdToGCMap;
+ typedef std::unordered_map<GraphicsContext, sal_Int32, GraphicsContextHash> GCToIdMap;
typedef std::vector<GraphicsContext> GraphicsContextStack;
@@ -178,7 +173,8 @@ namespace pdfi
GraphicsContextStack m_aGCStack;
sal_Int32 m_nNextGCId;
- GCToIdBiMap m_aGCToId;
+ IdToGCMap m_aIdToGC;
+ GCToIdMap m_aGCToId;
ImageContainer m_aImages;
diff --git a/sdext/source/pdfimport/tree/pdfiprocessor.cxx b/sdext/source/pdfimport/tree/pdfiprocessor.cxx
index c6baa7fee8b2..ed2eaf6510b9 100644
--- a/sdext/source/pdfimport/tree/pdfiprocessor.cxx
+++ b/sdext/source/pdfimport/tree/pdfiprocessor.cxx
@@ -54,6 +54,7 @@ namespace pdfi
m_aFontToId(),
m_aGCStack(),
m_nNextGCId( 1 ),
+ m_aIdToGC(),
m_aGCToId(),
m_aImages(),
m_nPages(0),
@@ -65,12 +66,13 @@ namespace pdfi
aDefFont.isBold = false;
aDefFont.isItalic = false;
aDefFont.size = 10*PDFI_OUTDEV_RESOLUTION/72;
- m_aIdToFont[ 0 ] = aDefFont;
- m_aFontToId[ aDefFont ] = 0;
+ m_aIdToFont.insert({0, aDefFont});
+ m_aFontToId.insert({aDefFont, 0});
GraphicsContext aDefGC;
m_aGCStack.push_back( aDefGC );
- m_aGCToId.insert(GCToIdBiMap::relation(aDefGC, 0));
+ m_aGCToId.insert({aDefGC, 0});
+ m_aIdToGC.insert({0, aDefGC});
}
void PDFIProcessor::setPageNum( sal_Int32 nPages )
@@ -468,12 +470,13 @@ const FontAttributes& PDFIProcessor::getFont( sal_Int32 nFontId ) const
sal_Int32 PDFIProcessor::getGCId( const GraphicsContext& rGC )
{
sal_Int32 nGCId = 0;
- auto it = m_aGCToId.left.find( rGC );
- if( it != m_aGCToId.left.end() )
+ auto it = m_aGCToId.find( rGC );
+ if( it != m_aGCToId.end() )
nGCId = it->second;
else
{
- m_aGCToId.insert(GCToIdBiMap::relation(rGC, m_nNextGCId));
+ m_aGCToId.insert({rGC, m_nNextGCId});
+ m_aIdToGC.insert({m_nNextGCId, rGC});
nGCId = m_nNextGCId;
m_nNextGCId++;
}
@@ -483,9 +486,9 @@ sal_Int32 PDFIProcessor::getGCId( const GraphicsContext& rGC )
const GraphicsContext& PDFIProcessor::getGraphicsContext( sal_Int32 nGCId ) const
{
- auto it = m_aGCToId.right.find( nGCId );
- if( it == m_aGCToId.right.end() )
- it = m_aGCToId.right.find( 0 );
+ auto it = m_aIdToGC.find( nGCId );
+ if( it == m_aIdToGC.end() )
+ it = m_aIdToGC.find( 0 );
return it->second;
}
--
2.24.1

View File

@ -1,160 +0,0 @@
From fd7b2f5fbbee23fc2ab9722fcd605921b7184113 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Thu, 28 Nov 2019 09:50:36 +0000
Subject: [PATCH] rhbz#1775767 null deref
Change-Id: I6941055f9a02b36b5fe621fe89f49f62beb87e67
---
include/sfx2/sidebar/Theme.hxx | 2 +-
sfx2/source/sidebar/SidebarController.cxx | 9 +++--
sfx2/source/sidebar/Theme.cxx | 43 ++++++++++++-----------
3 files changed, 29 insertions(+), 25 deletions(-)
diff --git a/include/sfx2/sidebar/Theme.hxx b/include/sfx2/sidebar/Theme.hxx
index 16a4798..b7eaf88 100644
--- a/include/sfx2/sidebar/Theme.hxx
+++ b/include/sfx2/sidebar/Theme.hxx
@@ -175,7 +175,7 @@ public:
virtual sal_Bool SAL_CALL hasPropertyByName (const OUString& rsName) override;
private:
- static Theme& GetCurrentTheme();
+ static Theme* GetCurrentTheme();
std::vector<Image> maImages;
std::vector<Color> maColors;
diff --git a/sfx2/source/sidebar/SidebarController.cxx b/sfx2/source/sidebar/SidebarController.cxx
index 0cad779..764d4e3 100644
--- a/sfx2/source/sidebar/SidebarController.cxx
+++ b/sfx2/source/sidebar/SidebarController.cxx
@@ -258,9 +258,12 @@ void SAL_CALL SidebarController::disposing()
mpParentWindow = nullptr;
}
- Theme::GetPropertySet()->removePropertyChangeListener(
- "",
- static_cast<css::beans::XPropertyChangeListener*>(this));
+ Reference<beans::XPropertySet> xPropertySet = Theme::GetPropertySet();
+ if (xPropertySet)
+ {
+ xPropertySet->removePropertyChangeListener("",
+ static_cast<css::beans::XPropertyChangeListener*>(this));
+ }
maContextChangeUpdate.CancelRequest();
maAsynchronousDeckSwitch.CancelRequest();
diff --git a/sfx2/source/sidebar/Theme.cxx b/sfx2/source/sidebar/Theme.cxx
index bc6236d..1ef350e 100644
--- a/sfx2/source/sidebar/Theme.cxx
+++ b/sfx2/source/sidebar/Theme.cxx
@@ -34,9 +34,10 @@ using namespace css::uno;
namespace sfx2 { namespace sidebar {
-Theme& Theme::GetCurrentTheme()
+Theme* Theme::GetCurrentTheme()
{
- return SfxGetpApp()->GetSidebarTheme();
+ SfxApplication* pApp = SfxGetpApp();
+ return pApp ? &pApp->GetSidebarTheme() : nullptr;
}
Theme::Theme()
@@ -67,8 +68,8 @@ Image Theme::GetImage (const ThemeItem eItem)
const PropertyType eType (GetPropertyType(eItem));
OSL_ASSERT(eType==PT_Image);
const sal_Int32 nIndex (GetIndex(eItem, eType));
- const Theme& rTheme (GetCurrentTheme());
- return rTheme.maImages[nIndex];
+ const Theme* pTheme (GetCurrentTheme());
+ return pTheme->maImages[nIndex];
}
Color Theme::GetColor (const ThemeItem eItem)
@@ -76,11 +77,11 @@ Color Theme::GetColor (const ThemeItem eItem)
const PropertyType eType (GetPropertyType(eItem));
OSL_ASSERT(eType==PT_Color || eType==PT_Paint);
const sal_Int32 nIndex (GetIndex(eItem, eType));
- const Theme& rTheme (GetCurrentTheme());
+ const Theme* pTheme (GetCurrentTheme());
if (eType == PT_Color)
- return rTheme.maColors[nIndex];
+ return pTheme->maColors[nIndex];
else if (eType == PT_Paint)
- return rTheme.maPaints[nIndex].GetColor();
+ return pTheme->maPaints[nIndex].GetColor();
else
return COL_WHITE;
}
@@ -90,8 +91,8 @@ const Paint& Theme::GetPaint (const ThemeItem eItem)
const PropertyType eType (GetPropertyType(eItem));
OSL_ASSERT(eType==PT_Paint);
const sal_Int32 nIndex (GetIndex(eItem, eType));
- const Theme& rTheme (GetCurrentTheme());
- return rTheme.maPaints[nIndex];
+ const Theme* pTheme (GetCurrentTheme());
+ return pTheme->maPaints[nIndex];
}
const Wallpaper Theme::GetWallpaper (const ThemeItem eItem)
@@ -104,8 +105,8 @@ sal_Int32 Theme::GetInteger (const ThemeItem eItem)
const PropertyType eType (GetPropertyType(eItem));
OSL_ASSERT(eType==PT_Integer);
const sal_Int32 nIndex (GetIndex(eItem, eType));
- const Theme& rTheme (GetCurrentTheme());
- return rTheme.maIntegers[nIndex];
+ const Theme* pTheme (GetCurrentTheme());
+ return pTheme->maIntegers[nIndex];
}
bool Theme::GetBoolean (const ThemeItem eItem)
@@ -113,28 +114,28 @@ bool Theme::GetBoolean (const ThemeItem eItem)
const PropertyType eType (GetPropertyType(eItem));
OSL_ASSERT(eType==PT_Boolean);
const sal_Int32 nIndex (GetIndex(eItem, eType));
- const Theme& rTheme (GetCurrentTheme());
- return rTheme.maBooleans[nIndex];
+ const Theme* pTheme (GetCurrentTheme());
+ return pTheme->maBooleans[nIndex];
}
bool Theme::IsHighContrastMode()
{
- const Theme& rTheme (GetCurrentTheme());
- return rTheme.mbIsHighContrastMode;
+ const Theme* pTheme (GetCurrentTheme());
+ return pTheme->mbIsHighContrastMode;
}
void Theme::HandleDataChange()
{
- Theme& rTheme (GetCurrentTheme());
+ Theme* pTheme (GetCurrentTheme());
- if ( ! rTheme.mbIsHighContrastModeSetManually)
+ if (!pTheme->mbIsHighContrastModeSetManually)
{
// Do not modify mbIsHighContrastMode when it was manually set.
- GetCurrentTheme().mbIsHighContrastMode = Application::GetSettings().GetStyleSettings().GetHighContrastMode();
- rTheme.maRawValues[Bool_IsHighContrastModeActive] <<= GetCurrentTheme().mbIsHighContrastMode;
+ GetCurrentTheme()->mbIsHighContrastMode = Application::GetSettings().GetStyleSettings().GetHighContrastMode();
+ pTheme->maRawValues[Bool_IsHighContrastModeActive] <<= GetCurrentTheme()->mbIsHighContrastMode;
}
- GetCurrentTheme().UpdateTheme();
+ GetCurrentTheme()->UpdateTheme();
}
void Theme::InitializeTheme()
@@ -369,7 +370,7 @@ void SAL_CALL Theme::disposing()
Reference<beans::XPropertySet> Theme::GetPropertySet()
{
- return Reference<beans::XPropertySet>(static_cast<XWeak*>(&GetCurrentTheme()), UNO_QUERY);
+ return Reference<beans::XPropertySet>(static_cast<XWeak*>(GetCurrentTheme()), UNO_QUERY);
}
Reference<beans::XPropertySetInfo> SAL_CALL Theme::getPropertySetInfo()
--
2.20.1

View File

@ -1,329 +0,0 @@
From 2a34d8f44d3f45af7bf2394a93817a6ede75baba Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 6 Mar 2020 10:11:48 +0000
Subject: [PATCH] rhbz#1810732 crash/assert inserting document with initial
graphic
Change-Id: Idae665c926856922a25a1228ed34f3cae96e4bdd
---
sw/qa/extras/uiwriter/data/rhbz1810732.docx | Bin 0 -> 12107 bytes
sw/qa/extras/uiwriter/uiwriter.cxx | 21 ++++++++++++++++++
writerfilter/source/dmapper/DomainMapper.cxx | 4 +++-
.../source/dmapper/DomainMapper_Impl.cxx | 4 ++++
.../source/dmapper/DomainMapper_Impl.hxx | 1 +
5 files changed, 29 insertions(+), 1 deletion(-)
create mode 100644 sw/qa/extras/uiwriter/data/rhbz1810732.docx
diff --git a/sw/qa/extras/uiwriter/data/rhbz1810732.docx b/sw/qa/extras/uiwriter/data/rhbz1810732.docx
new file mode 100644
index 0000000000000000000000000000000000000000..2bf1d574d4911c4d042b56ae0333d3d088c5cb12
GIT binary patch
literal 12107
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
literal 0
HcmV?d00001
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 0a646fd..93339d7 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -319,6 +319,7 @@ public:
void testCreateDocxAnnotation();
void testTdf107976();
void testTdf108524();
+ void testRhbz1810732();
#if HAVE_MORE_FONTS
void testTableInSection();
void testTableInNestedSection();
@@ -527,6 +528,7 @@ public:
CPPUNIT_TEST(testCreateDocxAnnotation);
CPPUNIT_TEST(testTdf107976);
CPPUNIT_TEST(testTdf108524);
+ CPPUNIT_TEST(testRhbz1810732);
#if HAVE_MORE_FONTS
CPPUNIT_TEST(testTableInSection);
CPPUNIT_TEST(testTableInNestedSection);
@@ -6041,6 +6043,25 @@ void SwUiWriterTest::testTdf113877_Standard_style()
CPPUNIT_ASSERT_EQUAL(listId1, listId3);
}
+// just care that this does crash/assert
+void SwUiWriterTest::testRhbz1810732()
+{
+ load(DATA_DIRECTORY, "tdf113877_blank.odt");
+
+ // set a page cursor into the end of the document
+ uno::Reference<frame::XModel> xModel(mxComponent, uno::UNO_QUERY);
+ uno::Reference<text::XTextViewCursorSupplier> xTextViewCursorSupplier(xModel->getCurrentController(), uno::UNO_QUERY);
+ uno::Reference<text::XPageCursor> xCursor(xTextViewCursorSupplier->getViewCursor(), uno::UNO_QUERY);
+ xCursor->jumpToEndOfPage();
+
+ // insert the same document at current cursor position
+ {
+ const OUString insertFileid = m_directories.getURLFromSrc(DATA_DIRECTORY) + "rhbz1810732.docx";
+ uno::Sequence<beans::PropertyValue> aPropertyValues(comphelper::InitPropertySequence({ { "Name", uno::makeAny(insertFileid) } }));
+ dispatchCommand(mxComponent, ".uno:InsertDoc", aPropertyValues);
+ }
+}
+
void SwUiWriterTest::testTdf108524()
{
createDoc("tdf108524.odt");
diff --git a/writerfilter/source/dmapper/DomainMapper.cxx b/writerfilter/source/dmapper/DomainMapper.cxx
index 81193ea..4edc51a 100644
--- a/writerfilter/source/dmapper/DomainMapper.cxx
+++ b/writerfilter/source/dmapper/DomainMapper.cxx
@@ -3744,7 +3744,9 @@ uno::Reference < lang::XMultiServiceFactory > const & DomainMapper::GetTextFacto
uno::Reference< text::XTextRange > DomainMapper::GetCurrentTextRange()
{
- return m_pImpl->GetTopTextAppend()->getEnd();
+ if (m_pImpl->HasTopText())
+ return m_pImpl->GetTopTextAppend()->getEnd();
+ return m_pImpl->m_xInsertTextRange;
}
OUString DomainMapper::getOrCreateCharStyle( PropertyValueVector_t& rCharProperties, bool bAlwaysCreate )
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.cxx b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
index 15c6ae130ecd..743c07de9959 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.cxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.cxx
@@ -667,6 +667,10 @@ PropertyMapPtr DomainMapper_Impl::GetTopContextOfType(ContextType eId)
return pRet;
}
+bool DomainMapper_Impl::HasTopText() const
+{
+ return !m_aTextAppendStack.empty();
+}
uno::Reference< text::XTextAppend > const & DomainMapper_Impl::GetTopTextAppend()
{
diff --git a/writerfilter/source/dmapper/DomainMapper_Impl.hxx b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
index 456ab3df371e..fac34be0adac 100644
--- a/writerfilter/source/dmapper/DomainMapper_Impl.hxx
+++ b/writerfilter/source/dmapper/DomainMapper_Impl.hxx
@@ -684,6 +684,7 @@ public:
}
PropertyMapPtr GetTopContextOfType(ContextType eId);
+ bool HasTopText() const;
css::uno::Reference<css::text::XTextAppend> const & GetTopTextAppend();
FieldContextPtr const & GetTopFieldContext();
--
2.24.1

View File

@ -1,26 +0,0 @@
From 1a1a8a95d6f36411e1110bf9b6d27b7d58dd685b Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Sat, 4 Apr 2020 19:27:41 +0100
Subject: [PATCH] rhbz#1820868 deref of null xLayoutManager
Change-Id: Ib396ef9f5b019b08a181eeb5a8eb983bdb401db4
---
svx/source/dialog/srchdlg.cxx | 2 ++
1 file changed, 2 insertions(+)
diff --git a/svx/source/dialog/srchdlg.cxx b/svx/source/dialog/srchdlg.cxx
index 1f95fbe21a7c..445bc318718b 100644
--- a/svx/source/dialog/srchdlg.cxx
+++ b/svx/source/dialog/srchdlg.cxx
@@ -2440,6 +2440,8 @@ OUString SvxSearchDialogWrapper::GetSearchLabel()
pViewFrame->GetFrame().GetFrameInterface(), css::uno::UNO_QUERY_THROW);
css::uno::Reference< css::frame::XLayoutManager > xLayoutManager;
xPropSet->getPropertyValue("LayoutManager") >>= xLayoutManager;
+ if (!xLayoutManager.is())
+ return;
css::uno::Reference< css::ui::XUIElement > xUIElement =
xLayoutManager->getElement("private:resource/toolbar/findbar");
if (!xUIElement.is())
--
2.25.1

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,82 @@
From 8bfdd84ffcffe19aa6c495a0772e1a5fcb9a5124 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 25 Sep 2020 11:22:03 +0100
Subject: [PATCH] rhbz#1882616 move cursor one step at a time in the desired
direction
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
until we get to the target position. The break iterator operates in graphemes
so we can't just move Left/Right the amount of utf-16 we want to move.
Change-Id: I25d4e9285deae374f85dcaadbf4601bc213a89de
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/103380
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit bf858622e543163a23db766912ea6b121f447e6d)
---
sw/source/core/edit/editsh.cxx | 40 +++++++++++++++++++++++++++++-----
1 file changed, 35 insertions(+), 5 deletions(-)
diff --git a/sw/source/core/edit/editsh.cxx b/sw/source/core/edit/editsh.cxx
index 8f84ce42ed75..872d92d7afcc 100644
--- a/sw/source/core/edit/editsh.cxx
+++ b/sw/source/core/edit/editsh.cxx
@@ -988,7 +988,8 @@ OUString SwEditShell::DeleteExtTextInput( bool bInsText )
void SwEditShell::SetExtTextInputData( const CommandExtTextInputData& rData )
{
- const SwPosition& rPos = *GetCursor()->GetPoint();
+ SwPaM* pCurrentCursor = GetCursor();
+ const SwPosition& rPos = *pCurrentCursor->GetPoint();
SwExtTextInput* pInput = GetDoc()->GetExtTextInput( rPos.nNode.GetNode() );
if( !pInput )
return;
@@ -1005,10 +1006,39 @@ void SwEditShell::SetExtTextInputData( const CommandExtTextInputData& rData )
// ugly but works
ShowCursor();
const sal_Int32 nDiff = nNewCursorPos - rPos.nContent.GetIndex();
- if( 0 > nDiff )
- Left( -nDiff, CRSR_SKIP_CHARS );
- else if( 0 < nDiff )
- Right( nDiff, CRSR_SKIP_CHARS );
+ if( nDiff != 0)
+ {
+ bool bLeft = nDiff < 0;
+ sal_Int32 nMaxGuard = std::abs(nDiff);
+ while (true)
+ {
+ auto nOldPos = pCurrentCursor->GetPoint()->nContent.GetIndex();
+ if (bLeft)
+ Left(1, CRSR_SKIP_CHARS);
+ else
+ Right(1, CRSR_SKIP_CHARS);
+ auto nNewPos = pCurrentCursor->GetPoint()->nContent.GetIndex();
+
+ // expected success
+ if (nNewPos == nNewCursorPos)
+ break;
+
+ if (nNewPos == nOldPos)
+ {
+ // if there was no movement, we have failed for some reason
+ SAL_WARN("sw.core", "IM cursor move failed");
+ break;
+ }
+
+ if (--nMaxGuard == 0)
+ {
+ // if it takes more cursor moves than there are utf-16 chars to move past
+ // something has probably gone wrong
+ SAL_WARN("sw.core", "IM abandoning cursor positioning");
+ break;
+ }
+ }
+ }
SetOverwriteCursor( rData.IsCursorOverwrite() );
--
2.29.2

View File

@ -0,0 +1,27 @@
From 3f4885f3012132e915031461036a76e693489652 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Sun, 25 Oct 2020 20:39:50 +0000
Subject: [PATCH] rhbz#1891326 suggest package install of the most appropiate
pt langpack
Change-Id: I87ff1a941a3a5dc0c321440a9c286ae73c9d0384
---
svtools/source/misc/langhelp.cxx | 2 ++
1 file changed, 2 insertions(+)
diff --git a/svtools/source/misc/langhelp.cxx b/svtools/source/misc/langhelp.cxx
index e64a3b869076..acaf2c6e24f3 100644
--- a/svtools/source/misc/langhelp.cxx
+++ b/svtools/source/misc/langhelp.cxx
@@ -139,6 +139,8 @@ OUString getInstalledLocaleForSystemUILanguage(const css::uno::Sequence<OUString
aPackages.emplace_back("libreoffice-langpack-zh-Hans");
else if (MsLangId::isTraditionalChinese(eType))
aPackages.emplace_back("libreoffice-langpack-zh-Hant");
+ else if (install == "pt")
+ aPackages.emplace_back("libreoffice-langpack-pt-PT");
else
aPackages.emplace_back("libreoffice-langpack-" + install);
}
--
2.26.2

View File

@ -1,31 +0,0 @@
From dc8db8308840516115a3f7cc9397a5c37bf99862 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 17 Mar 2020 20:14:17 +0000
Subject: [PATCH] tdf#131069 always produce utf-8 from gettext
Change-Id: I311e647f08b4d541825e7790d971b98b5b5bfe40
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/90631
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
---
unotools/source/i18n/resmgr.cxx | 3 +++
1 file changed, 3 insertions(+)
diff --git a/unotools/source/i18n/resmgr.cxx b/unotools/source/i18n/resmgr.cxx
index 47069489aa41..786c83df2e7b 100644
--- a/unotools/source/i18n/resmgr.cxx
+++ b/unotools/source/i18n/resmgr.cxx
@@ -130,7 +130,10 @@ namespace Translate
OString sPath(OUStringToOString(path, osl_getThreadTextEncoding()));
gen.add_messages_path(sPath.getStr());
#if defined UNX && !defined MACOSX && !defined IOS && !defined ANDROID
+ // allow gettext to find these .mo files e.g. so gtk dialogs can use them
bindtextdomain(pPrefixName, sPath.getStr());
+ // tdf#131069 gtk, and anything sane, always wants utf-8 strings as output
+ bind_textdomain_codeset(pPrefixName, "UTF-8");
#endif
gen.add_messages_domain(pPrefixName);
--
2.25.4

View File

@ -0,0 +1,44 @@
From 96fc7531331f45a314416000150b1141e5686f38 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 2 Oct 2020 16:21:02 +0100
Subject: [PATCH] tdf#137209 unparent widgets in fragment dtor
Change-Id: I819514fd2b97e2cc8daad71a7f3b0b27afe6136d
---
sw/source/ui/dbui/createaddresslistdialog.cxx | 8 ++++++++
1 file changed, 8 insertions(+)
diff --git a/sw/source/ui/dbui/createaddresslistdialog.cxx b/sw/source/ui/dbui/createaddresslistdialog.cxx
index ae4d354ea29d..994a6045cea5 100644
--- a/sw/source/ui/dbui/createaddresslistdialog.cxx
+++ b/sw/source/ui/dbui/createaddresslistdialog.cxx
@@ -53,11 +53,13 @@ struct SwAddressFragment
std::unique_ptr<weld::Builder> m_xBuilder;
std::unique_ptr<weld::Label> m_xLabel;
std::unique_ptr<weld::Entry> m_xEntry;
+ weld::Container* m_pGrid;
SwAddressFragment(weld::Container* pGrid, int nLine)
: m_xBuilder(Application::CreateBuilder(pGrid, "modules/swriter/ui/addressfragment.ui"))
, m_xLabel(m_xBuilder->weld_label("label"))
, m_xEntry(m_xBuilder->weld_entry("entry"))
+ , m_pGrid(pGrid)
{
m_xLabel->set_grid_left_attach(0);
m_xLabel->set_grid_top_attach(nLine);
@@ -65,6 +67,12 @@ struct SwAddressFragment
m_xEntry->set_grid_left_attach(1);
m_xEntry->set_grid_top_attach(nLine);
}
+
+ virtual ~SwAddressFragment()
+ {
+ m_pGrid->move(m_xEntry.get(), nullptr);
+ m_pGrid->move(m_xLabel.get(), nullptr);
+ }
};
class SwAddressControl_Impl
--
2.26.2

View File

@ -0,0 +1,144 @@
From f1cace2cd06b20fc1431f15892a4293fa3601b39 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 8 Jul 2020 10:13:26 +0100
Subject: [PATCH] use gdk_wayland_window_set_application_id when it becomes
available
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Change-Id: I60775dcbfbc396f195a71f219668944d0bfecf31
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/98325
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 2d8e2813ddc87f7ce03b97e4d603df11613461f0)
gdk_wayland_window_set_application_id doesn't work when called early
after mapped it definitely works
Change-Id: Ide0fa636ee26acea0d938aef08532b9396fe901a
---
vcl/inc/unx/gtk/gtkframe.hxx | 3 +++
vcl/unx/gtk3/gtk3gtkframe.cxx | 49 +++++++++++++++++++++++++++++------
2 files changed, 44 insertions(+), 8 deletions(-)
diff --git a/vcl/inc/unx/gtk/gtkframe.hxx b/vcl/inc/unx/gtk/gtkframe.hxx
index ccf9064..49b6937 100644
--- a/vcl/inc/unx/gtk/gtkframe.hxx
+++ b/vcl/inc/unx/gtk/gtkframe.hxx
@@ -206,6 +206,7 @@ class GtkSalFrame : public SalFrame
GtkDropTarget* m_pDropTarget;
GtkDragSource* m_pDragSource;
bool m_bGeometryIsProvisional;
+ bool m_bIconSetWhileUnmapped;
GtkSalMenu* m_pSalMenu;
@@ -315,6 +316,8 @@ class GtkSalFrame : public SalFrame
void SetScreen( unsigned int nNewScreen, SetType eType, tools::Rectangle const *pSize = nullptr );
+ void SetIcon(const char* pIcon);
+
public:
cairo_surface_t* m_pSurface;
basegfx::B2IVector m_aFrameSize;
diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx
index 786aa40..624c75a 100644
--- a/vcl/unx/gtk3/gtk3gtkframe.cxx
+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx
@@ -55,6 +55,7 @@
#include <cstdlib>
#include <cmath>
+#include <dlfcn.h>
#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
#include <com/sun/star/awt/MouseButton.hpp>
@@ -922,6 +923,7 @@ void GtkSalFrame::InitCommon()
m_pDropTarget = nullptr;
m_pDragSource = nullptr;
m_bGeometryIsProvisional = false;
+ m_bIconSetWhileUnmapped = false;
m_ePointerStyle = static_cast<PointerStyle>(0xffff);
m_pSalMenu = nullptr;
m_nWatcherId = 0;
@@ -1217,6 +1219,28 @@ void GtkSalFrame::SetTitle( const OUString& rTitle )
}
}
+void GtkSalFrame::SetIcon(const char* appicon)
+{
+ gtk_window_set_icon_name(GTK_WINDOW(m_pWindow), appicon);
+
+#if defined(GDK_WINDOWING_WAYLAND)
+ if (DLSYM_GDK_IS_WAYLAND_DISPLAY(getGdkDisplay()))
+ {
+ static auto set_application_id = reinterpret_cast<void (*) (GdkWindow*, const char*)>(
+ dlsym(nullptr, "gdk_wayland_window_set_application_id"));
+ if (set_application_id)
+ {
+ GdkWindow* gdkWindow = gtk_widget_get_window(m_pWindow);
+ set_application_id(gdkWindow, appicon);
+
+ // gdk_wayland_window_set_application_id doesn't seem to work before
+ // the window is mapped, so set this for real when/if we are mapped
+ m_bIconSetWhileUnmapped = !gtk_widget_get_mapped(m_pWindow);
+ }
+ }
+#endif
+}
+
void GtkSalFrame::SetIcon( sal_uInt16 nIcon )
{
if( (m_nStyle & (SalFrameStyleFlags::PLUG|SalFrameStyleFlags::SYSTEMCHILD|SalFrameStyleFlags::FLOAT|SalFrameStyleFlags::INTRO|SalFrameStyleFlags::OWNERDRAWDECORATION))
@@ -1240,7 +1264,8 @@ void GtkSalFrame::SetIcon( sal_uInt16 nIcon )
else
appicon = g_strdup ("libreoffice-startcenter");
- gtk_window_set_icon_name (GTK_WINDOW (m_pWindow), appicon);
+ SetIcon(appicon);
+
g_free (appicon);
}
@@ -1309,13 +1334,18 @@ void GtkSalFrame::Show( bool bVisible, bool /*bNoActivate*/ )
}
#if defined(GDK_WINDOWING_WAYLAND)
- //rhbz#1334915, gnome#779143, tdf#100158
- //gtk under wayland lacks a way to change the app_id
- //of a window, so brute force everything as a
- //startcenter when initially shown to at least get
- //the default LibreOffice icon and not the broken
- //app icon
- if (DLSYM_GDK_IS_WAYLAND_DISPLAY(getGdkDisplay()))
+ /*
+ rhbz#1334915, gnome#779143, tdf#100158
+ https://gitlab.gnome.org/GNOME/gtk/-/issues/767
+
+ before gdk_wayland_window_set_application_id was available gtk
+ under wayland lacked a way to change the app_id of a window, so
+ brute force everything as a startcenter when initially shown to at
+ least get the default LibreOffice icon and not the broken app icon
+ */
+ static bool bAppIdImmutable = DLSYM_GDK_IS_WAYLAND_DISPLAY(getGdkDisplay()) &&
+ !dlsym(nullptr, "gdk_wayland_window_set_application_id");
+ if (bAppIdImmutable)
{
OString sOrigName(g_get_prgname());
g_set_prgname("libreoffice-startcenter");
@@ -3039,6 +3069,9 @@ gboolean GtkSalFrame::signalMap(GtkWidget *, GdkEvent*, gpointer frame)
{
GtkSalFrame* pThis = static_cast<GtkSalFrame*>(frame);
+ if (pThis->m_bIconSetWhileUnmapped)
+ pThis->SetIcon(gtk_window_get_icon_name(GTK_WINDOW(pThis->m_pWindow)));
+
pThis->CallCallbackExc( SalEvent::Resize, nullptr );
pThis->TriggerPaintEvent();
--
2.26.2

View File

@ -1,46 +0,0 @@
From 3ee652e1c18186a5de47797aa4b02defcb29c210 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Mon, 11 May 2020 17:02:50 +0100
Subject: [PATCH] use the LinkManager persist to determine the Referer
Change-Id: I4e93878972492a93af368ffa0560412132431a24
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94061
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
---
svx/source/svdraw/svdograf.cxx | 9 ++++++++-
1 file changed, 8 insertions(+), 1 deletion(-)
diff --git a/svx/source/svdraw/svdograf.cxx b/svx/source/svdraw/svdograf.cxx
index 7e14a6d3bdd9..53b3e00a35fc 100644
--- a/svx/source/svdraw/svdograf.cxx
+++ b/svx/source/svdraw/svdograf.cxx
@@ -19,8 +19,10 @@
#include <unotools/streamwrap.hxx>
+#include <sfx2/docfile.hxx>
#include <sfx2/lnkbase.hxx>
#include <math.h>
+#include <sfx2/objsh.hxx>
#include <tools/helpers.hxx>
#include <sot/exchange.hxx>
#include <sot/formats.hxx>
@@ -109,8 +111,13 @@ SdrGraphicLink::SdrGraphicLink(SdrGrafObj& rObj)
{
sfx2::LinkManager::GetDisplayNames( this, nullptr, &rGrafObj.aFileName, nullptr, &rGrafObj.aFilterName );
+ OUString sReferer(getReferer());
+ SfxObjectShell * sh = pLinkManager->GetPersist();
+ if (sh != nullptr && sh->HasName())
+ sReferer = sh->GetMedium()->GetName();
+
Graphic aGraphic;
- if (sfx2::LinkManager::GetGraphicFromAny(rMimeType, rValue, getReferer(), aGraphic, nullptr))
+ if (sfx2::LinkManager::GetGraphicFromAny(rMimeType, rValue, sReferer, aGraphic, nullptr))
{
rGrafObj.ImpSetLinkedGraphic(aGraphic);
}
--
2.25.4

View File

@ -0,0 +1,25 @@
From abaf73f99c300ffe6c38dc7d1ce93ab09043f88a Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 4 Nov 2020 11:02:21 +0000
Subject: [PATCH 2/8] resource leak
Change-Id: I1abd8acef55d5bdb4744ecf1a62d8e1396de0e3f
---
vcl/unx/gtk3/a11y/gtk3atktextattributes.cxx | 1 +
1 file changed, 1 insertion(+)
diff --git a/vcl/unx/gtk3/a11y/gtk3atktextattributes.cxx b/vcl/unx/gtk3/a11y/gtk3atktextattributes.cxx
index 52f0a34cd3a2..483283cadab5 100644
--- a/vcl/unx/gtk3/a11y/gtk3atktextattributes.cxx
+++ b/vcl/unx/gtk3/a11y/gtk3atktextattributes.cxx
@@ -987,6 +987,7 @@ TabStopList2String( const uno::Any& rAny, bool default_tabs )
{
gchar * old_tab_str = ret;
ret = g_strconcat(old_tab_str, " ", tab_str, nullptr);
+ g_free( tab_str );
g_free( old_tab_str );
}
else
--
2.28.0

View File

@ -0,0 +1,37 @@
From 22eb26fe2f4ecf57bff0e1bb377f7af2e7a9e7e4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 4 Nov 2020 09:28:02 +0000
Subject: [PATCH 3/8] copy_paste_error data1 looks like a copy-paste error
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
Change-Id: I937743f8d1789c68ed960c6a5aede0508dfa7bcd
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105282
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 1aa5e450f065bfdae8c354344f23b897f48a166f)
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105457
Tested-by: Jean-Pierre Ledure <jp@ledure.be>
Reviewed-by: Jean-Pierre Ledure <jp@ledure.be>
(cherry picked from commit 4a6ca8920afc0bbb8e36869416745d5b0163313c)
---
wizards/source/access2base/access2base.py | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/wizards/source/access2base/access2base.py b/wizards/source/access2base/access2base.py
index af14a880cb3d..3cdc758e820d 100644
--- a/wizards/source/access2base/access2base.py
+++ b/wizards/source/access2base/access2base.py
@@ -902,7 +902,7 @@ class Basic(object, metaclass = _Singleton):
@classmethod
def DateDiff(cls, add, date1, date2, weekstart = 1, yearstart = 1):
if isinstance(date1, datetime.datetime): date1 = date1.isoformat()
- if isinstance(date2, datetime.datetime): date2 = date1.isoformat()
+ if isinstance(date2, datetime.datetime): date2 = date2.isoformat()
return cls.M('PyDateDiff', _WRAPPERMODULE, add, date1, date2, weekstart, yearstart)
@classmethod
--
2.28.0

View File

@ -0,0 +1,74 @@
From cba3b6a12c9f0dc67a93bc3b708497a8f5eea5a5 Mon Sep 17 00:00:00 2001
From: Stephan Bergmann <sbergman@redhat.com>
Date: Sun, 15 Dec 2019 10:03:56 +0100
Subject: [PATCH 4/8] Fix use of uninitialized SwFEShell::bTableCopied
...which had been introduced with 1e278d1d0cfb1d5375195aa764739f00633f21e8
"tdf#37156 Writer menu: Paste as Nested table", during
`make CppunitTest_sw_uiwriter CPPUNIT_TEST_NAME=SwUiWriterTest::testDde
VALGRIND=memcheck`:
> Conditional jump or move depends on uninitialised value(s)
> at 0x1EBBFAF8: SwTransferable::PrepareForCopy(bool) (sw/source/uibase/dochdl/swdtflvr.cxx:896)
> by 0x1EBC22BA: SwTransferable::Copy(bool) (sw/source/uibase/dochdl/swdtflvr.cxx:1144)
> by 0x1ECB552D: SwBaseShell::ExecClpbrd(SfxRequest&) (sw/source/uibase/shells/basesh.cxx:277)
> by 0x1C0D0BB0: SfxDispatcher::Call_Impl(SfxShell&, SfxSlot const&, SfxRequest&, bool) (include/sfx2/shell.hxx:197)
> by 0x1C0D72EB: SfxDispatcher::Execute_(SfxShell&, SfxSlot const&, SfxRequest&, SfxCallMode) (sfx2/source/control/dispatch.cxx:764)
> by 0x1C153977: SfxDispatchController_Impl::dispatch(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) (sfx2/source/control/unoctitm.cxx:760)
> by 0x1C154916: SfxOfficeDispatch::dispatchWithNotification(com::sun::star::util::URL const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XDispatchResultListener> const&) (sfx2/source/control/unoctitm.cxx:245)
> by 0x21FDE395: framework::DispatchHelper::executeDispatch(com::sun::star::uno::Reference<com::sun::star::frame::XDispatch> const&, com::sun::star::util::URL const&, bool, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (framework/source/services/dispatchhelper.cxx:151)
> by 0x21FDEC95: framework::DispatchHelper::executeDispatch(com::sun::star::uno::Reference<com::sun::star::frame::XDispatchProvider> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (framework/source/services/dispatchhelper.cxx:109)
> by 0x19BF89C7: lcl_dispatchCommand(com::sun::star::uno::Reference<com::sun::star::lang::XComponent> const&, rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (sw/qa/extras/uiwriter/uiwriter.cxx:4048)
> by 0x19C1F3EC: SwUiWriterTest::testDde() (sw/qa/extras/uiwriter/uiwriter.cxx:4060)
> Uninitialised value was created by a heap allocation
> at 0x4839E86: operator new(unsigned long) (/builddir/build/BUILD/valgrind-3.15.0/coregrind/m_replacemalloc/vg_replace_malloc.c:344)
> by 0x1ED6DA43: SwView::SwView(SfxViewFrame*, SfxViewShell*) (sw/source/uibase/uiview/view.cxx:864)
> by 0x1ED70065: SwView::CreateInstance(SfxViewFrame*, SfxViewShell*) (sw/source/uibase/uiview/view0.cxx:79)
> by 0x1C347941: SfxBaseModel::createViewController(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) (sfx2/source/doc/sfxbasemodel.cxx:4233)
> by 0x1C458D81: (anonymous namespace)::SfxFrameLoader_Impl::load(com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&) (sfx2/source/view/frmload.cxx:587)
> by 0x2401FAD0: framework::LoadEnv::impl_loadContent() (framework/source/loadenv/loadenv.cxx:1159)
> by 0x24020735: framework::LoadEnv::start() (framework/source/loadenv/loadenv.cxx:392)
> by 0x24020F89: framework::LoadEnv::startLoading(rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&, com::sun::star::uno::Reference<com::sun::star::frame::XFrame> const&, rtl::OUString const&, int, LoadEnvFeatures) (framework/source/loadenv/loadenv.cxx:297)
> by 0x2402175B: framework::LoadEnv::loadComponentFromURL(com::sun::star::uno::Reference<com::sun::star::frame::XComponentLoader> const&, com::sun::star::uno::Reference<com::sun::star::uno::XComponentContext> const&, rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (framework/source/loadenv/loadenv.cxx:166)
> by 0x24058172: framework::Desktop::loadComponentFromURL(rtl::OUString const&, rtl::OUString const&, int, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (framework/source/services/desktop.cxx:610)
> by 0x1F5F7306: unotest::MacrosTest::loadFromDesktop(rtl::OUString const&, rtl::OUString const&, com::sun::star::uno::Sequence<com::sun::star::beans::PropertyValue> const&) (unotest/source/cpp/macros_test.cxx:48)
> by 0x19C646A7: SwModelTestBase::loadURL(rtl::OUString const&, char const*, char const*) (sw/qa/inc/swmodeltestbase.hxx:764)
> by 0x19BD3792: SwUiWriterTest::createDoc(char const*) (sw/qa/extras/uiwriter/uiwriter.cxx:576)
> by 0x19C1F352: SwUiWriterTest::testDde() (sw/qa/extras/uiwriter/uiwriter.cxx:4055)
(produced with a --enable-optimized build, so some inline frames are elided; see
also <https://ci.libreoffice.org//job/lo_ubsan/1480/> for the same issue
detected with UBSan).
Change-Id: I080d296006bad4726942fb95a1338ea46c12bed4
Reviewed-on: https://gerrit.libreoffice.org/85162
Tested-by: Jenkins
Reviewed-by: Stephan Bergmann <sbergman@redhat.com>
(cherry picked from commit bcc74f619bf87ab97ffc48ab33e031d357952a70)
---
sw/source/core/frmedt/fews.cxx | 2 ++
1 file changed, 2 insertions(+)
diff --git a/sw/source/core/frmedt/fews.cxx b/sw/source/core/frmedt/fews.cxx
index 2ad7ec20a86f..0c4e097287c2 100644
--- a/sw/source/core/frmedt/fews.cxx
+++ b/sw/source/core/frmedt/fews.cxx
@@ -665,6 +665,7 @@ SwFEShell::SwFEShell( SwDoc& rDoc, vcl::Window *pWindow, const SwViewOption *pOp
, m_bCheckForOLEInCaption(false)
, m_aPasteListeners(GetPasteMutex())
, m_eTableInsertMode(SwTable::SEARCH_NONE)
+ , bTableCopied(false)
{
}
@@ -673,6 +674,7 @@ SwFEShell::SwFEShell( SwEditShell& rShell, vcl::Window *pWindow )
, m_bCheckForOLEInCaption(false)
, m_aPasteListeners(GetPasteMutex())
, m_eTableInsertMode(SwTable::SEARCH_NONE)
+ , bTableCopied(false)
{
}
--
2.28.0

View File

@ -0,0 +1,35 @@
From 2ebea3e9f3504ef97ecf8af198cd803a56240fe4 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Fri, 27 Mar 2020 09:03:20 +0000
Subject: [PATCH 5/8] cid#1460969 Uninitialized scalar field
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
multiple ctor's strikes again
Change-Id: Ieaae6d5c9e76a3ade17289ce7d1bdffad1168cc9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/91191
Tested-by: Jenkins
Tested-by: Caolán McNamara <caolanm@redhat.com>
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 698ecd52e4ca14b5ce633a3358a95992b0dd638c)
---
dbaccess/source/core/dataaccess/ModelImpl.cxx | 1 +
1 file changed, 1 insertion(+)
diff --git a/dbaccess/source/core/dataaccess/ModelImpl.cxx b/dbaccess/source/core/dataaccess/ModelImpl.cxx
index d5c3b9b3e086..1f11f3679289 100644
--- a/dbaccess/source/core/dataaccess/ModelImpl.cxx
+++ b/dbaccess/source/core/dataaccess/ModelImpl.cxx
@@ -407,6 +407,7 @@ ODatabaseModelImpl::ODatabaseModelImpl(
,m_aEmbeddedMacros()
,m_bModificationLock( false )
,m_bDocumentInitialized( false )
+ ,m_nScriptingSignatureState(SignatureState::UNKNOWN)
,m_aContext( _rxContext )
,m_sName(_rRegistrationName)
,m_nLoginTimeout(0)
--
2.28.0

View File

@ -0,0 +1,45 @@
From 81618bd69088436eb60fd07b944effb178d788ae Mon Sep 17 00:00:00 2001
From: Justin Luth <justin.luth@collabora.com>
Date: Sat, 31 Oct 2020 15:36:44 +0300
Subject: [PATCH 6/8] tdf#137897 scRetypePassInputDlg: re-allow password
removal
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
This weld-conversion logic error caused a LO 6.1 regression
in commit 0e4f93e88bfae3489d2de84fc2febed100880628.
- m_pPasswordGrid->Disable();
+ m_xPasswordGrid->set_sensitive(false); //disable == false
- m_pBtnOk->Enable();
+ m_xBtnOk->set_sensitive(false); //enable == true
The result is that attempting to remove the password did not
enable the OK button, so it was impossible.
Change-Id: I4067b2ec6b89e86b21968d33c8850cca6d067e71
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105049
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
(cherry picked from commit 9eeaff5fa9070bea685db8b6bbd2dfc1565756ac)
---
sc/source/ui/miscdlgs/retypepassdlg.cxx | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/sc/source/ui/miscdlgs/retypepassdlg.cxx b/sc/source/ui/miscdlgs/retypepassdlg.cxx
index 84f8ef182b54..fa31ea77e392 100644
--- a/sc/source/ui/miscdlgs/retypepassdlg.cxx
+++ b/sc/source/ui/miscdlgs/retypepassdlg.cxx
@@ -372,7 +372,7 @@ IMPL_LINK_NOARG(ScRetypePassInputDlg, RadioBtnHdl, weld::ToggleButton&, void)
else
{
m_xPasswordGrid->set_sensitive(false);
- m_xBtnOk->set_sensitive(false);
+ m_xBtnOk->set_sensitive(true);
}
}
--
2.28.0

View File

@ -0,0 +1,137 @@
From 7efe51c401ee469ae4835994e5f11b158fd354b9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Wed, 4 Nov 2020 13:01:53 +0000
Subject: [PATCH 7/8] tdf#137982 m_xFrame is already disposed
move the frame cleanup into a helper that listens to see if it got
disposed by the preview itself
Change-Id: I523285268118300f18b0f0f0a10fab7a9cced9c6
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105221
Tested-by: Jenkins
Reviewed-by: Michael Stahl <michael.stahl@cib.de>
(cherry picked from commit a986db4b2d24669e502e447036851e118cc23036)
---
sw/source/ui/dbui/dbtablepreviewdialog.cxx | 53 ++++++++++++++++++----
sw/source/ui/dbui/dbtablepreviewdialog.hxx | 4 +-
2 files changed, 46 insertions(+), 11 deletions(-)
diff --git a/sw/source/ui/dbui/dbtablepreviewdialog.cxx b/sw/source/ui/dbui/dbtablepreviewdialog.cxx
index 23e7984623d8..8f2d92b1c7d5 100644
--- a/sw/source/ui/dbui/dbtablepreviewdialog.cxx
+++ b/sw/source/ui/dbui/dbtablepreviewdialog.cxx
@@ -20,6 +20,8 @@
#include <swtypes.hxx>
#include "dbtablepreviewdialog.hxx"
#include <comphelper/processfactory.hxx>
+#include <cppuhelper/implbase.hxx>
+#include <com/sun/star/document/XEventListener.hpp>
#include <com/sun/star/frame/Frame.hpp>
#include <toolkit/helper/vclunohelper.hxx>
@@ -32,6 +34,34 @@ using namespace ::com::sun::star::beans;
using namespace ::com::sun::star::lang;
using namespace ::com::sun::star::util;
+class DBTablePreviewFrame
+ : public cppu::WeakImplHelper<lang::XEventListener>
+{
+private:
+ css::uno::Reference<css::frame::XFrame2> m_xFrame;
+
+ virtual void SAL_CALL disposing(const lang::EventObject& /*Source*/) override
+ {
+ m_xFrame.clear();
+ }
+
+public:
+ DBTablePreviewFrame(css::uno::Reference<css::frame::XFrame2>& rFrame)
+ : m_xFrame(rFrame)
+ {
+ }
+
+ void cleanup()
+ {
+ if (m_xFrame.is())
+ {
+ m_xFrame->setComponent(nullptr, nullptr);
+ m_xFrame->dispose();
+ m_xFrame.clear();
+ }
+ }
+};
+
SwDBTablePreviewDialog::SwDBTablePreviewDialog(weld::Window* pParent, uno::Sequence< beans::PropertyValue> const & rValues)
: SfxDialogController(pParent, "modules/swriter/ui/tablepreviewdialog.ui", "TablePreviewDialog")
, m_xDescriptionFI(m_xBuilder->weld_label("description"))
@@ -51,22 +81,26 @@ SwDBTablePreviewDialog::SwDBTablePreviewDialog(weld::Window* pParent, uno::Seque
m_xDescriptionFI->set_label(sDescription.replaceFirst("%1", sTemp));
}
+ css::uno::Reference<css::frame::XFrame2> xFrame;
try
{
// create a frame wrapper for myself
- m_xFrame = frame::Frame::create( comphelper::getProcessComponentContext() );
- m_xFrame->initialize(m_xBeamerWIN->CreateChildFrame());
+ xFrame = frame::Frame::create( comphelper::getProcessComponentContext() );
+ xFrame->initialize(m_xBeamerWIN->CreateChildFrame());
}
catch (uno::Exception const &)
{
- m_xFrame.clear();
+ xFrame.clear();
}
- if (m_xFrame.is())
+ if (xFrame.is())
{
+ m_xFrameListener.set(new DBTablePreviewFrame(xFrame));
+ xFrame->addEventListener(m_xFrameListener.get());
+
util::URL aURL;
aURL.Complete = ".component:DB/DataSourceBrowser";
- uno::Reference<frame::XDispatch> xD = m_xFrame->queryDispatch(aURL, "", 0x0C);
- if(xD.is())
+ uno::Reference<frame::XDispatch> xD = xFrame->queryDispatch(aURL, "", 0x0C);
+ if (xD.is())
{
xD->dispatch(aURL, rValues);
m_xBeamerWIN->show();
@@ -76,11 +110,10 @@ SwDBTablePreviewDialog::SwDBTablePreviewDialog(weld::Window* pParent, uno::Seque
SwDBTablePreviewDialog::~SwDBTablePreviewDialog()
{
- if(m_xFrame.is())
+ if (m_xFrameListener)
{
- m_xFrame->setComponent(nullptr, nullptr);
- m_xFrame->dispose();
- m_xFrame.clear();
+ m_xFrameListener->cleanup();
+ m_xFrameListener.clear();
}
}
diff --git a/sw/source/ui/dbui/dbtablepreviewdialog.hxx b/sw/source/ui/dbui/dbtablepreviewdialog.hxx
index ec2c58d92bf3..27e6e83d39ca 100644
--- a/sw/source/ui/dbui/dbtablepreviewdialog.hxx
+++ b/sw/source/ui/dbui/dbtablepreviewdialog.hxx
@@ -27,12 +27,14 @@ namespace com{ namespace sun{ namespace star{
namespace frame{ class XFrame2; }
}}}
+class DBTablePreviewFrame;
+
class SwDBTablePreviewDialog : public SfxDialogController
{
std::unique_ptr<weld::Label> m_xDescriptionFI;
std::unique_ptr<weld::Container> m_xBeamerWIN;
- css::uno::Reference< css::frame::XFrame2 > m_xFrame;
+ rtl::Reference<DBTablePreviewFrame> m_xFrameListener;
public:
SwDBTablePreviewDialog(weld::Window* pParent,
css::uno::Sequence< css::beans::PropertyValue> const & rValues );
--
2.28.0

View File

@ -0,0 +1,52 @@
From fa0371ce0456bfe355c36df0741ff23daeccb3a3 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm@redhat.com>
Date: Tue, 3 Nov 2020 14:04:37 +0000
Subject: [PATCH 8/8] Resolves: tdf#137215 restore original modality before
dialog loop ends
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/105214
Tested-by: Jenkins
Reviewed-by: Adolfo Jayme Barrientos <fitojb@ubuntu.com>
(cherry picked from commit 022c11602d2101b49724b5cf104cc6c70b5a5e4b)
Change-Id: I83467e28534b781c51b8d75a023e41f3c6a03903
---
sc/source/ui/dbgui/validate.cxx | 8 ++++++++
sc/source/ui/inc/validate.hxx | 2 ++
2 files changed, 10 insertions(+)
diff --git a/sc/source/ui/dbgui/validate.cxx b/sc/source/ui/dbgui/validate.cxx
index 41bc913db911..73e04cc44706 100644
--- a/sc/source/ui/dbgui/validate.cxx
+++ b/sc/source/ui/dbgui/validate.cxx
@@ -95,6 +95,14 @@ ScValidationDlg::ScValidationDlg(weld::Window* pParent, const SfxItemSet* pArgSe
AddTabPage("erroralert", ScTPValidationError::Create, nullptr);
}
+void ScValidationDlg::EndDialog()
+{
+ // tdf#137215 ensure original modalality of true is restored before dialog loop ends
+ if (m_bOwnRefHdlr)
+ RemoveRefDlg(true);
+ ScValidationDlgBase::EndDialog();
+}
+
ScValidationDlg::~ScValidationDlg()
{
if (m_bOwnRefHdlr)
diff --git a/sc/source/ui/inc/validate.hxx b/sc/source/ui/inc/validate.hxx
index 2c562717f921..cb88b9e8b40e 100644
--- a/sc/source/ui/inc/validate.hxx
+++ b/sc/source/ui/inc/validate.hxx
@@ -176,6 +176,8 @@ public:
void SetModal(bool bModal) { m_xDialog->set_modal(bModal); }
+ virtual void EndDialog() override;
+
virtual void SetReference( const ScRange& rRef, ScDocument* pDoc ) override
{
if ( m_pHandler && m_pSetReferenceHdl )
--
2.28.0

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl6gIF4ACgkQ9DSh76/u
rqN6sBAAyAGXPcw8Uyd3KCczDuYBJa+lDkO3RJj5CD+69XFCD4Mp+Wo1pGZWhJdT
k1xU/KC+w5BkUP8B5Hf0HVXAt+nwAjZMafhUJssogKr2/2NTrjJ1xovo60/DVZCp
eRu/pAudlR1b8B+giwrO0dDKJ1DvbrOUUIbdqXmKQcb2XA0Actyxa5zBcg19/iPN
zL3Sv1ExsXTG67pqMU19ch/GfqcaQeH6KZCIpJTLFg8hfY6q3stJ1s7jpxPvPlcY
fV9NR3bpO7GGvcOoo2SOr7oV95jCP3G3f/qUTLo7VgVsKIWOUGBPl5MfsHDNIxt+
MAmlWaEMjxA82LZ8A1aGu4vvGS9ejytEiKv8tkEfaq6Ixaizh30iZecBoATJFA28
CT3yTaHBImvHzot+zDc3TNMKXJjQ5MSTGNLRXN+gNpaa/NUPUgJ4csMgQVjTwwEP
2qqSvJB23I+6DVJnxUJC/cHL7SV0JPJ08ccQi4kAAJ+9f45/hTCQsP24RG+ZHIlS
wxsS55Py2jHOd7HySYjJzLHxXum9zSMRqDi4qGTi8TTUGJKLiANW/SdlS96UUgjG
Xby+jHEvqClWBryygyj7MndlXjOYU4QS1YezIaO6lSFNb4IA+zYAOqfXr2aM2xZK
GnhCCvJNFqe0IX+ZAYIjWBMaBTNZ2SJ61C9hM+4WncO0acekaMQ=
=+JKG
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl99uNwACgkQ9DSh76/u
rqNXhQ/9GhwXWFcV4GyBa3TReuGs+1YrzpUvp+w/MA1wN5czpPwA9CAhivCti1pU
dWwb2c/BePC+KBPthnjKNbuFIL00UuFuz4evEsNLykgwc3CCPXZDm5sxvJUAt1kf
QzlL6XQxpk47v2fRs5wY5huO5rv45o33+N1GV1OCm9Y5vo67wWHnnQJCqIKsfEoY
dWEvfFJxy9c7FiwbRZe9gZctGlOqRJpRbSwffchQ9fJQ5+10w5xhCdd5JrQheqe0
G0JOHTbPYncv9C9+aTsye5maVEQj/Wi/SH6IzE5T5AGVEf1dguGOr//NLfuPoY0d
Hrm17tKqsV1Lc7LzSwVAdes87bIjcNkITmfyKiaH3g4gDiL2Op9nsZiSwMad4+LX
2GDQKfmqTyS1Um1SdqAMJezwlHOExT491arWwjfDeBmMDJfFNxzNRSihbqzFJs5/
qfRjOSxpH0oRGMV4RSsLxDwjyzKAsUFQ2pZFx6A4qwp/X17+TulI3NnUHSNTMUaA
rsRgopJb2NuTP3+lTPCotFUcbmFKuCHtAHw8mntyd54JnRHlooVW+/dJ1HyGqAbD
moPg94GVKB0OPaw7D9hipG5dH1wsBz4vJXTEzJL8D/QOM7EmZDkzomPa/J10Pj4v
DXUuzAmfU4bShr1wzZvhEBIVDoS8gPGYwArYdCD18bm9NPWrO3k=
=ItCL
-----END PGP SIGNATURE-----

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl6gIGQACgkQ9DSh76/u
rqPMoQ/+OpSwyMQ5fy2eaJF+tVRJWroNZw/PmyXpwoinNX2EQNe6f6Nswej4u+YA
sYU1QCxmEMBY27LOli9Fa4ll5fAW2X8kThdxDiGPRs9+NMnZv7uEnf5eWvvjh9aT
BZLF01BOR798u+ympR6w+6xBRs5sPIqE4Lv7oOafAr5P9nEFAmR7aF9KiIQZWgcK
dUUBm8xhfXkd8/2uAFNJQg+SfMYgbipU18mImRorFwU27WLaNLCqrDTPbA76sdf/
LvvXDJi8t49x+vvquWgOUND+96u/oESQhXveaRgXYLWUt+pFghw7E3P3BZPf6VOX
3hWngv9llNyFccgVMpvUqRSkwbG9TYnWPAXlyYEPF+E6JUe+n3D4UAWn8rJquf6F
ZdmHFNuqQR8XB8Vtc0fwsEu+l0MMg/OmF9R7oeYXx6orAe2WtnpLD45G6lxdoGDx
JVAPvNAq8ys8Hj8xoIO3AuXR/QHeNdxQi3/VXoC8hjfowhsRfvL4TmvT2TIE+/J6
fTyOP1gKeI5aBTYHlIwwTFoPntlOLQ56Kck8YlZMQl6KdaUN1CJRdYjg36HPgXHg
cF9ZxR3rT4dxC8qmtnlAl8SWI37uvbiUM1IjyT9dmGSFBHPm5ph2dRaGeWWVE/Z3
D3qdN2c0+AW7UXk4r0h5KVfFEvTBsbNUk2jPcup7sf3S8ZSXZ0o=
=+b1s
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl99uPgACgkQ9DSh76/u
rqNc+A/+PnNAFTvU3bHl8dwQGtRxBzcBuz0mkUTHET7qOPkzHsWwiaxmVhrDPvEd
UvG5NiVzux/YnQpLfG9yFcHH78RHy3RKpYHsuUwlb8AWOpMIB4rX2IU2Kcn6jW1v
2fokIVEvu5QzbI7sAyrxfAsdTGa+NALCG7oF8HmGVv/iVHZYTFYU7461LEqNSgbB
uAO9SWV5FLDYxcg6bYHULLFylrD/YBdQrv2Jj16apwVpKNHJPj1qE00KIRl1fYQ6
PasaGh1D6ZLKhAeOymr18eWQ0VZYmKjszddQExMbLTlxQZI+pZ8Bo6WKz7Y0IiwD
aCcZeVOYRs40Xc4Mc7+6hxO1bGFrG1CvxPE3gdrTAsPmjRko3CNTRFfPyd/e0pHV
0hpmIamL+OAE8V3gG5kSmVCtmnjhAtwnzBnqyuSU/J7thDOp0GUM+FBF6pxQPsf7
IBZCHZALOO727A6+YR2JsBqmpDi+AxEPNaksDm+orkIG2hx5ai5LmfzgqF0gsBRN
D//oVVpDM34JF5eLD4BOzUv3KqZYSmvDUqnkDF25bMJa5v637VoC7HiPypKRiCn1
3SLV1YUxMP0EKu2QU7Bz36CLzkxJfEcyvje5//wravbxuDopZC4703fkK1WrANzL
TviCWo1h03ClV1GEhDNB14hgzVN5kfVxaosve9U2Zyayabszj+s=
=12X5
-----END PGP SIGNATURE-----

View File

@ -1,16 +0,0 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl6gIGUACgkQ9DSh76/u
rqPyqQ/9GeLFssbtcXE3IO2ZJMTgRQZyfAZ3bP0kI8LG8vYXskHj+HQdpe0qg0ik
EKUZWh+gy37TTX88FhZqZ4FErZ67rSBAqW9yvq3+T17+bCSoxynEJzrDy2yhirru
XHhkDC1QO0n1aY2Fe7p/Qw0cb5jzxnPyIf55fOH0gwWTq/ZQiA+qRej8TMvTd1vW
zaOU9k4zd4rMxdaQg+WpOmwf/QuxK4jPbU9dB5dMFW7JxBYWjgplhH5DI4wVysvn
8S3LVgwKB5t0mMK0SAm5jAa9urIDdH9F1ZDnPSsngGQ0PmiSIQnRcfA7SbfZ4IIA
SehTcW0rNoqeCv6H+vOX5EIIVehtBun5bJXFZ/y9a3PHxPqDR0xtjF7H95a3+Vrq
Yf0/52MowGpgEwPgLWrdLJId0xdVymhKw5k4rZu5l5DEGS0PteGUJ7C50P+HMeAm
6RuP+CaSFW31+pEJMYCgMtmUK3s+ru9dj/rUdEDHXi5IUZQ8IEtCLou3Uwzs47Tb
kf2m3r9a9jQIhv5Cba2yAluhIbsKC2WmZbRzioPwnHV7ULUDy+E/Pz1tEQ0Vy4/M
Xed4RDoukZRy8VzsVqyneNOTMia22P1oy1xXtNzQ/CA+6vByQrByGTnt3ro3/frm
jwbFTSyuYgWuX0l++nxjt6dSVxwczouqFjR0UJU/dADnxsHqMc8=
=FOsh
-----END PGP SIGNATURE-----

View File

@ -0,0 +1,16 @@
-----BEGIN PGP SIGNATURE-----
iQIzBAABCAAdFiEEwoOeytlAj76VMcPp9DSh76/urqMFAl99uPkACgkQ9DSh76/u
rqOB9g/+OfPvMQSnfDsF4JE93HcL+z6PNa7yEIuflFSLWRxjtBRrep5FPT0mui5a
PeCkLdR5TcHEQUa4GQuk5C6VLSbyQuEVoiO89Zj+xnLQGd96QJ5hyGjRqzPeP0kr
KSq59cdT1PMETcZy4IQlqVKV7a71pBgCKXh1t3cr56rD8h97jh3lNqOU++6pmpYH
F+IA4/GuWYA22M3oP+w0zmIR4HAdQB5RhxcAMQuLy+N7QUGRU27EMq8R8niRBp8G
Hb8MqVSdy19Hz9GKc3sNHFg4GIEywf/6CY+ldaca63F0X/KWCYYY5Ql3K180LAjG
wg6apwPynkCK05YjqlS8SedZlew9pH3sIauRM99aNC742EqsNoEY1dLEFWErdrr9
tub2bc5nYX7Ku6RXhlL5orXdU0quZH3c7n26g7VWI6rKvSh4Bs1godWs1UK5hqTt
jt/4RaMBvWzFTWbgQsWI3NLmTM/EOHAfhjDqTq5QPi+Wo3NaqBTlF1TiXJiLDWux
rBb+FcnMmeWrFLCtvKk8T5jYzv0e/HtLH4o3rWaNwzuBAgeeZrroQpTneIVqv8+L
HbE/GN1TaVIkc28RpX2PXdh918p1tmHNuKcPNQD+KIRP+FiBVfpFYm4/BtTb7nQU
Nzh0AxSSSgNcaZaj7iegb/m55BGBhMRjm2iA3bCNNG8JapOfIrs=
=Ot5W
-----END PGP SIGNATURE-----

View File

@ -3,7 +3,7 @@
%global _python_bytecompile_extra 1
# download path contains version without the last (fourth) digit
%global libo_version 6.3.6
%global libo_version 6.4.7
# Should contain .alphaX / .betaX, if this is pre-release (actually
# pre-RC) version. The pre-release string is part of tarball file names,
# so we need a way to define it easily at one place.
@ -54,7 +54,7 @@ Summary: Free Software Productivity Suite
Name: libreoffice
Epoch: 1
Version: %{libo_version}.2
Release: 2%{?libo_prerelease}%{?dist}
Release: 5%{?libo_prerelease}%{?dist}
License: (MPLv1.1 or LGPLv3+) and LGPLv3 and LGPLv2+ and BSD and (MPLv1.1 or GPLv2 or LGPLv2 or Netscape) and Public Domain and ASL 2.0 and MPLv2.0 and CC0
URL: http://www.libreoffice.org/
@ -77,7 +77,7 @@ Source11: %{external_url}/35c94d2df8893241173de1d16b6034c0-swingExSrc.zip
#backwards compatability.
Source12: %{external_url}/17410483b5b5f267aa18b7e00b65e6e0-hsqldb_1_8_0.zip
Source13: %{external_url}/884ed41809687c3e168fc7c19b16585149ff058eca79acbf3ee784f6630704cc-opens___.ttf
%global bundling_options %{?bundling_options} --without-system-hsqldb --disable-libnumbertext
%global bundling_options %{?bundling_options} --without-system-hsqldb
Provides: bundled(hsqldb) = 1.8.0
%if 0%{?fedora}
@ -140,8 +140,6 @@ BuildRequires: pkgconfig(epoxy)
BuildRequires: pkgconfig(evolution-data-server-1.2)
BuildRequires: pkgconfig(expat)
BuildRequires: pkgconfig(freetype2)
BuildRequires: pkgconfig(glew) >= 1.10.0
BuildRequires: pkgconfig(glu)
BuildRequires: pkgconfig(gobject-introspection-1.0)
BuildRequires: pkgconfig(gstreamer-1.0)
BuildRequires: pkgconfig(gstreamer-plugins-base-1.0)
@ -209,12 +207,15 @@ BuildRequires: pkgconfig(harfbuzz)
BuildRequires: pkgconfig(libeot)
BuildRequires: pkgconfig(libepubgen-0.1)
BuildRequires: pkgconfig(libqxp-0.0)
BuildRequires: pkgconfig(liborcus-0.14)
BuildRequires: pkgconfig(mdds-1.4)
BuildRequires: pkgconfig(liborcus-0.15)
BuildRequires: pkgconfig(mdds-1.5)
BuildRequires: libnumbertext-devel
# java stuff
BuildRequires: ant
%if 0%{?fedora}
BuildRequires: bsh
%endif
BuildRequires: java-devel
BuildRequires: junit
BuildRequires: pentaho-reporting-flow-engine
@ -237,20 +238,35 @@ Requires: %{name}-emailmerge%{?_isa} = %{epoch}:%{version}-%{release}
# not upstreamed: upstream wants an automatic restart after a crash; we
# want a nice abrt report
Patch0: 0001-don-t-suppress-crashes.patch
# disable tip-of-the-day dialog by default
Patch1: 0001-disble-tip-of-the-day-dialog-by-default.patch
# rhbz#1736810 disable opencl by default again
Patch2: 0001-Resolves-rhbz-1432468-disable-opencl-by-default.patch
Patch3: 0001-rhbz-1775767-null-deref.patch
Patch4: 0001-Adapt-SAL_WARN-to-C-20-deleted-ostream-for-sal_Unico.patch
Patch5: 0001-rhbz-1810732-crash-assert-inserting-document-with-in.patch
Patch6: 0001-AppendInfoBar-can-return-null.patch
Patch7: 0001-General-Internet-Error-dialog-appearing-on-gio-mount.patch
Patch8: 0001-rhbz-1820868-deref-of-null-xLayoutManager.patch
Patch9: 0001-Resolves-tdf-132288-don-t-merge-adjacent-properties-.patch
Patch10: 0001-tdf-131069-always-produce-utf-8-from-gettext.patch
Patch11: 0001-Keep-order-of-GDK-input-events-intact.patch
Patch12: 0001-Resolves-tdf-133411-drop-CONTENT_FLOWS_TO-from-dialo.patch
Patch13: 0001-limit-forms-to-http-s.patch
Patch14: 0001-use-the-LinkManager-persist-to-determine-the-Referer.patch
# backported
Patch3: 0001-replace-boost-bimap-in-sdext-pdfimport.patch
Patch4: 0001-fix-detecting-qrcodegen.patch
Patch5: 0001-Flatpak-Add-app-bin-libreoffice-app-libreoffice-prog.patch
Patch6: 0001-Restructure-solenv-bin-assemble-flatpak.sh.patch
Patch7: 0001-Related-tdf-127782-resize-the-print-dialog-to-its-op.patch
Patch8: 0001-rhbz-1870501-crash-on-reexport-of-odg.patch
Patch9: 0001-export-HYPERLINK-target-in-html-clipboard-export.patch
Patch10: 0001-use-gdk_wayland_window_set_application_id-when-it-be.patch
Patch11: 0001-tdf-137209-unparent-widgets-in-fragment-dtor.patch
Patch12: 0001-rhbz-1891326-suggest-package-install-of-the-most-app.patch
Patch13: 0001-0.5.1-is-sufficient.patch
Patch14: 0001-munge-cmis-headers-to-remove-exception-specs.patch
Patch15: 0001-1.2.25-is-sufficient.patch
Patch16: 0001-replace-Palatino-Linotype-with-Liberation-Serif.patch
Patch17: 0001-Revert-tdf-69060-lock-refreshing-font-data-when-load.patch
Patch18: 0001-Resolves-rhbz-1893846-if-last-close-had-insert-index.patch
Patch19: 0002-resource-leak.patch
Patch20: 0003-copy_paste_error-data1-looks-like-a-copy-paste-error.patch
Patch21: 0004-Fix-use-of-uninitialized-SwFEShell-bTableCopied.patch
Patch22: 0005-cid-1460969-Uninitialized-scalar-field.patch
Patch23: 0006-tdf-137897-scRetypePassInputDlg-re-allow-password-re.patch
Patch24: 0007-tdf-137982-m_xFrame-is-already-disposed.patch
Patch25: 0008-Resolves-tdf-137215-restore-original-modality-before.patch
Patch26: 0001-rhbz-1882616-move-cursor-one-step-at-a-time-in-the-d.patch
%if 0%{?rhel}
# not upstreamed
@ -286,10 +302,8 @@ Summary: All import / export filters
Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-calc%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-draw%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-graphicfilter%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-impress%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-math%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-writer%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-xsltfilter%{?_isa} = %{epoch}:%{version}-%{release}
@ -310,6 +324,7 @@ Requires: %{name}-langpack-en = %{epoch}:%{version}-%{release}
# rhbz#949106 libreoffice-core drags in both openjdk 1.7.0 and 1.8.0
Requires: java-headless >= 1:1.6
Obsoletes: libreoffice-headless < 1:4.4.0.0
Obsoletes: libreoffice-math-debuginfo < 1:6.4.7.2
Provides: libreoffice-headless = %{epoch}:%{version}-%{release}
Provides: libreoffice-headless%{?_isa} = %{epoch}:%{version}-%{release}
%if 0%{?rhel}
@ -404,7 +419,6 @@ programming model when more complex, nonlinear programming is required.
%package ogltrans
Summary: 3D OpenGL slide transitions for LibreOffice
Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-impress%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
%description ogltrans
@ -414,7 +428,6 @@ Requires good quality 3D support for your graphics card for best experience.
%package pdfimport
Summary: PDF Importer for LibreOffice Draw
Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-draw%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
%description pdfimport
@ -476,6 +489,7 @@ The LibreOffice Drawing Application.
Summary: LibreOffice Presentation Application
Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-data = %{epoch}:%{version}-%{release}
Requires: %{name}-ogltrans%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-pdfimport%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-pyuno%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-graphicfilter%{?_isa} = %{epoch}:%{version}-%{release}
@ -605,6 +619,7 @@ Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release}
Requires: %{name}-ure%{?_isa} = %{epoch}:%{version}-%{release}
Requires: gstreamer1(element-gtksink)%{?mark64}
Obsoletes: libreoffice-gtk2 < 1:6.2.0.0
Obsoletes: libreoffice-gtk2-debuginfo < 1:6.2.0.0
Supplements: (%{name}-core%{?_isa} and gtk3%{?_isa})
%description gtk3
@ -740,7 +755,11 @@ This package provides gdb pretty printers for package %{name}.
Summary: %{langname} language pack for LibreOffice \
Requires: %{name}-core%{?_isa} = %{epoch}:%{version}-%{release} \
%{-a:Requires: autocorr-%{-a*}}%{!-a:%{-A:Requires: autocorr-%{lang}}} \
%if 0%{?rhel} && 0%{?rhel} < 9 \
%{-f:Requires: font(:lang=%{-f*})}%{!-f:%{-F:Requires: font(:lang=%{lang})}} \
%else \
%{-f:Recommends: langpacks-%{-f*}}%{!-f:%{-F:Recommends: langpacks-%{lang}}} \
%endif \
%{-h:Requires: hunspell-%{-h*}}%{!-h:%{-H:Requires: hunspell-%{lang}}} \
%{-m:Requires: mythes-%{-m*}}%{!-m:%{-M:Requires: mythes-%{lang}}} \
%{-y:Requires: hyphen-%{-y*}}%{!-y:%{-Y:Requires: hyphen-%{lang}}} \
@ -811,84 +830,85 @@ Rules for auto-correcting common %{langname} typing errors. \
%if %{with langpacks}
%langpack -l af -n Afrikaans -F -H -Y -A
%langpack -l ar -n Arabic -F -H -s ctl -T
%langpack -l as -n Assamese -F -H -Y
%langpack -l af -n Afrikaans -F -H -Y -A -X
%langpack -l ar -n Arabic -F -H -s ctl -T -X
%langpack -l as -n Assamese -F -H -Y -X
%langpack -l bg -n Bulgarian -F -H -Y -M -A -T -X
%langpack -l bn -n Bengali -F -H -Y -T
%langpack -l br -n Breton -F -H
%langpack -l bn -n Bengali -F -H -Y -T -X
%langpack -l br -n Breton -F -H -X
%langpack -l ca -n Catalan -F -H -Y -M -A -T -X
%langpack -l cs -n Czech -F -H -Y -M -A -T -X
%langpack -l cy -n Welsh -F -H -Y
%langpack -l cy -n Welsh -F -H -Y -X
%langpack -l da -n Danish -F -H -Y -M -A -T -X
%langpack -l de -n German -F -H -Y -M -A -T -X
%langpack -l dz -n Dzongkha -F -s ctl -T
%langpack -l el -n Greek -F -H -Y -M -T
%langpack -l dz -n Dzongkha -F -s ctl -T -X
%langpack -l el -n Greek -F -H -Y -M -T -X
%langpack -l es -n Spanish -F -H -Y -M -A -T -X
%langpack -l et -n Estonian -F -H -Y -T
%langpack -l eu -n Basque -F -H -Y -T
%langpack -l et -n Estonian -F -H -Y -T -X
%langpack -l eu -n Basque -F -H -Y -T -X
%langpack -l fa -n Farsi -A -H -Y -s ctl -X
%langpack -l fi -n Finnish -F -r libreoffice-voikko -A -T -X
%langpack -l fr -n French -F -H -Y -M -A -T -X
%langpack -l ga -n Irish -F -H -Y -M -A
%langpack -l gl -n Galician -F -H -Y -T
%langpack -l gu -n Gujarati -F -H -Y -s ctl -T
%langpack -l he -n Hebrew -F -H -s ctl -T
%langpack -l ga -n Irish -F -H -Y -M -A -X
%langpack -l gl -n Galician -F -H -Y -T -X
%langpack -l gu -n Gujarati -F -H -Y -s ctl -T -X
%langpack -l he -n Hebrew -F -H -s ctl -T -X
%langpack -l hi -n Hindi -F -H -Y -s ctl -T -X
%langpack -l hr -n Croatian -F -H -Y -A -T -X
%langpack -l hu -n Hungarian -F -H -Y -M -A -T -X
%{baseinstdir}/share/wordbook/hu_AkH11.dic
%langpack -l id -n Indonesian -F -H -Y -T
%langpack -l id -n Indonesian -F -H -Y -T -X
%langpack -l it -n Italian -F -H -Y -M -A -T -X
%langpack -l ja -n Japanese -F -A -s cjk -T -X
%langpack -l kk -n Kazakh -F -H
%langpack -l kn -n Kannada -F -H -Y
%langpack -l kk -n Kazakh -F -H -X
%langpack -l kn -n Kannada -F -H -Y -X
%langpack -l ko -n Korean -F -H -A -s cjk -T -X
%langpack -l lt -n Lithuanian -F -H -Y -A -T -X
%langpack -l lv -n Latvian -F -H -Y -M -T
%langpack -l mai -n Maithili -F
%langpack -l ml -n Malayalam -F -H -Y
%langpack -l mr -n Marathi -F -H -Y
%langpack -l nb -n Bokmal -F -H -Y -M -T
%langpack -l nl -n Dutch -F -H -Y -M -A -T -X
%langpack -l lv -n Latvian -F -H -Y -M -T -X
%langpack -l mai -n Maithili -F -X
%langpack -l ml -n Malayalam -F -H -Y -X
%langpack -l mr -n Marathi -F -H -Y -X
%langpack -l nb -n Bokmal -F -H -Y -M -T -X
%langpack -l nl -n Dutch -F -H -Y -M -A -T -X -X
%langpack -l nn -n Nynorsk -F -H -Y -M -T
%define langpack_lang Southern Ndebele
%langpack -l nr -n %{langpack_lang} -F -H
%langpack -l nr -n %{langpack_lang} -F -H -X
%define langpack_lang Northern Sotho
%langpack -l nso -n %{langpack_lang} -F -H
%langpack -l or -n Odia -F -H -Y -s ctl
%langpack -l pa -n Punjabi -F -H -Y -s ctl -L pa-IN -g pa_IN
%langpack -l nso -n %{langpack_lang} -F -H -X
%langpack -l or -n Odia -F -H -Y -s ctl -X
%langpack -l pa -n Punjabi -F -H -Y -s ctl -L pa-IN -g pa_IN -X
%langpack -l pl -n Polish -F -H -Y -M -A -T -X
%define langpack_lang Brazilian Portuguese
%langpack -l pt-BR -n %{langpack_lang} -f pt -h pt -y pt -m pt -a pt -p pt_BR -T -X -g pt_BR
%langpack -l pt-PT -n Portuguese -f pt -h pt -y pt -m pt -a pt -p pt_PT -T -L pt -x pt
%langpack -l ro -n Romanian -A -F -H -Y -M -T -X
%langpack -l ru -n Russian -F -H -Y -M -A -T -X
%langpack -l si -n Sinhalese -F -H -S ctl -T
%langpack -l si -n Sinhalese -F -H -S ctl -T -X
%langpack -l sk -n Slovak -F -H -Y -M -A -T -X
%langpack -l sl -n Slovenian -F -H -Y -M -A -T -X
%{baseinstdir}/share/wordbook/sl.dic
#rhbz#452379 clump serbian translations together
%langpack -l sr -n Serbian -F -H -Y -A -i sr-Latn -k sr@latin -j sr_Latn
%langpack -l ss -n Swati -F -H
%langpack -l sr -n Serbian -F -H -Y -A -i sr-Latn -k sr@latin -j sr_Latn -x sr*
%langpack -l ss -n Swati -F -H -X
%define langpack_lang Southern Sotho
%langpack -l st -n %{langpack_lang} -F -H
# note that langpacks-st seems to be missing as of the time of writing, so no -F here
%langpack -l st -n %{langpack_lang} -H -X
%langpack -l sv -n Swedish -F -H -Y -M -A -T -X
%langpack -l ta -n Tamil -F -H -Y -s ctl -T
%langpack -l te -n Telugu -F -H -Y
%langpack -l th -n Thai -F -H -s ctl -c ctlseqcheck_th
%langpack -l tn -n Tswana -F -H
%langpack -l ta -n Tamil -F -H -Y -s ctl -T -X
%langpack -l te -n Telugu -F -H -Y -X
%langpack -l th -n Thai -F -H -s ctl -c ctlseqcheck_th -X
%langpack -l tn -n Tswana -F -H -X
%langpack -l tr -n Turkish -F -A -T -X
%langpack -l ts -n Tsonga -F -H
%langpack -l uk -n Ukrainian -F -H -Y -M -T
%langpack -l ve -n Venda -F -H
%langpack -l xh -n Xhosa -F -H
%langpack -l ts -n Tsonga -F -H -X
%langpack -l uk -n Ukrainian -F -H -Y -M -T -X
%langpack -l ve -n Venda -F -H -X
%langpack -l xh -n Xhosa -F -H -X
%define langpack_lang Simplified Chinese
%langpack -l zh-Hans -n %{langpack_lang} -f zh-cn -a zh -p zh_CN -s cjk -T -L zh-CN -x zh-CN -g zh_CN
%define langpack_lang Traditional Chinese
%langpack -l zh-Hant -n %{langpack_lang} -f zh-tw -a zh -p zh_TW -s cjk -T -L zh-TW -x zh-TW -g zh_TW
%langpack -l zu -n Zulu -F -H -Y
%langpack -l zu -n Zulu -F -H -Y -X
%undefine langpack_lang
%endif
@ -998,6 +1018,8 @@ sed -i -e /CppunitTest_sw_ooxmlexport10/d sw/Module_sw.mk
sed -i -e /CppunitTest_sw_uiwriter/d sw/Module_sw.mk
sed -i -e /CppunitTest_sc_subsequent_filters_test/d sc/Module_sc.mk
%endif
sed -i -e /CppunitTest_sal_osl/d sal/Module_sal.mk
git commit -q -a -m 'temporarily disable failing tests'
# Seeing .git dir makes some of the build tools change their behavior.
@ -1042,7 +1064,7 @@ SMP_MFLAGS=%{?_smp_mflags}
SMP_MFLAGS=$[${SMP_MFLAGS/-j/}]
%if 0%{?flatpak}
%define flatpakoptions --with-boost-libdir=%{_libdir} --with-jfreereport-jar=/app/share/java/flow-engine.jar --with-libbase-jar=/app/share/java/libbase.jar --with-libfonts-jar=/app/share/java/libfonts.jar --with-libformula-jar=/app/share/java/libformula.jar --with-liblayout-jar=/app/share/java/liblayout.jar --with-libloader-jar=/app/share/java/libloader.jar --with-librepository-jar=/app/share/java/librepository.jar --with-libserializer-jar=/app/share/java/libserializer.jar --with-libxml-jar=/app/share/java/libxml.jar FIREBIRDCONFIG=%{_libdir}/fb_config QT4INC=%{_includedir}
%define flatpakoptions --with-boost-libdir=%{_libdir} --with-beanshell-jar=/app/share/java/bsh.jar --with-commons-logging-jar=/app/share/java/commons-logging.jar --with-external-dict-dir=/app/share/myspell --with-external-hyph-dir=/app/share/hyphen --with-external-thes-dir=/app/share/mythes --with-flute-jar=/app/share/java/flute.jar --with-jdk-home=/app/lib/jvm/java-1.8.0-openjdk --with-jfreereport-jar=/app/share/java/flow-engine.jar --with-libbase-jar=/app/share/java/libbase.jar --with-libfonts-jar=/app/share/java/libfonts.jar --with-libformula-jar=/app/share/java/libformula.jar --with-liblayout-jar=/app/share/java/liblayout.jar --with-libloader-jar=/app/share/java/libloader.jar --with-librepository-jar=/app/share/java/librepository.jar --with-libserializer-jar=/app/share/java/libserializer.jar --with-libxml-jar=/app/share/java/libxml.jar --with-sac-jar=/app/share/java/sac.jar FIREBIRDCONFIG=%{_libdir}/fb_config QT4INC=%{_includedir}
%endif
# TODO: enable coinmp?
@ -1057,8 +1079,7 @@ touch autogen.lastrun
--disable-openssl \
--disable-firebird-sdbc \
--disable-pdfium \
--disable-systray \
--disable-gtk \
--disable-qrcodegen \
--enable-dconf \
--enable-evolution2 \
--enable-ext-nlpsolver \
@ -1105,7 +1126,7 @@ pushd $WORKDIR/CustomTarget/sysui/share/libreoffice
popd
mkdir $WORKDIR/os-integration
cp -pr $WORKDIR/CustomTarget/sysui/share/output/usr/share/* $WORKDIR/os-integration
cp -pr $WORKDIR/CustomTarget/sysui/share/output/girepository-1.0/LOKDocView-%{girapiversion}.* $WORKDIR/os-integration
cp -pr $WORKDIR/CustomTarget/sysui/share/libreoffice/LOKDocView-%{girapiversion}.* $WORKDIR/os-integration
%if %{with smallbuild}
# remove the biggest offenders
@ -1314,8 +1335,8 @@ for file in *.desktop; do
-e "s/$PRODUCTVERSIONSHORT//g" \
$file
done
# rhbz#156677 / rhbz#186515 do not show math and startcenter
sed -i -e /NoDisplay/s/false/true/ math.desktop startcenter.desktop
# rhbz#186515 do not show startcenter
sed -i -e /NoDisplay/s/false/true/ startcenter.desktop
# relocate the .desktop and icon files
install -m 0755 -d %{buildroot}%{_datadir}/applications
for app in base calc draw impress math startcenter writer xsltfilter; do
@ -1324,6 +1345,13 @@ for app in base calc draw impress math startcenter writer xsltfilter; do
install -m 0644 -p $app.desktop %{buildroot}%{_datadir}/applications/libreoffice-$app.desktop
done
popd
%if 0%{?flatpak}
# Transform the libreoffice-*.desktop files into
# org.libreoffice.LibreOffice.*.desktop ones:
solenv/bin/assemble-flatpak-desktop.sh %{buildroot}%{_datadir}/applications/ \
%{buildroot}%{_datadir}/applications/
rm %{buildroot}%{_datadir}/applications/libreoffice-*.desktop
%endif
pushd $WORKDIR/os-integration
#get rid of the gnome icons and other unneeded files
@ -1344,7 +1372,7 @@ install -m 0644 -p mime/packages/libreoffice$PRODUCTVERSION.xml %{buildroot}%{_d
%if 0%{?fedora}
# restrict abipkgdiff to shared objects that actually have a stable ABI
for pkg in core base officebean ogltrans pdfimport calc writer impress math graphicfilter postgresql ure pyuno x11 gtk3 kde5 libreofficekit; do
for pkg in core base officebean ogltrans pdfimport calc writer impress graphicfilter postgresql ure pyuno x11 gtk3 kde5 libreofficekit; do
cat > %{buildroot}%{baseinstdir}/program/${pkg}.abignore << _EOF
[suppress_file]
file_name_not_regexp=.*\.so\.[0-9]+
@ -1356,7 +1384,7 @@ done
install -m 0755 -d %{buildroot}%{_libdir}/girepository-1.0
install -m 0644 -p LOKDocView-%{girapiversion}.typelib %{buildroot}%{_libdir}/girepository-1.0/LOKDocView-%{girapiversion}.typelib
install -m 0755 -d %{buildroot}%{_libdir}/gir-1.0
install -m 0644 -p gir-1.0/LOKDocView-%{girapiversion}.gir %{buildroot}%{_libdir}/gir-1.0/LOKDocView-%{girapiversion}.gir
install -m 0644 -p LOKDocView-%{girapiversion}.gir %{buildroot}%{_libdir}/gir-1.0/LOKDocView-%{girapiversion}.gir
mv %{buildroot}%{baseinstdir}/program/liblibreofficekitgtk.so %{buildroot}%{_libdir}
popd
@ -1395,6 +1423,19 @@ install -m 0644 -p %{SOURCE46} %{buildroot}%{_datadir}/icons/hicolor/symbolic/ap
install -m 0644 -p %{SOURCE47} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
install -m 0644 -p %{SOURCE48} %{buildroot}%{_datadir}/icons/hicolor/symbolic/apps
%if 0%{?flatpak}
# Duplicate icons/*/*/apps/libreoffice-* as
# icons/*/*/apps/org.libreoffice.LibreOffice.* (so they end up "with both their
# original libreoffice-* name as well as the org.libreoffice name needed by
# Flatpak, which fixes the window icons", see <https://github.com/flathub/
# org.libreoffice.LibreOffice/commit/945f6caad87658b1df1e8918bd5f64939058ab7f>
# "clean up desktop integration"):
for i in %{buildroot}%{_datadir}/icons/*/*/apps/libreoffice-*; do
cp -a "$i" \
"$(dirname "$i")"/org.libreoffice.LibreOffice."${i##*/apps/libreoffice-}"
done
%endif
# install man pages
install -m 0755 -d %{buildroot}%{_mandir}/man1
install -m 0644 -p sysui/desktop/man/*.1 %{buildroot}%{_mandir}/man1
@ -1423,6 +1464,26 @@ appstream-util replace-screenshots %{buildroot}%{_datadir}/metainfo/libreoffice-
appstream-util replace-screenshots %{buildroot}%{_datadir}/metainfo/libreoffice-impress.appdata.xml \
https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-impress/a.png
%endif
%if 0%{?flatpak}
# Assemble the libreoffice-*.appdata.xml files into a single
# org.libreoffice.LibreOffice.appdata.xml; first create the single file:
solenv/bin/assemble-flatpak-appdata-step1.sh \
%{buildroot}%{_datadir}/metainfo/ 0
%if 0%{?fedora}
# ...then update the screenshots in the single file (see above):
appstream-util replace-screenshots \
%{buildroot}%{_datadir}/metainfo/org.libreoffice.LibreOffice.appdata.xml \
https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-writer/a.png \
https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-writer/b.png \
https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-calc/a.png \
https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-draw/a.png \
https://raw.githubusercontent.com/hughsie/fedora-appstream/master/screenshots-extra/libreoffice-impress/a.png
%endif
# ...then append the original files to the single file:
solenv/bin/assemble-flatpak-appdata-step2.sh \
%{buildroot}%{_datadir}/metainfo/ %{buildroot}%{_datadir}/metainfo/
rm %{buildroot}%{_datadir}/metainfo/libreoffice-*.appdata.xml
%endif
# rhbz#1247399 - move stable API jars to noarch java location
install -m 0755 -d %{buildroot}%{_javadir}/%{name}
@ -1437,8 +1498,8 @@ for jar in %{buildroot}%{baseinstdir}/program/classes/*.jar; do
done
%check
%ifnarch ppc64 s390x aarch64
# make
%ifnarch ppc64 s390x aarch64 armv7hl
make
# we don't need this anymore
rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%endif
@ -1503,7 +1564,7 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/program/libdbahsqllo.so
%{baseinstdir}/program/libdbaselo.so
%{baseinstdir}/program/libdbaxmllo.so
%{baseinstdir}/program/libdbmmlo.so
#{baseinstdir}/program/libdbmmlo.so
%{baseinstdir}/program/libdbpool2.so
%{baseinstdir}/program/libdbtoolslo.so
%{baseinstdir}/program/libdbulo.so
@ -1609,6 +1670,8 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/program/services/services.rdb
%{baseinstdir}/program/libsimplecanvaslo.so
%{baseinstdir}/program/libslideshowlo.so
%{baseinstdir}/program/libsmlo.so
%{baseinstdir}/program/libsmdlo.so
%{baseinstdir}/program/libsofficeapp.so
%{baseinstdir}/program/libstringresourcelo.so
%{baseinstdir}/program/libsysshlo.so
@ -1638,6 +1701,7 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%dir %{baseinstdir}/share/config
%{baseinstdir}/share/config/images_breeze.zip
%{baseinstdir}/share/config/images_breeze_dark.zip
%{baseinstdir}/share/config/images_breeze_dark_svg.zip
%{baseinstdir}/share/config/images_colibre.zip
%{baseinstdir}/share/config/images_elementary.zip
%{baseinstdir}/share/config/images_helpimg.zip
@ -1645,6 +1709,7 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/share/config/images_karasa_jaga_svg.zip
%{baseinstdir}/share/config/images_sifr.zip
%{baseinstdir}/share/config/images_sifr_dark.zip
%{baseinstdir}/share/config/images_sifr_dark_svg.zip
%{baseinstdir}/share/config/images_sifr_svg.zip
%{baseinstdir}/share/config/images_tango.zip
%{baseinstdir}/share/config/images_breeze_svg.zip
@ -1669,9 +1734,11 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%config %{baseinstdir}/share/psprint/psprint.conf
%{baseinstdir}/share/psprint/driver
%dir %{baseinstdir}/share/registry
%{baseinstdir}/share/registry/draw.xcd
%{baseinstdir}/share/registry/gnome.xcd
%{baseinstdir}/share/registry/lingucomponent.xcd
%{baseinstdir}/share/registry/main.xcd
%{baseinstdir}/share/registry/math.xcd
%{baseinstdir}/share/registry/oo-ad-ldap.xcd.sample
%{baseinstdir}/share/registry/oo-ldap.xcd.sample
%dir %{baseinstdir}/share/registry/res
@ -1749,7 +1816,12 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/share/filter/vml-shape-types
%{baseinstdir}/share/xdg/
%{baseinstdir}/program/redirectrc
%if 0%{?flatpak}
%{_datadir}/metainfo/org.libreoffice.LibreOffice.appdata.xml
%{_datadir}/applications/org.libreoffice.LibreOffice.desktop
%else
%{_datadir}/applications/libreoffice-startcenter.desktop
%endif
#launchers
%{_bindir}/libreoffice
%{_bindir}/openoffice.org
@ -1767,6 +1839,7 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/program/classes/reportbuilder.jar
%{baseinstdir}/program/classes/reportbuilderwizard.jar
%{baseinstdir}/program/classes/sdbc_hsqldb.jar
%{baseinstdir}/program/access2base.py
%if 0%{?fedora}
%{baseinstdir}/program/base.abignore
%endif
@ -1779,8 +1852,12 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/share/registry/base.xcd
%{baseinstdir}/share/registry/reportbuilder.xcd
%{baseinstdir}/program/sbase
%if 0%{?flatpak}
%{_datadir}/applications/org.libreoffice.LibreOffice.base.desktop
%else
%{_datadir}/metainfo/libreoffice-base.appdata.xml
%{_datadir}/applications/libreoffice-base.desktop
%endif
%{_bindir}/oobase
%{_mandir}/man1/oobase.1*
@ -1875,17 +1952,24 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/share/registry/calc.xcd
%{baseinstdir}/program/pagein-calc
%{baseinstdir}/program/scalc
%if 0%{?flatpak}
%{_datadir}/applications/org.libreoffice.LibreOffice.calc.desktop
%else
%{_datadir}/metainfo/libreoffice-calc.appdata.xml
%{_datadir}/applications/libreoffice-calc.desktop
%endif
%{_bindir}/oocalc
%{_mandir}/man1/oocalc.1*
%files draw
%{baseinstdir}/share/registry/draw.xcd
%{baseinstdir}/program/pagein-draw
%{baseinstdir}/program/sdraw
%if 0%{?flatpak}
%{_datadir}/applications/org.libreoffice.LibreOffice.draw.desktop
%else
%{_datadir}/metainfo/libreoffice-draw.appdata.xml
%{_datadir}/applications/libreoffice-draw.desktop
%endif
%{_bindir}/oodraw
%{_mandir}/man1/oodraw.1*
@ -1909,8 +1993,12 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/share/registry/writer.xcd
%{baseinstdir}/program/pagein-writer
%{baseinstdir}/program/swriter
%if 0%{?flatpak}
%{_datadir}/applications/org.libreoffice.LibreOffice.writer.desktop
%else
%{_datadir}/metainfo/libreoffice-writer.appdata.xml
%{_datadir}/applications/libreoffice-writer.desktop
%endif
%{_bindir}/oowriter
%{_mandir}/man1/oowriter.1*
@ -1929,20 +2017,22 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%{baseinstdir}/share/registry/impress.xcd
%{baseinstdir}/program/pagein-impress
%{baseinstdir}/program/simpress
%if 0%{?flatpak}
%{_datadir}/applications/org.libreoffice.LibreOffice.impress.desktop
%else
%{_datadir}/metainfo/libreoffice-impress.appdata.xml
%{_datadir}/applications/libreoffice-impress.desktop
%endif
%{_bindir}/ooimpress
%{_mandir}/man1/ooimpress.1*
%files math
%if 0%{?fedora}
%{baseinstdir}/program/math.abignore
%endif
%{baseinstdir}/program/libsmlo.so
%{baseinstdir}/program/libsmdlo.so
%{baseinstdir}/share/registry/math.xcd
%{baseinstdir}/program/smath
%if 0%{?flatpak}
%{_datadir}/applications/org.libreoffice.LibreOffice.math.desktop
%else
%{_datadir}/applications/libreoffice-math.desktop
%endif
%{_bindir}/oomath
%{_mandir}/man1/oomath.1*
@ -1959,7 +2049,11 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%files xsltfilter
%{baseinstdir}/share/xslt
%{baseinstdir}/share/registry/xsltfilter.xcd
%if 0%{?flatpak}
%{_datadir}/applications/org.libreoffice.LibreOffice.xsltfilter.desktop
%else
%{_datadir}/applications/libreoffice-xsltfilter.desktop
%endif
%files postgresql
%if 0%{?fedora}
@ -2082,6 +2176,10 @@ rm -f %{buildroot}%{baseinstdir}/program/classes/smoketest.jar
%files data
%{_datadir}/icons/hicolor/*/*/libreoffice*
%{_datadir}/icons/locolor/*/*/libreoffice*
%if 0%{?flatpak}
%{_datadir}/icons/hicolor/*/*/org.libreoffice.LibreOffice.*
%{_datadir}/icons/locolor/*/*/org.libreoffice.LibreOffice.*
%endif
%{_datadir}/mime-info/libreoffice.*
%{_datadir}/mime/packages/libreoffice.xml
# TODO: rename -data to -core-common?
@ -2130,8 +2228,8 @@ done
%if 0%{?fedora}
%{baseinstdir}/program/kde5.abignore
%endif
%{baseinstdir}/program/libkde5be1lo.so
%{baseinstdir}/program/libvclplug_kde5lo.so
%{baseinstdir}/program/libkf5be1lo.so
%{baseinstdir}/program/libvclplug_kf5lo.so
%{baseinstdir}/program/libvclplug_qt5lo.so
%files kf5
@ -2153,6 +2251,24 @@ done
%{_includedir}/LibreOfficeKit
%changelog
* Wed Feb 03 2021 Caolán McNamara <caolanm@redhat.com> - 1:6.4.7.2-5
- Resolves: rhbz#1924619 bad insertion of emoji
* Mon Nov 09 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.7.2-4
- Resolves: rhbz#1889801 rebuild for poppler
* Thu Oct 29 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.7.2-3
- Related: rhbz#1874234 fix upgrade dependency problems
* Wed Oct 28 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.7.2-2
- Related: rhbz#1874234 hang in check
* Wed Oct 21 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.4.7.2-1
- Resolves: rhbz#1874234 latest stable release
* Wed Jul 08 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.3.6.2-3
- Obsoletes any libreoffice-gtk2-debuginfo along with libreoffice-gtk2
* Tue Jun 02 2020 Caolán McNamara <caolanm@redhat.com> - 1:6.3.6.2-2
- Resolves: rhbz#1841907 always produce utf-8 from gettext