diff --git a/.gitignore b/.gitignore index a8709e2..ae90c3b 100644 --- a/.gitignore +++ b/.gitignore @@ -22,3 +22,6 @@ /libreoffice-help-5.2.3.3.tar.xz /libreoffice-translations-5.2.3.3.tar.xz /libgltf-0.0.2.tar.bz2 +/libreoffice-5.2.4.1.tar.xz +/libreoffice-help-5.2.4.1.tar.xz +/libreoffice-translations-5.2.4.1.tar.xz diff --git a/0001-Related-rhbz-1351369-gtk3-clipboards-have-to-live-to.patch b/0001-Related-rhbz-1351369-gtk3-clipboards-have-to-live-to.patch deleted file mode 100644 index 26f9afd..0000000 --- a/0001-Related-rhbz-1351369-gtk3-clipboards-have-to-live-to.patch +++ /dev/null @@ -1,93 +0,0 @@ -From 962e0bb4b31265b046fe4fb57d3087e20f5fe4ef Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Tue, 12 Jul 2016 20:31:52 +0100 -Subject: [PATCH] Related: rhbz#1351369 gtk3 clipboards have to live to end - once created - -like the other platforms do - -Change-Id: I31340254573d13dc808d1e3038e3a36ae97f6c22 ---- - vcl/inc/unx/gtk/gtkinst.hxx | 3 +++ - vcl/unx/gtk3/gtk3gtkinst.cxx | 22 +++++++++++++++++----- - 2 files changed, 20 insertions(+), 5 deletions(-) - -diff --git a/vcl/inc/unx/gtk/gtkinst.hxx b/vcl/inc/unx/gtk/gtkinst.hxx -index 6212d5d..01e8ca6 100644 ---- a/vcl/inc/unx/gtk/gtkinst.hxx -+++ b/vcl/inc/unx/gtk/gtkinst.hxx -@@ -246,6 +246,9 @@ public: - - private: - std::vector m_aTimers; -+#if GTK_CHECK_VERSION(3,0,0) -+ std::unordered_map< GdkAtom, css::uno::Reference > m_aClipboards; -+#endif - bool IsTimerExpired(); - bool bNeedsInit; - cairo_font_options_t* m_pLastCairoFontOptions; -diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx -index b5db25d..3cc4046 100644 ---- a/vcl/unx/gtk3/gtk3gtkinst.cxx -+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx -@@ -536,7 +536,11 @@ VclGtkClipboard::~VclGtkClipboard() - { - GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection); - g_signal_handler_disconnect(clipboard, m_nOwnerChangedSignalId); -- ClipboardClear(nullptr); -+ if (!m_aGtkTargets.empty()) -+ { -+ gtk_clipboard_clear(clipboard); -+ } -+ assert(m_aGtkTargets.empty()); - } - - std::vector VclToGtkHelper::FormatsToGtk(const css::uno::Sequence &rFormats) -@@ -587,7 +591,6 @@ void VclGtkClipboard::setContents( - { - osl::ClearableMutexGuard aGuard( m_aMutex ); - Reference< datatransfer::clipboard::XClipboardOwner > xOldOwner( m_aOwner ); -- bool bOwnerChange = (xOldOwner.is() && xOldOwner != xClipboardOwner); - Reference< datatransfer::XTransferable > xOldContents( m_aContents ); - m_aContents = xTrans; - m_aOwner = xClipboardOwner; -@@ -596,8 +599,10 @@ void VclGtkClipboard::setContents( - datatransfer::clipboard::ClipboardEvent aEv; - - GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection); -- if (bOwnerChange) -+ if (!m_aGtkTargets.empty()) -+ { - gtk_clipboard_clear(clipboard); -+ } - assert(m_aGtkTargets.empty()); - if (m_aContents.is()) - { -@@ -624,7 +629,7 @@ void VclGtkClipboard::setContents( - - aGuard.clear(); - -- if (bOwnerChange) -+ if (xOldOwner.is() && xOldOwner != xClipboardOwner) - xOldOwner->lostOwnership( this, xOldContents ); - for( std::list< Reference< datatransfer::clipboard::XClipboardListener > >::iterator it = - aListeners.begin(); it != aListeners.end() ; ++it ) -@@ -672,7 +677,14 @@ Reference< XInterface > GtkInstance::CreateClipboard(const Sequence< Any >& argu - - GdkAtom nSelection = (sel == "CLIPBOARD") ? GDK_SELECTION_CLIPBOARD : GDK_SELECTION_PRIMARY; - -- return Reference< XInterface >( static_cast(new VclGtkClipboard(nSelection)) ); -+ auto it = m_aClipboards.find(nSelection); -+ if (it != m_aClipboards.end()) -+ return it->second; -+ -+ Reference xClipboard(static_cast(new VclGtkClipboard(nSelection))); -+ m_aClipboards[nSelection] = xClipboard; -+ -+ return xClipboard; - } - - GtkDropTarget::GtkDropTarget() --- -2.7.4 - diff --git a/0001-Related-rhbz-1362451-avoid-recursive-ownerchanged-ha.patch b/0001-Related-rhbz-1362451-avoid-recursive-ownerchanged-ha.patch deleted file mode 100644 index 0fd195d..0000000 --- a/0001-Related-rhbz-1362451-avoid-recursive-ownerchanged-ha.patch +++ /dev/null @@ -1,115 +0,0 @@ -From a0e049ba62adc036f42973807d528ce27c8647cf Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Thu, 1 Sep 2016 15:50:20 +0100 -Subject: [PATCH] Related: rhbz#1362451 avoid recursive ownerchanged handling - during ownerchange - -Change-Id: Id9c12b7ce6458348890d7c7ff7fdb2cd37c4601c ---- - vcl/unx/gtk3/gtk3gtkinst.cxx | 55 ++++++++++++++++++++++++++------------------ - 1 file changed, 32 insertions(+), 23 deletions(-) - -diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx -index 10c5c7f..7202b46 100644 ---- a/vcl/unx/gtk3/gtk3gtkinst.cxx -+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx -@@ -364,6 +364,29 @@ namespace - } - } - -+namespace -+{ -+ void ClipboardGetFunc(GtkClipboard *clipboard, GtkSelectionData *selection_data, -+ guint info, -+ gpointer user_data_or_owner) -+ { -+ VclGtkClipboard* pThis = static_cast(user_data_or_owner); -+ pThis->ClipboardGet(clipboard, selection_data, info); -+ } -+ -+ void ClipboardClearFunc(GtkClipboard *clipboard, gpointer user_data_or_owner) -+ { -+ VclGtkClipboard* pThis = static_cast(user_data_or_owner); -+ pThis->ClipboardClear(clipboard); -+ } -+ -+ void handle_owner_change(GtkClipboard *clipboard, GdkEvent *event, gpointer user_data) -+ { -+ VclGtkClipboard* pThis = static_cast(user_data); -+ pThis->OwnerPossiblyChanged(clipboard, event); -+ } -+} -+ - void VclGtkClipboard::OwnerPossiblyChanged(GtkClipboard* clipboard, GdkEvent* /*event*/) - { - if (!m_aContents.is()) -@@ -376,6 +399,10 @@ void VclGtkClipboard::OwnerPossiblyChanged(GtkClipboard* clipboard, GdkEvent* /* - //our pid, in which case it's us. - bool bSelf = false; - -+ //disconnect and reconnect after gtk_clipboard_wait_for_targets to -+ //avoid possible recursion -+ g_signal_handler_disconnect(clipboard, m_nOwnerChangedSignalId); -+ - OString sTunnel = "application/x-libreoffice-internal-id-" + getPID(); - GdkAtom *targets; - gint n_targets; -@@ -394,6 +421,9 @@ void VclGtkClipboard::OwnerPossiblyChanged(GtkClipboard* clipboard, GdkEvent* /* - g_free(targets); - } - -+ m_nOwnerChangedSignalId = g_signal_connect(clipboard, "owner-change", -+ G_CALLBACK(handle_owner_change), this); -+ - if (!bSelf) - { - //null out m_aContents to return control to the system-one which -@@ -486,29 +516,6 @@ void VclToGtkHelper::setSelectionData(const Reference(user_data_or_owner); -- pThis->ClipboardGet(clipboard, selection_data, info); -- } -- -- void ClipboardClearFunc(GtkClipboard *clipboard, gpointer user_data_or_owner) -- { -- VclGtkClipboard* pThis = reinterpret_cast(user_data_or_owner); -- pThis->ClipboardClear(clipboard); -- } -- -- void handle_owner_change(GtkClipboard *clipboard, GdkEvent *event, gpointer user_data) -- { -- VclGtkClipboard* pThis = static_cast(user_data); -- pThis->OwnerPossiblyChanged(clipboard, event); -- } --} -- - VclGtkClipboard::VclGtkClipboard(GdkAtom nSelection) - : cppu::WeakComponentImplHelper -@@ -539,6 +546,7 @@ VclGtkClipboard::~VclGtkClipboard() - if (!m_aGtkTargets.empty()) - { - gtk_clipboard_clear(clipboard); -+ ClipboardClear(clipboard); - } - assert(m_aGtkTargets.empty()); - } -@@ -602,6 +610,7 @@ void VclGtkClipboard::setContents( - if (!m_aGtkTargets.empty()) - { - gtk_clipboard_clear(clipboard); -+ ClipboardClear(clipboard); - } - assert(m_aGtkTargets.empty()); - if (m_aContents.is()) --- -2.7.4 - diff --git a/0001-Resolves-rhbz-1326304-cannot-detect-loss-of-wayland-.patch b/0001-Resolves-rhbz-1326304-cannot-detect-loss-of-wayland-.patch deleted file mode 100644 index eefb5f4..0000000 --- a/0001-Resolves-rhbz-1326304-cannot-detect-loss-of-wayland-.patch +++ /dev/null @@ -1,262 +0,0 @@ -From 3af38da4f0cb6b6341efad280c73a7733de42bea Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Fri, 24 Jun 2016 15:06:36 +0100 -Subject: [PATCH] Resolves: rhbz#1326304 cannot detect loss of wayland - clipboard ownership -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -gtk_clipboard_get_owner always returns what you set with -gtk_clipboard_set_with_owner and that doesn't change if some other -application takes over the clipboard - -The "owner-change" signal doesn't contain any useful data under wayland, -and doesn't fire when you'd expect either, just when the app becomes -active or gets focus or something like that. So you get it when you -do have the clipboard and when you don't, so that's no use either to -detect loss of clipboard ownership - -So, forget about clipboard ownership, and always take the data to -be pasted from the system clipboard, so when we are pasting from ourselves -its "paste"->m_aSystemContents->gtk->"copy"->m_aOurContents - -Undoubtedly something else will break now - -Change-Id: I32f2e1a2cc3310687f61a094fdfa940fa0cfcc39 - -Resolves: rhbz#1350478 identify that we own the selection with a unique target - -so we can tell that we own the selection in the absence of reliable selection -ownership notifications under wayland - -Note that gnome#768177 means that requests for CLIPBOARD targets after -requests for PRIMARY targets can time out, which is why my attempts at -doing this before giving up with - -commit 88cd9dd591d7921e5bce33c170b457ae5aa871bb -Author: Caolán McNamara -Date: Fri Jun 24 15:06:36 2016 +0100 - - Resolves: rhbz#1326304 cannot detect loss of wayland clipboard ownership - -didn't work. - -Change-Id: I1154899e478b6e0cc6f70aa0c90c26663299072c -(cherry picked from commit 88f7aae022bedd61588424a11bbc033217ba4e43) ---- - vcl/unx/gtk3/gtk3gtkinst.cxx | 124 ++++++++++++++++++++++--------------------- - 1 file changed, 63 insertions(+), 61 deletions(-) - -diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx -index ed64ded..8b01166 100644 ---- a/vcl/unx/gtk3/gtk3gtkinst.cxx -+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx -@@ -238,47 +238,6 @@ public: - } - }; - --//We want to use gtk_clipboard_get_owner own owner-change to distinguish between --//us gaining the clipboard ownership vs losing it. To do that we need to use --//gtk_clipboard_set_with_owner and to do that we need a GObject, so define --//one here for that purpose and just give it a VclGtkClipboard* member --class VclGtkClipboard; -- --struct ClipboardOwner --{ -- GObject parent_instance; -- -- /* instance members */ -- VclGtkClipboard* m_pThis; --}; -- --struct ClipboardOwnerClass --{ -- GObjectClass parent_class; -- -- /* class members */ --}; -- --#define CLIPBOARD_OWNER_OBJECT (clipboard_owner_get_type ()) --#define CLIPBOARD_OWNER(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), CLIPBOARD_OWNER_OBJECT, ClipboardOwner)) -- --#ifdef __GNUC__ --#pragma GCC diagnostic push --#pragma GCC diagnostic ignored "-Wunused-function" --#endif --G_DEFINE_TYPE(ClipboardOwner, clipboard_owner, G_TYPE_OBJECT); --#ifdef __GNUC__ --#pragma GCC diagnostic pop --#endif -- --static void clipboard_owner_class_init (ClipboardOwnerClass *) --{ --} -- --static void clipboard_owner_init(ClipboardOwner *) --{ --} -- - class VclGtkClipboard : - public cppu::WeakComponentImplHelper< - datatransfer::clipboard::XSystemClipboard, -@@ -287,7 +246,6 @@ class VclGtkClipboard : - { - GdkAtom m_nSelection; - osl::Mutex m_aMutex; -- ClipboardOwner* m_pOwner; - gulong m_nOwnerChangedSignalId; - Reference m_aContents; - Reference m_aOwner; -@@ -349,7 +307,7 @@ public: - - void ClipboardGet(GtkClipboard *clipboard, GtkSelectionData *selection_data, guint info); - void ClipboardClear(GtkClipboard *clipboard); -- void OwnerChanged(GtkClipboard *clipboard, GdkEvent *event); -+ void OwnerPossiblyChanged(GtkClipboard *clipboard, GdkEvent *event); - }; - - OUString VclGtkClipboard::getImplementationName() throw( RuntimeException, std::exception ) -@@ -370,13 +328,13 @@ sal_Bool VclGtkClipboard::supportsService( const OUString& ServiceName ) throw( - - Reference< css::datatransfer::XTransferable > VclGtkClipboard::getContents() throw( RuntimeException, std::exception ) - { -- if (G_OBJECT(m_pOwner) != gtk_clipboard_get_owner(gtk_clipboard_get(m_nSelection)) && -- !m_aContents.is()) -+ if (!m_aContents.is()) - { - //tdf#93887 This is the system clipboard/selection. We fetch it when we are not - //the owner of the clipboard and have not already fetched it. - m_aContents = new GtkClipboardTransferable(m_nSelection); - } -+ - return m_aContents; - } - -@@ -388,9 +346,55 @@ void VclGtkClipboard::ClipboardGet(GtkClipboard* /*clipboard*/, GtkSelectionData - m_aConversionHelper.setSelectionData(m_aContents, selection_data, info); - } - --void VclGtkClipboard::OwnerChanged(GtkClipboard* clipboard, GdkEvent* /*event*/) -+namespace -+{ -+ const OString& getPID() -+ { -+ static OString sPID; -+ if (!sPID.getLength()) -+ { -+ oslProcessIdentifier aProcessId = 0; -+ oslProcessInfo info; -+ info.Size = sizeof (oslProcessInfo); -+ if (osl_getProcessInfo(nullptr, osl_Process_IDENTIFIER, &info) == osl_Process_E_None) -+ aProcessId = info.Ident; -+ sPID = OString::number(aProcessId); -+ } -+ return sPID; -+ } -+} -+ -+void VclGtkClipboard::OwnerPossiblyChanged(GtkClipboard* clipboard, GdkEvent* /*event*/) - { -- if (G_OBJECT(m_pOwner) != gtk_clipboard_get_owner(clipboard)) -+ if (!m_aContents.is()) -+ return; -+ -+ //if gdk_display_supports_selection_notification is not supported, e.g. like -+ //right now under wayland, then you only get owner-changed nofications at -+ //opportune times when the selection might have changed. So here -+ //we see if the selection supports a dummy selection type identifying -+ //our pid, in which case it's us. -+ bool bSelf = false; -+ -+ OString sTunnel = "application/x-libreoffice-internal-id-" + getPID(); -+ GdkAtom *targets; -+ gint n_targets; -+ if (gtk_clipboard_wait_for_targets(clipboard, &targets, &n_targets)) -+ { -+ for (gint i = 0; i < n_targets && !bSelf; ++i) -+ { -+ gchar* pName = gdk_atom_name(targets[i]); -+ if (strcmp(pName, sTunnel.getStr()) == 0) -+ { -+ bSelf = true; -+ } -+ g_free(pName); -+ } -+ -+ g_free(targets); -+ } -+ -+ if (!bSelf) - { - //null out m_aContents to return control to the system-one which - //will be retrieved if getContents is called again -@@ -488,20 +492,20 @@ namespace - guint info, - gpointer user_data_or_owner) - { -- VclGtkClipboard* pThis = CLIPBOARD_OWNER(user_data_or_owner)->m_pThis; -+ VclGtkClipboard* pThis = reinterpret_cast(user_data_or_owner); - pThis->ClipboardGet(clipboard, selection_data, info); - } - - void ClipboardClearFunc(GtkClipboard *clipboard, gpointer user_data_or_owner) - { -- VclGtkClipboard* pThis = CLIPBOARD_OWNER(user_data_or_owner)->m_pThis; -+ VclGtkClipboard* pThis = reinterpret_cast(user_data_or_owner); - pThis->ClipboardClear(clipboard); - } - - void handle_owner_change(GtkClipboard *clipboard, GdkEvent *event, gpointer user_data) - { - VclGtkClipboard* pThis = static_cast(user_data); -- pThis->OwnerChanged(clipboard, event); -+ pThis->OwnerPossiblyChanged(clipboard, event); - } - } - -@@ -514,8 +518,6 @@ VclGtkClipboard::VclGtkClipboard(GdkAtom nSelection) - GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection); - m_nOwnerChangedSignalId = g_signal_connect(clipboard, "owner-change", - G_CALLBACK(handle_owner_change), this); -- m_pOwner = CLIPBOARD_OWNER(g_object_new(CLIPBOARD_OWNER_OBJECT, nullptr)); -- m_pOwner->m_pThis = this; - } - - void VclGtkClipboard::flushClipboard() -@@ -534,7 +536,6 @@ VclGtkClipboard::~VclGtkClipboard() - { - GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection); - g_signal_handler_disconnect(clipboard, m_nOwnerChangedSignalId); -- g_object_unref(m_pOwner); - ClipboardClear(nullptr); - } - -@@ -599,15 +600,16 @@ void VclGtkClipboard::setContents( - std::vector aGtkTargets(m_aConversionHelper.FormatsToGtk(aFormats)); - if (!aGtkTargets.empty()) - { -- //if there was a previous gtk_clipboard_set_with_data call then -- //ClipboardClearFunc will be called now -+ GtkTargetEntry aEntry; -+ OString sTunnel = "application/x-libreoffice-internal-id-" + getPID(); -+ aEntry.target = g_strdup(sTunnel.getStr()); -+ aEntry.flags = 0; -+ aEntry.info = 0; -+ aGtkTargets.push_back(aEntry); -+ - GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection); -- if(G_OBJECT(m_pOwner) == gtk_clipboard_get_owner(clipboard)) -- gtk_clipboard_clear(clipboard); -- //use with_owner with m_pOwner so we can distinguish in handle_owner_change -- //if we have gained or lost ownership of the clipboard -- gtk_clipboard_set_with_owner(clipboard, aGtkTargets.data(), aGtkTargets.size(), -- ClipboardGetFunc, ClipboardClearFunc, G_OBJECT(m_pOwner)); -+ gtk_clipboard_set_with_data(clipboard, aGtkTargets.data(), aGtkTargets.size(), -+ ClipboardGetFunc, ClipboardClearFunc, this); - gtk_clipboard_set_can_store(clipboard, aGtkTargets.data(), aGtkTargets.size()); - } - --- -2.7.4 - diff --git a/0001-Resolves-rhbz-1352965-gtk3-infinite-clipboard-recurs.patch b/0001-Resolves-rhbz-1352965-gtk3-infinite-clipboard-recurs.patch deleted file mode 100644 index 1c222e2..0000000 --- a/0001-Resolves-rhbz-1352965-gtk3-infinite-clipboard-recurs.patch +++ /dev/null @@ -1,62 +0,0 @@ -From 25477cb518a464fb052e55c2b7c250af606ba42d Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Fri, 8 Jul 2016 14:50:56 +0100 -Subject: [PATCH] Resolves: rhbz#1352965 gtk3 infinite clipboard recursion with - clipit installed - -Change-Id: Ib67afaf532b8409e05fffbf1b8312d664460567d ---- - vcl/unx/gtk3/gtk3gtkinst.cxx | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx -index 8b01166..c92bf43 100644 ---- a/vcl/unx/gtk3/gtk3gtkinst.cxx -+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx -@@ -587,6 +587,7 @@ void VclGtkClipboard::setContents( - { - osl::ClearableMutexGuard aGuard( m_aMutex ); - Reference< datatransfer::clipboard::XClipboardOwner > xOldOwner( m_aOwner ); -+ bool bOwnerChange = (xOldOwner.is() && xOldOwner != xClipboardOwner); - Reference< datatransfer::XTransferable > xOldContents( m_aContents ); - m_aContents = xTrans; - m_aOwner = xClipboardOwner; -@@ -594,6 +595,10 @@ void VclGtkClipboard::setContents( - std::list< Reference< datatransfer::clipboard::XClipboardListener > > aListeners( m_aListeners ); - datatransfer::clipboard::ClipboardEvent aEv; - -+ GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection); -+ if (bOwnerChange) -+ gtk_clipboard_clear(clipboard); -+ assert(m_aGtkTargets.empty()); - if (m_aContents.is()) - { - css::uno::Sequence aFormats = xTrans->getTransferDataFlavors(); -@@ -607,15 +612,11 @@ void VclGtkClipboard::setContents( - aEntry.info = 0; - aGtkTargets.push_back(aEntry); - -- GtkClipboard* clipboard = gtk_clipboard_get(m_nSelection); - gtk_clipboard_set_with_data(clipboard, aGtkTargets.data(), aGtkTargets.size(), - ClipboardGetFunc, ClipboardClearFunc, this); - gtk_clipboard_set_can_store(clipboard, aGtkTargets.data(), aGtkTargets.size()); - } - -- for (auto &a : m_aGtkTargets) -- g_free(a.target); -- - m_aGtkTargets = aGtkTargets; - } - -@@ -623,7 +624,7 @@ void VclGtkClipboard::setContents( - - aGuard.clear(); - -- if( xOldOwner.is() && xOldOwner != xClipboardOwner ) -+ if (bOwnerChange) - xOldOwner->lostOwnership( this, xOldContents ); - for( std::list< Reference< datatransfer::clipboard::XClipboardListener > >::iterator it = - aListeners.begin(); it != aListeners.end() ; ++it ) --- -2.7.4 - diff --git a/0001-Resolves-rhbz-1391418-wayland-toolbars-can-t-be-dock.patch b/0001-Resolves-rhbz-1391418-wayland-toolbars-can-t-be-dock.patch index feb5392..4880327 100644 --- a/0001-Resolves-rhbz-1391418-wayland-toolbars-can-t-be-dock.patch +++ b/0001-Resolves-rhbz-1391418-wayland-toolbars-can-t-be-dock.patch @@ -217,7 +217,7 @@ index 0365c52..091a615 100644 +#endif #include - GtkStyleContext* GtkSalGraphics::mpButtonStyle = nullptr; + GtkStyleContext* GtkSalGraphics::mpWindowStyle = nullptr; @@ -2322,6 +2324,14 @@ void GtkData::initNWF() pSVData->maNWFData.mbNoFocusRectsForFlatButtons = true; pSVData->maNWFData.mbAutoAccel = true; diff --git a/0001-convert-angle-from-degrees-to-radians-for-glm.patch b/0001-convert-angle-from-degrees-to-radians-for-glm.patch deleted file mode 100644 index eedf622..0000000 --- a/0001-convert-angle-from-degrees-to-radians-for-glm.patch +++ /dev/null @@ -1,58 +0,0 @@ -From ce2ad7ebd6c0fa15316c642105a84b1f7a687757 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Mon, 31 Oct 2016 19:51:56 +0100 -Subject: [PATCH] convert angle from degrees to radians for glm - -This makes simple (i.e., not implemented as a shader) OpenGL transitions -work correctly again. - -(cherry picked from commit 7445399af829c48e8c71eed66f132d96fa195c37) - -Change-Id: I773f686089bce3611940743b1a7f5046093886e8 ---- - slideshow/source/engine/OGLTrans/generic/OGLTrans_Operation.cxx | 8 +++++--- - 1 file changed, 5 insertions(+), 3 deletions(-) - -diff --git a/slideshow/source/engine/OGLTrans/generic/OGLTrans_Operation.cxx b/slideshow/source/engine/OGLTrans/generic/OGLTrans_Operation.cxx -index c61209f..97d8902 100644 ---- a/slideshow/source/engine/OGLTrans/generic/OGLTrans_Operation.cxx -+++ b/slideshow/source/engine/OGLTrans/generic/OGLTrans_Operation.cxx -@@ -31,6 +31,8 @@ - #include - #include - -+#include -+ - #include "OGLTrans_Operation.hxx" - - SRotate::SRotate(const glm::vec3& Axis, const glm::vec3& Origin, -@@ -38,7 +40,7 @@ SRotate::SRotate(const glm::vec3& Axis, const glm::vec3& Origin, - Operation(bInter, T0, T1), - axis(Axis), - origin(Origin), -- angle(Angle) -+ angle(basegfx::deg2rad(Angle)) - { - } - -@@ -55,7 +57,7 @@ RotateAndScaleDepthByWidth::RotateAndScaleDepthByWidth(const glm::vec3& Axis, - Operation(bInter, T0, T1), - axis(Axis), - origin(Origin), -- angle(Angle), -+ angle(basegfx::deg2rad(Angle)), - scale(bScale) - { - } -@@ -65,7 +67,7 @@ RotateAndScaleDepthByHeight::RotateAndScaleDepthByHeight(const glm::vec3& Axis, - Operation(bInter, T0, T1), - axis(Axis), - origin(Origin), -- angle(Angle), -+ angle(basegfx::deg2rad(Angle)), - scale(bScale) - { - } --- -2.9.3 - diff --git a/0001-drawing-shapes-aren-t-tracking-style-name-changes-co.patch b/0001-drawing-shapes-aren-t-tracking-style-name-changes-co.patch deleted file mode 100644 index 2fd6796..0000000 --- a/0001-drawing-shapes-aren-t-tracking-style-name-changes-co.patch +++ /dev/null @@ -1,120 +0,0 @@ -From 1c32b2e2f8e15a690b3645651253d85aee4040d1 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Mon, 21 Nov 2016 12:42:09 +0000 -Subject: [PATCH] drawing shapes aren't tracking style name changes correctly -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -in draw, create a box, enter some text, exit and select box -F11 for style navigator, new style, set font to e.g. 88 -apply this style to the box. All ok. - -If you modify the style and changes its font to e.g. bold -the text in the box tracks it as expected. All ok. - -If you modify the style and change its name, the box resets -to something different and there's loads of warnings about -unknown styles. Not ok. - -The style modification fires, but the style name gets overwritten -by the style stuck in a OutlinerParaObject that gets overlaid -over the editengine. - -All the rTextProvider.getTextCount uses that don't iterate over all entries -look dubious to me, but I'll initially fix this one that I have hard evidence -for as broken. - -All this is probably broken since... - -commit 838c0fa8228f4ca656a264f6a5610c337ebf4fef -Author: Rüdiger Timm -Date: Wed Mar 12 08:47:30 2008 +0000 - - INTEGRATION: CWS impresstables2 (1.14.72); FILE MERGED - -Change-Id: Ib0dd2857ed26c49dcfa00aae923e36429a7f7862 ---- - svx/source/sdr/properties/textproperties.cxx | 20 +++++++++----------- - 1 file changed, 9 insertions(+), 11 deletions(-) - -diff --git a/svx/source/sdr/properties/textproperties.cxx b/svx/source/sdr/properties/textproperties.cxx -index de35ec3..09ebfc7 100644 ---- a/svx/source/sdr/properties/textproperties.cxx -+++ b/svx/source/sdr/properties/textproperties.cxx -@@ -82,13 +82,13 @@ namespace sdr - void TextProperties::ItemSetChanged(const SfxItemSet& rSet) - { - SdrTextObj& rObj = static_cast(GetSdrObject()); -- const svx::ITextProvider& rTextProvider(getTextProvider()); -- sal_Int32 nText = rTextProvider.getTextCount(); - - // #i101556# ItemSet has changed -> new version - maVersion++; - -- while( --nText >= 0 ) -+ const svx::ITextProvider& rTextProvider(getTextProvider()); -+ sal_Int32 nText = rTextProvider.getTextCount(); -+ while (nText--) - { - SdrText* pText = rTextProvider.getText( nText ); - -@@ -173,7 +173,7 @@ namespace sdr - - const svx::ITextProvider& rTextProvider(getTextProvider()); - sal_Int32 nCount = rTextProvider.getTextCount(); -- while( nCount-- ) -+ while (nCount--) - { - SdrText* pText = rTextProvider.getText( nCount ); - OutlinerParaObject* pParaObj = pText->GetOutlinerParaObject(); -@@ -246,8 +246,7 @@ namespace sdr - - const svx::ITextProvider& rTextProvider(getTextProvider()); - sal_Int32 nText = rTextProvider.getTextCount(); -- -- while( --nText >= 0 ) -+ while (nText--) - { - SdrText* pText = rTextProvider.getText( nText ); - -@@ -408,8 +407,7 @@ namespace sdr - Outliner* pOutliner = SdrMakeOutliner(OutlinerMode::OutlineObject, *rObj.GetModel()); - const svx::ITextProvider& rTextProvider(getTextProvider()); - sal_Int32 nText = rTextProvider.getTextCount(); -- -- while( --nText >= 0 ) -+ while (nText--) - { - SdrText* pText = rTextProvider.getText( nText ); - -@@ -564,7 +562,7 @@ namespace sdr - rObj.SetPortionInfoChecked(false); - - sal_Int32 nText = rTextProvider.getTextCount(); -- while( --nText > 0 ) -+ while (nText--) - { - OutlinerParaObject* pParaObj = rTextProvider.getText( nText )->GetOutlinerParaObject(); - if( pParaObj ) -@@ -587,7 +585,7 @@ namespace sdr - { - rObj.SetPortionInfoChecked(false); - sal_Int32 nText = rTextProvider.getTextCount(); -- while( --nText > 0 ) -+ while (nText--) - { - OutlinerParaObject* pParaObj = rTextProvider.getText( nText )->GetOutlinerParaObject(); - if( pParaObj ) -@@ -609,7 +607,7 @@ namespace sdr - if(aOldName != aNewName) - { - sal_Int32 nText = rTextProvider.getTextCount(); -- while( --nText > 0 ) -+ while (nText--) - { - OutlinerParaObject* pParaObj = rTextProvider.getText( nText )->GetOutlinerParaObject(); - if( pParaObj ) --- -2.9.3 - diff --git a/0001-gtk3-problems-with-gdk_drag_status-under-wayland.patch b/0001-gtk3-problems-with-gdk_drag_status-under-wayland.patch deleted file mode 100644 index 9ede865..0000000 --- a/0001-gtk3-problems-with-gdk_drag_status-under-wayland.patch +++ /dev/null @@ -1,105 +0,0 @@ -From 09972f971e13ff967c9897d50ba5fbf0f862e8a4 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Wed, 16 Nov 2016 10:16:29 +0000 -Subject: [PATCH] gtk3: problems with gdk_drag_status under wayland - -under wayland, the value selected by gdk_drag_status is not immediately -available via gdk_drag_context_get_selected_action, so use the value -we set on it, not the value it claims to have - -pull common code together as getPreferredDragAction - -Change-Id: I4d95c4b8183505f2203ad1a8f6947df983ce8d21 ---- - vcl/unx/gtk3/gtk3gtkframe.cxx | 51 ++++++++++++++++++++++++------------------- - 1 file changed, 28 insertions(+), 23 deletions(-) - -diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx -index e17a8b8..a9a32a4 100644 ---- a/vcl/unx/gtk3/gtk3gtkframe.cxx -+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx -@@ -3202,6 +3202,23 @@ namespace - } - } - -+namespace -+{ -+ static GdkDragAction getPreferredDragAction(sal_Int8 dragOperation) -+ { -+ GdkDragAction eAct(static_cast(0)); -+ -+ if (dragOperation & css::datatransfer::dnd::DNDConstants::ACTION_MOVE) -+ eAct = GDK_ACTION_MOVE; -+ else if (dragOperation & css::datatransfer::dnd::DNDConstants::ACTION_COPY) -+ eAct = GDK_ACTION_COPY; -+ else if (dragOperation & css::datatransfer::dnd::DNDConstants::ACTION_LINK) -+ eAct = GDK_ACTION_LINK; -+ -+ return eAct; -+ } -+} -+ - class GtkDropTargetDropContext : public cppu::WeakImplHelper - { - GdkDragContext *m_pContext; -@@ -3216,16 +3233,7 @@ public: - // XDropTargetDropContext - virtual void SAL_CALL acceptDrop(sal_Int8 dragOperation) throw(std::exception) override - { -- GdkDragAction eAct(static_cast(0)); -- -- if (dragOperation & css::datatransfer::dnd::DNDConstants::ACTION_MOVE) -- eAct = GDK_ACTION_MOVE; -- else if (dragOperation & css::datatransfer::dnd::DNDConstants::ACTION_COPY) -- eAct = GDK_ACTION_COPY; -- else if (dragOperation & css::datatransfer::dnd::DNDConstants::ACTION_LINK) -- eAct = GDK_ACTION_LINK; -- -- gdk_drag_status(m_pContext, eAct, m_nTime); -+ gdk_drag_status(m_pContext, getPreferredDragAction(dragOperation), m_nTime); - } - - virtual void SAL_CALL rejectDrop() throw(std::exception) override -@@ -3378,16 +3386,7 @@ public: - - virtual void SAL_CALL acceptDrag(sal_Int8 dragOperation) throw(std::exception) override - { -- GdkDragAction eAct(static_cast(0)); -- -- if (dragOperation & css::datatransfer::dnd::DNDConstants::ACTION_MOVE) -- eAct = GDK_ACTION_MOVE; -- else if (dragOperation & css::datatransfer::dnd::DNDConstants::ACTION_COPY) -- eAct = GDK_ACTION_COPY; -- else if (dragOperation & css::datatransfer::dnd::DNDConstants::ACTION_LINK) -- eAct = GDK_ACTION_LINK; -- -- gdk_drag_status(m_pContext, eAct, m_nTime); -+ gdk_drag_status(m_pContext, getPreferredDragAction(dragOperation), m_nTime); - } - - virtual void SAL_CALL rejectDrag() throw(std::exception) override -@@ -3429,12 +3428,18 @@ gboolean GtkSalFrame::signalDragMotion(GtkWidget *pWidget, GdkDragContext *conte - //preliminary accept the Drag and select the preferred action, the fire_* will - //inform the original caller of our choice and the callsite can decide - //to overrule this choice. i.e. typically here we default to ACTION_MOVE -- pContext->acceptDrag(GdkToVcl(gdk_drag_context_get_actions(context))); -+ sal_Int8 nSourceActions = GdkToVcl(gdk_drag_context_get_actions(context)); -+ GdkDragAction eAction = getPreferredDragAction(nSourceActions); -+ gdk_drag_status(context, eAction, time); - aEvent.Context = pContext; - aEvent.LocationX = x; - aEvent.LocationY = y; -- aEvent.DropAction = GdkToVcl(gdk_drag_context_get_selected_action(context)); -- aEvent.SourceActions = GdkToVcl(gdk_drag_context_get_actions(context)); -+ //under wayland at least, the action selected by gdk_drag_status on the -+ //context is not immediately available via gdk_drag_context_get_selected_action -+ //so here we set the DropAction from what we selected on the context, not -+ //what the context says is selected -+ aEvent.DropAction = GdkToVcl(eAction); -+ aEvent.SourceActions = nSourceActions; - - if (!pThis->m_bInDrag) - { --- -2.9.3 - diff --git a/0001-remove-OpenGL-transitions-config.-file-from-scheme.patch b/0001-remove-OpenGL-transitions-config.-file-from-scheme.patch deleted file mode 100644 index e9e10e8..0000000 --- a/0001-remove-OpenGL-transitions-config.-file-from-scheme.patch +++ /dev/null @@ -1,31 +0,0 @@ -From f316f413f589989013bf161170087e77a82db2d3 Mon Sep 17 00:00:00 2001 -From: David Tardon -Date: Sat, 5 Nov 2016 16:38:14 +0100 -Subject: [PATCH] remove OpenGL transitions config. file from scheme - -The OpenGL transitions are optional, so the respective config. file -should only be listed in the ogltrans module. - -This reverts commit dafcb2844bda4af2bc290548548392bda3262307. - -Change-Id: Ie785db07d04a0baf3dc9fd385f1d8a34837dc38b ---- - officecfg/registry/schema/org/openoffice/Office/Impress.xcs | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) - -diff --git a/officecfg/registry/schema/org/openoffice/Office/Impress.xcs b/officecfg/registry/schema/org/openoffice/Office/Impress.xcs -index e8b170d..323e7ef 100644 ---- a/officecfg/registry/schema/org/openoffice/Office/Impress.xcs -+++ b/officecfg/registry/schema/org/openoffice/Office/Impress.xcs -@@ -452,7 +452,7 @@ - - - -- vnd.sun.star.expand:$BRAND_BASE_DIR/$BRAND_SHARE_SUBDIR/config/soffice.cfg/simpress/transitions.xml;vnd.sun.star.expand:$BRAND_BASE_DIR/$BRAND_SHARE_SUBDIR/config/soffice.cfg/simpress/transitions-ogl.xml -+ vnd.sun.star.expand:$BRAND_BASE_DIR/$BRAND_SHARE_SUBDIR/config/soffice.cfg/simpress/transitions.xml - - - --- -2.9.3 - diff --git a/0001-with-wayland-scaling-cairo-is-meddling-with-our-font.patch b/0001-with-wayland-scaling-cairo-is-meddling-with-our-font.patch deleted file mode 100644 index c98c3da..0000000 --- a/0001-with-wayland-scaling-cairo-is-meddling-with-our-font.patch +++ /dev/null @@ -1,223 +0,0 @@ -From 609fd4f2e3b8ca6664b7c8b1c678fa3dd077f045 Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Wed, 23 Nov 2016 14:54:50 +0000 -Subject: [PATCH 1/2] with wayland scaling cairo is meddling with our font -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -so I see mixed large scaled and small unscaled letters in the writer header/footer -widget among other places - -so don't give it our FreeType font face (FC_FT_FACE), keep that for ourselves, -but instead set the filename and face index and let it make a new one itself. - -Reviewed-on: https://gerrit.libreoffice.org/31127 -Tested-by: Jenkins -Reviewed-by: Caolán McNamara -Tested-by: Caolán McNamara -(cherry picked from commit 8c3e1465223bd8c824c4cecfd0e6fc387583e592) - -Change-Id: I2e5eceb7bf590ccfeb06123d0404120feacfff97 ---- - vcl/inc/unx/cairotextrender.hxx | 6 +++++- - vcl/inc/unx/fc_fontoptions.hxx | 3 ++- - vcl/inc/unx/freetype_glyphcache.hxx | 1 + - vcl/inc/unx/glyphcache.hxx | 3 ++- - vcl/unx/generic/fontmanager/fontconfig.cxx | 29 +++++++++++++------------- - vcl/unx/generic/gdi/cairotextrender.cxx | 9 +++----- - vcl/unx/generic/glyphs/freetype_glyphcache.cxx | 17 ++++++++++----- - 7 files changed, 39 insertions(+), 29 deletions(-) - -diff --git a/vcl/inc/unx/cairotextrender.hxx b/vcl/inc/unx/cairotextrender.hxx -index 612daae..6427951 100644 ---- a/vcl/inc/unx/cairotextrender.hxx -+++ b/vcl/inc/unx/cairotextrender.hxx -@@ -28,8 +28,10 @@ - - typedef struct FT_FaceRec_* FT_Face; - -+class FontConfigFontOptions; - class ServerFont; - class GlyphCache; -+class FontConfigFontOptions; - typedef struct _cairo cairo_t; - - class VCL_DLLPUBLIC CairoFontsCache -@@ -38,7 +40,7 @@ public: - struct CacheId - { - FT_Face maFace; -- const void *mpOptions; -+ const FontConfigFontOptions *mpOptions; - bool mbEmbolden; - bool mbVerticalMetrics; - bool operator ==(const CacheId& rOther) const -@@ -124,6 +126,8 @@ public: - #endif - }; - -+FontConfigFontOptions* GetFCFontOptions( const FontAttributes& rFontAttributes, int nSize); -+ - #endif - - /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ -diff --git a/vcl/inc/unx/fc_fontoptions.hxx b/vcl/inc/unx/fc_fontoptions.hxx -index d085e26..5a2af5d 100644 ---- a/vcl/inc/unx/fc_fontoptions.hxx -+++ b/vcl/inc/unx/fc_fontoptions.hxx -@@ -51,7 +51,8 @@ public: - bool DontUseEmbeddedBitmaps() const { return meEmbeddedBitmap == EMBEDDEDBITMAP_FALSE; } - bool DontUseAntiAlias() const { return meAntiAlias == ANTIALIAS_FALSE; } - bool DontUseHinting() const { return (meHinting == HINTING_FALSE) || (GetHintStyle() == FontHintStyle::NONE); } -- void* GetPattern(void * /*pFace*/, bool /*bEmbolden*/) const; -+ void SyncPattern(const OString& rFileName, int nFontFace, bool bEmbolden); -+ FcPattern* GetPattern() const; - private: - FcPattern* mpPattern; - }; -diff --git a/vcl/inc/unx/freetype_glyphcache.hxx b/vcl/inc/unx/freetype_glyphcache.hxx -index 3b8d315..7acdbd6 100644 ---- a/vcl/inc/unx/freetype_glyphcache.hxx -+++ b/vcl/inc/unx/freetype_glyphcache.hxx -@@ -72,6 +72,7 @@ public: - void ReleaseFaceFT(); - - const OString& GetFontFileName() const { return mpFontFile->GetFileName(); } -+ int GetFontFaceIndex() const { return mnFaceNum; } - sal_IntPtr GetFontId() const { return mnFontId; } - bool IsSymbolFont() const { return maDevFontAttributes.IsSymbolFont(); } - const FontAttributes& GetFontAttributes() const { return maDevFontAttributes; } -diff --git a/vcl/inc/unx/glyphcache.hxx b/vcl/inc/unx/glyphcache.hxx -index 04723cb..f605e16 100644 ---- a/vcl/inc/unx/glyphcache.hxx -+++ b/vcl/inc/unx/glyphcache.hxx -@@ -151,6 +151,7 @@ public: - virtual ~ServerFont(); - - const OString& GetFontFileName() const; -+ int GetFontFaceIndex() const; - bool TestFont() const { return mbFaceOk;} - FT_Face GetFtFace() const; - int GetLoadFlags() const { return (mnLoadFlags & ~FT_LOAD_IGNORE_TRANSFORM); } -@@ -229,7 +230,7 @@ private: - FT_FaceRec_* maFaceFT; - FT_SizeRec_* maSizeFT; - -- std::shared_ptr mxFontOptions; -+ mutable std::shared_ptr mxFontOptions; - - bool mbFaceOk; - bool mbArtItalic; -diff --git a/vcl/unx/generic/fontmanager/fontconfig.cxx b/vcl/unx/generic/fontmanager/fontconfig.cxx -index 957afb14..79971d5 100644 ---- a/vcl/unx/generic/fontmanager/fontconfig.cxx -+++ b/vcl/unx/generic/fontmanager/fontconfig.cxx -@@ -1143,21 +1143,20 @@ FontConfigFontOptions::~FontConfigFontOptions() - FcPatternDestroy(mpPattern); - } - -- void *FontConfigFontOptions::GetPattern(void * face, bool bEmbolden) const -- { -- FcValue value; -- value.type = FcTypeFTFace; -- value.u.f = face; -- FcPatternDel(mpPattern, FC_FT_FACE); -- FcPatternAdd (mpPattern, FC_FT_FACE, value, FcTrue); -- FcPatternDel(mpPattern, FC_EMBOLDEN); -- FcPatternAddBool(mpPattern, FC_EMBOLDEN, bEmbolden ? FcTrue : FcFalse); --#if 0 -- FcPatternDel(mpPattern, FC_VERTICAL_LAYOUT); -- FcPatternAddBool(mpPattern, FC_VERTICAL_LAYOUT, bVerticalLayout ? FcTrue : FcFalse); --#endif -- return mpPattern; -- } -+FcPattern *FontConfigFontOptions::GetPattern() const -+{ -+ return mpPattern; -+} -+ -+void FontConfigFontOptions::SyncPattern(const OString& rFileName, int nIndex, bool bEmbolden) -+{ -+ FcPatternDel(mpPattern, FC_FILE); -+ FcPatternAddString(mpPattern, FC_FILE, reinterpret_cast(rFileName.getStr())); -+ FcPatternDel(mpPattern, FC_INDEX); -+ FcPatternAddInteger(mpPattern, FC_INDEX, nIndex); -+ FcPatternDel(mpPattern, FC_EMBOLDEN); -+ FcPatternAddBool(mpPattern, FC_EMBOLDEN, bEmbolden ? FcTrue : FcFalse); -+} - - FontConfigFontOptions* PrintFontManager::getFontOptions( - const FastPrintFontInfo& rInfo, int nSize, void (*subcallback)(void*)) -diff --git a/vcl/unx/generic/gdi/cairotextrender.cxx b/vcl/unx/generic/gdi/cairotextrender.cxx -index 513f5e5..c904fa0 100644 ---- a/vcl/unx/generic/gdi/cairotextrender.cxx -+++ b/vcl/unx/generic/gdi/cairotextrender.cxx -@@ -244,12 +244,9 @@ void CairoTextRender::DrawServerFontLayout( const ServerFontLayout& rLayout ) - cairo_font_face_t* font_face = static_cast(CairoFontsCache::FindCachedFont(aId)); - if (!font_face) - { -- const FontConfigFontOptions *pOptions = rFont.GetFontOptions().get(); -- void *pPattern = pOptions ? pOptions->GetPattern(aFace, aId.mbEmbolden) : nullptr; -- if (pPattern) -- font_face = cairo_ft_font_face_create_for_pattern(static_cast(pPattern)); -- if (!font_face) -- font_face = cairo_ft_font_face_create_for_ft_face(reinterpret_cast(aFace), rFont.GetLoadFlags()); -+ const FontConfigFontOptions *pOptions = aId.mpOptions; -+ FcPattern *pPattern = pOptions->GetPattern(); -+ font_face = cairo_ft_font_face_create_for_pattern(pPattern); - CairoFontsCache::CacheFont(font_face, aId); - } - cairo_set_font_face(cr, font_face); -diff --git a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx -index e12fcb8..db656d3 100644 ---- a/vcl/unx/generic/glyphs/freetype_glyphcache.cxx -+++ b/vcl/unx/generic/glyphs/freetype_glyphcache.cxx -@@ -20,6 +20,7 @@ - - #include - -+#include - #include "unx/freetype_glyphcache.hxx" - - #include -@@ -510,11 +511,7 @@ ServerFont::ServerFont( const FontSelectPattern& rFSD, FreetypeFontInfo* pFI ) - ApplyGSUB( rFSD ); - - // TODO: query GASP table for load flags -- mnLoadFlags = FT_LOAD_DEFAULT; --#if 1 // #i97326# cairo sometimes uses FT_Set_Transform() on our FT_FACE -- // we are not using FT_Set_Transform() yet, so just ignore it for now -- mnLoadFlags |= FT_LOAD_IGNORE_TRANSFORM; --#endif -+ mnLoadFlags = FT_LOAD_DEFAULT | FT_LOAD_IGNORE_TRANSFORM; - - mbArtItalic = (rFSD.GetItalic() != ITALIC_NONE && pFI->GetFontAttributes().GetItalic() == ITALIC_NONE); - mbArtBold = (rFSD.GetWeight() > WEIGHT_MEDIUM && pFI->GetFontAttributes().GetWeight() <= WEIGHT_MEDIUM); -@@ -592,6 +589,12 @@ void ServerFont::SetFontOptions(const std::shared_ptr& xF - - const std::shared_ptr& ServerFont::GetFontOptions() const - { -+ if (!mxFontOptions) -+ { -+ SAL_WARN("vcl", "this doesn't happen in practice I believe"); -+ mxFontOptions.reset(GetFCFontOptions(mpFontInfo->GetFontAttributes(), maFontSelData.mnHeight)); -+ } -+ mxFontOptions->SyncPattern(GetFontFileName(), GetFontFaceIndex(), NeedsArtificialBold()); - return mxFontOptions; - } - -@@ -600,6 +603,10 @@ const OString& ServerFont::GetFontFileName() const - return mpFontInfo->GetFontFileName(); - } - -+int ServerFont::GetFontFaceIndex() const -+{ -+ return mpFontInfo->GetFontFaceIndex(); -+} - - ServerFont::~ServerFont() - { --- -2.9.3 - diff --git a/0002-Resolves-tdf-99508-ensure-sufficient-size-for-hidpi-.patch b/0002-Resolves-tdf-99508-ensure-sufficient-size-for-hidpi-.patch deleted file mode 100644 index 36ce2b9..0000000 --- a/0002-Resolves-tdf-99508-ensure-sufficient-size-for-hidpi-.patch +++ /dev/null @@ -1,303 +0,0 @@ -From cb6a6f9b0741c3188453c34a0d5fd0e867f5cc9c Mon Sep 17 00:00:00 2001 -From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= -Date: Tue, 22 Nov 2016 15:35:16 +0000 -Subject: [PATCH 2/2] Resolves: tdf#99508 ensure sufficient size for hidpi - backing surface -MIME-Version: 1.0 -Content-Type: text/plain; charset=UTF-8 -Content-Transfer-Encoding: 8bit - -and match virtual device scale with widget device scale - -Change-Id: I1f35dcbaec94be12758ad6e4276bfd6bda4b1e88 -Reviewed-on: https://gerrit.libreoffice.org/31080 -Reviewed-by: Tomaž Vajngerl -Tested-by: Jenkins -Tested-by: Tomaž Vajngerl -(cherry picked from commit d9a6e0023c9a192850b9db00f8120fbcc4256ec9) ---- - vcl/headless/svpgdi.cxx | 16 ++++++++++----- - vcl/headless/svpinst.cxx | 2 +- - vcl/headless/svpvd.cxx | 33 +++++++++++++++++-------------- - vcl/inc/headless/svpgdi.hxx | 2 ++ - vcl/inc/headless/svpvd.hxx | 4 +++- - vcl/inc/unx/gtk/gtkdata.hxx | 2 ++ - vcl/unx/gtk/gtkdata.cxx | 1 + - vcl/unx/gtk/gtkinst.cxx | 6 ++++-- - vcl/unx/gtk3/gtk3gtkdata.cxx | 2 ++ - vcl/unx/gtk3/gtk3gtkframe.cxx | 15 ++++++++++---- - vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx | 2 +- - 11 files changed, 56 insertions(+), 29 deletions(-) - -diff --git a/vcl/headless/svpgdi.cxx b/vcl/headless/svpgdi.cxx -index 63c60ca..36f44cb 100644 ---- a/vcl/headless/svpgdi.cxx -+++ b/vcl/headless/svpgdi.cxx -@@ -374,6 +374,7 @@ bool SvpSalGraphics::drawAlphaRect(long nX, long nY, long nWidth, long nHeight, - - SvpSalGraphics::SvpSalGraphics() - : m_pSurface(nullptr) -+ , m_fScale(1.0) - , m_aLineColor(MAKE_SALCOLOR(0x00, 0x00, 0x00)) - , m_aFillColor(MAKE_SALCOLOR(0xFF, 0xFF, 0XFF)) - , m_ePaintMode(OVERPAINT) -@@ -388,6 +389,9 @@ SvpSalGraphics::~SvpSalGraphics() - void SvpSalGraphics::setSurface(cairo_surface_t* pSurface) - { - m_pSurface = pSurface; -+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0) -+ cairo_surface_get_device_scale(pSurface, &m_fScale, nullptr); -+#endif - ResetClipRegion(); - } - -@@ -981,15 +985,17 @@ void SvpSalGraphics::copyBits( const SalTwoRect& rTR, - #if CAIRO_VERSION < CAIRO_VERSION_ENCODE(1, 12, 0) - pCopy = cairo_surface_create_similar(source, - cairo_surface_get_content(m_pSurface), -- aTR.mnSrcWidth, -- aTR.mnSrcHeight); -+ aTR.mnSrcWidth * m_fScale, -+ aTR.mnSrcHeight * m_fScale); - #else - pCopy = cairo_surface_create_similar_image(source, - cairo_image_surface_get_format(m_pSurface), -- aTR.mnSrcWidth, -- aTR.mnSrcHeight); -+ aTR.mnSrcWidth * m_fScale, -+ aTR.mnSrcHeight * m_fScale); -+#endif -+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0) -+ cairo_surface_set_device_scale(pCopy, m_fScale, m_fScale); - #endif -- - cairo_t* cr = cairo_create(pCopy); - cairo_set_source_surface(cr, source, -aTR.mnSrcX, -aTR.mnSrcY); - cairo_rectangle(cr, 0, 0, aTR.mnSrcWidth, aTR.mnSrcHeight); -diff --git a/vcl/headless/svpinst.cxx b/vcl/headless/svpinst.cxx -index a6b554c..8ba3380 100644 ---- a/vcl/headless/svpinst.cxx -+++ b/vcl/headless/svpinst.cxx -@@ -272,7 +272,7 @@ SalVirtualDevice* SvpSalInstance::CreateVirtualDevice( SalGraphics* /* pGraphics - DeviceFormat eFormat, - const SystemGraphicsData* /* pData */ ) - { -- SvpSalVirtualDevice* pNew = new SvpSalVirtualDevice(eFormat); -+ SvpSalVirtualDevice* pNew = new SvpSalVirtualDevice(eFormat, 1); - pNew->SetSize( nDX, nDY ); - return pNew; - } -diff --git a/vcl/headless/svpvd.cxx b/vcl/headless/svpvd.cxx -index f356d7d..ca28a52 100644 ---- a/vcl/headless/svpvd.cxx -+++ b/vcl/headless/svpvd.cxx -@@ -57,14 +57,16 @@ bool SvpSalVirtualDevice::SetSize( long nNewDX, long nNewDY ) - bool SvpSalVirtualDevice::SetSizeUsingBuffer( long nNewDX, long nNewDY, - sal_uInt8 *const pBuffer) - { -- B2IVector aDevSize( nNewDX, nNewDY ); -- if( aDevSize.getX() == 0 ) -- aDevSize.setX( 1 ); -- if( aDevSize.getY() == 0 ) -- aDevSize.setY( 1 ); -- -- if (!m_pSurface || cairo_image_surface_get_width(m_pSurface) != aDevSize.getX() || -- cairo_image_surface_get_height(m_pSurface) != aDevSize.getY() ) -+ if (nNewDX == 0) -+ nNewDX = 1; -+ if (nNewDY == 0) -+ nNewDY = 1; -+ -+ nNewDX *= m_fScale; -+ nNewDY *= m_fScale; -+ -+ if (!m_pSurface || cairo_image_surface_get_width(m_pSurface) != nNewDX || -+ cairo_image_surface_get_height(m_pSurface) != nNewDY ) - { - if (m_pSurface) - { -@@ -74,22 +76,23 @@ bool SvpSalVirtualDevice::SetSizeUsingBuffer( long nNewDX, long nNewDY, - if (m_eFormat == DeviceFormat::BITMASK) - { - m_pSurface = cairo_image_surface_create(CAIRO_FORMAT_A1, -- aDevSize.getX(), -- aDevSize.getY()); -+ nNewDX, nNewDY); - } - else - { - m_pSurface = pBuffer ? - cairo_image_surface_create_for_data(pBuffer, CAIRO_FORMAT_ARGB32, -- aDevSize.getX(), -- aDevSize.getY(), -- cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, aDevSize.getX())) -+ nNewDX, nNewDY, -+ cairo_format_stride_for_width(CAIRO_FORMAT_ARGB32, nNewDX)) - : - cairo_image_surface_create(CAIRO_FORMAT_ARGB32, -- aDevSize.getX(), -- aDevSize.getY()); -+ nNewDX, nNewDY); - } - -+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0) -+ cairo_surface_set_device_scale(m_pSurface, m_fScale, m_fScale); -+#endif -+ - // update device in existing graphics - for( std::list< SvpSalGraphics* >::iterator it = m_aGraphics.begin(); - it != m_aGraphics.end(); ++it ) -diff --git a/vcl/inc/headless/svpgdi.hxx b/vcl/inc/headless/svpgdi.hxx -index 85bb4b0..060c9f9 100644 ---- a/vcl/inc/headless/svpgdi.hxx -+++ b/vcl/inc/headless/svpgdi.hxx -@@ -80,6 +80,7 @@ struct VCL_DLLPUBLIC DamageHandler - class VCL_DLLPUBLIC SvpSalGraphics : public SalGraphics - { - cairo_surface_t* m_pSurface; -+ double m_fScale; - SalColor m_aLineColor; - SalColor m_aFillColor; - PaintMode m_ePaintMode; -@@ -235,6 +236,7 @@ public: - cairo_t* getCairoContext(bool bXorModeAllowed) const; - void releaseCairoContext(cairo_t* cr, bool bXorModeAllowed, const basegfx::B2DRange& rExtents) const; - static cairo_surface_t* createCairoSurface(const BitmapBuffer *pBuffer); -+ double getScale() const { return m_fScale; } - void clipRegion(cairo_t* cr); - }; - -diff --git a/vcl/inc/headless/svpvd.hxx b/vcl/inc/headless/svpvd.hxx -index 9256768..13f2c00 100644 ---- a/vcl/inc/headless/svpvd.hxx -+++ b/vcl/inc/headless/svpvd.hxx -@@ -31,12 +31,14 @@ class VCL_DLLPUBLIC SvpSalVirtualDevice : public SalVirtualDevice - { - DeviceFormat m_eFormat; - cairo_surface_t* m_pSurface; -+ double m_fScale; - std::list< SvpSalGraphics* > m_aGraphics; - - public: -- SvpSalVirtualDevice(DeviceFormat eFormat) -+ SvpSalVirtualDevice(DeviceFormat eFormat, double fScale) - : m_eFormat(eFormat) - , m_pSurface(nullptr) -+ , m_fScale(fScale) - { - } - virtual ~SvpSalVirtualDevice(); -diff --git a/vcl/inc/unx/gtk/gtkdata.hxx b/vcl/inc/unx/gtk/gtkdata.hxx -index 037d213..98c96dd 100644 ---- a/vcl/inc/unx/gtk/gtkdata.hxx -+++ b/vcl/inc/unx/gtk/gtkdata.hxx -@@ -138,6 +138,7 @@ class GtkSalDisplay : public SalDisplay - o3tl::enumarray m_aCursors; - bool m_bStartupCompleted; - bool m_bX11Display; -+ bool m_bOwnHiDpiScale; - - GdkCursor* getFromXBM( const unsigned char *pBitmap, const unsigned char *pMask, - int nWidth, int nHeight, int nXHot, int nYHot ); -@@ -147,6 +148,7 @@ public: - - GdkDisplay* GetGdkDisplay() const { return m_pGdkDisplay; } - bool IsX11Display() const { return m_bX11Display; } -+ bool IsOwnHiDpiScale() const { return m_bOwnHiDpiScale; } - - GtkSalSystem* getSystem() const { return m_pSys; } - -diff --git a/vcl/unx/gtk/gtkdata.cxx b/vcl/unx/gtk/gtkdata.cxx -index 8db0513..3a22a6d 100644 ---- a/vcl/unx/gtk/gtkdata.cxx -+++ b/vcl/unx/gtk/gtkdata.cxx -@@ -80,6 +80,7 @@ GtkSalDisplay::GtkSalDisplay( GdkDisplay* pDisplay ) : - GetGenericData()->ErrorTrapPush(); // and leak the trap - - m_bX11Display = true; -+ m_bOwnHiDpiScale = true; - - gtk_widget_set_default_direction(AllSettings::GetLayoutRTL() ? GTK_TEXT_DIR_RTL : GTK_TEXT_DIR_LTR); - } -diff --git a/vcl/unx/gtk/gtkinst.cxx b/vcl/unx/gtk/gtkinst.cxx -index 1aa17fd..76d2ff9 100644 ---- a/vcl/unx/gtk/gtkinst.cxx -+++ b/vcl/unx/gtk/gtkinst.cxx -@@ -329,8 +329,10 @@ SalVirtualDevice* GtkInstance::CreateVirtualDevice( SalGraphics *pG, - { - EnsureInit(); - #if GTK_CHECK_VERSION(3,0,0) -- (void)pG; (void) pGd; -- SvpSalVirtualDevice* pNew = new SvpSalVirtualDevice(eFormat); -+ (void) pGd; -+ SvpSalGraphics *pSvpSalGraphics = dynamic_cast(pG); -+ assert(pSvpSalGraphics); -+ SvpSalVirtualDevice* pNew = new SvpSalVirtualDevice(eFormat, pSvpSalGraphics->getScale()); - pNew->SetSize( nDX, nDY ); - return pNew; - #else -diff --git a/vcl/unx/gtk3/gtk3gtkdata.cxx b/vcl/unx/gtk3/gtk3gtkdata.cxx -index ca210e0..4207995 100644 ---- a/vcl/unx/gtk3/gtk3gtkdata.cxx -+++ b/vcl/unx/gtk3/gtk3gtkdata.cxx -@@ -81,6 +81,7 @@ GtkSalDisplay::GtkSalDisplay( GdkDisplay* pDisplay ) : - GetGenericData()->ErrorTrapPush(); // and leak the trap - - m_bX11Display = GDK_IS_X11_DISPLAY( m_pGdkDisplay ); -+ m_bOwnHiDpiScale = false; - - #if GTK_CHECK_VERSION(3,10,0) - #ifdef GDK_WINDOWING_X11 -@@ -89,6 +90,7 @@ GtkSalDisplay::GtkSalDisplay( GdkDisplay* pDisplay ) : - if (!getenv("GDK_SCALE")) - { - gdk_x11_display_set_window_scale(m_pGdkDisplay, 1); -+ m_bOwnHiDpiScale = true; - } - } - #endif -diff --git a/vcl/unx/gtk3/gtk3gtkframe.cxx b/vcl/unx/gtk3/gtk3gtkframe.cxx -index b728782..cf3c426 100644 ---- a/vcl/unx/gtk3/gtk3gtkframe.cxx -+++ b/vcl/unx/gtk3/gtk3gtkframe.cxx -@@ -1577,13 +1577,20 @@ void GtkSalFrame::AllocateFrame() - if (m_pSurface) - cairo_surface_destroy(m_pSurface); - -- - #if GTK_CHECK_VERSION(3,10,0) -+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0) -+ int scale = getDisplay()->IsOwnHiDpiScale() ? 1 : gtk_widget_get_scale_factor(m_pWindow); -+#else -+ int scale = 1; -+#endif - m_pSurface = gdk_window_create_similar_image_surface(widget_get_window(m_pWindow), - CAIRO_FORMAT_ARGB32, -- aFrameSize.getX(), -- aFrameSize.getY(), -- 0); -+ aFrameSize.getX() * scale, -+ aFrameSize.getY() * scale, -+ scale); -+#if CAIRO_VERSION >= CAIRO_VERSION_ENCODE(1, 14, 0) -+ cairo_surface_set_device_scale(m_pSurface, scale, scale); -+#endif - #else - m_pSurface = cairo_image_surface_create(CAIRO_FORMAT_ARGB32, - aFrameSize.getX(), -diff --git a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx -index f8e093d..52c3246 100644 ---- a/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx -+++ b/vcl/unx/gtk3/gtk3salnativewidgets-gtk.cxx -@@ -2495,7 +2495,7 @@ void GtkSalGraphics::GetResolution(sal_Int32& rDPIX, sal_Int32& rDPIY) - int nScaleFactor = 1; - - #if GTK_CHECK_VERSION(3, 10, 0) -- nScaleFactor = gdk_window_get_scale_factor(widget_get_window(mpWindow)); -+ nScaleFactor = GtkSalFrame::getDisplay()->IsOwnHiDpiScale() ? gtk_widget_get_scale_factor(mpWindow) : 1; - #endif - - if (fResolution > 0.0) --- -2.9.3 - diff --git a/libreoffice.spec b/libreoffice.spec index 82d5159..bbf72ec 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -1,5 +1,5 @@ # download path contains version without the last (fourth) digit -%define libo_version 5.2.3 +%define libo_version 5.2.4 # 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. @@ -53,8 +53,8 @@ Summary: Free Software Productivity Suite Name: libreoffice Epoch: 1 -Version: %{libo_version}.3 -Release: 12%{?libo_prerelease}%{?dist} +Version: %{libo_version}.1 +Release: 1%{?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 Artistic and MPLv2.0 and CC0 URL: http://www.libreoffice.org/ @@ -233,46 +233,36 @@ Patch3: 0001-Resolves-rhbz-1035092-no-shortcut-key-for-Italian-To.patch Patch4: 0001-never-run-autogen.sh.patch # not upstreamed Patch5: 0001-add-X-TryExec-entries-to-desktop-files.patch -Patch6: 0001-Resolves-rhbz-1326304-cannot-detect-loss-of-wayland-.patch +# not upstreamed: upstream wants an automatic restart after a crash; we +# want a nice abrt report +Patch6: 0001-don-t-suppress-crashes.patch Patch7: 0001-don-t-autocapitalize-words-that-follow-a-field-mark.patch Patch8: 0001-a11y-crash-on-deleting-certain-frame-in-certain-docu.patch Patch9: 0001-Resolves-rhbz-1351224-wayland-grab-related-crashes.patch -Patch10: 0001-Resolves-rhbz-1352965-gtk3-infinite-clipboard-recurs.patch -Patch11: 0001-Related-rhbz-1351369-gtk3-clipboards-have-to-live-to.patch -Patch12: 0001-add-xdg-email-as-the-default-email-route.patch -Patch13: 0001-Related-rhbz-1362451-avoid-recursive-ownerchanged-ha.patch -Patch14: 0001-only-date-autofilter-menus-need-the-space-for-the-tr.patch -Patch15: 0001-rhbz-1353069-don-t-record-undo-information-in-the-cl.patch -Patch16: 0001-in-msword-the-hard-break-between-image-and-caption-h.patch -Patch17: 0001-Resolves-tdf-98807-gtk3-isn-t-giving-utility-windows.patch -Patch18: 0001-convert-angle-from-degrees-to-radians-for-glm.patch -Patch19: 0001-Related-rhbz-1390607-our-side-of-per-monitor-fullscr.patch -Patch20: 0001-remove-OpenGL-transitions-config.-file-from-scheme.patch -Patch21: 0001-ensure-checkForUniqueItem-on-inserting-a-new-slide.patch -Patch22: 0001-catch-and-rethrow-later-uno-exceptions-within-glib-s.patch -Patch23: 0001-gtk3-focus-jumping-around-the-place-under-wayland-po.patch -# not upstreamed: upstream wants an automatic restart after a crash; we -# want a nice abrt report -Patch24: 0001-don-t-suppress-crashes.patch -Patch25: 0001-Resolves-rhbz-1342828-toolbars-jumping-around-while-.patch -Patch26: 0001-Resolves-rhbz-1391418-wayland-toolbars-can-t-be-dock.patch -Patch27: 0001-gtk3-problems-with-gdk_drag_status-under-wayland.patch -Patch28: 0001-gtk-under-wayland-tracking-the-window-position-is-wo.patch -Patch29: 0001-Resolves-rhbz-1396827-update-geom-on-mouse-click-as-.patch -Patch30: 0001-avoid-loss-of-text-in-edited-placeholder.patch -Patch31: 0001-drawing-shapes-aren-t-tracking-style-name-changes-co.patch -Patch32: 0001-set-the-search-toolbar-so-it-doesn-t-move-around-wrt.patch -Patch33: 0001-Resolves-rhbz-1397181-toolbar-layout-manager-not-res.patch -Patch34: 0001-with-wayland-scaling-cairo-is-meddling-with-our-font.patch -Patch35: 0002-Resolves-tdf-99508-ensure-sufficient-size-for-hidpi-.patch -Patch36: 0001-Resolves-rhbz-1362453-use-the-cairo-scaling-approach.patch -Patch37: 0001-glDrawArrays-takes-num-of-indices-not-size-of-storag.patch -Patch38: 0001-rework-diamond-transition-to-use-only-opengl-core.patch -Patch39: 0001-change-from-glew-to-epoxy.patch -Patch40: 0001-gtk3-implement-opengl-support-for-slideshow.patch -Patch41: 0001-usageinfo-causes-one-of-our-more-frequent-fedora-25-.patch -Patch42: 0001-Resolves-rhbz-1400683-ctrl-alt-c-doesn-t-insert-comm.patch -Patch43: 0001-Resolves-rhbz-1401778-gtk3-wayland-switching-windows.patch +Patch10: 0001-add-xdg-email-as-the-default-email-route.patch +Patch11: 0001-only-date-autofilter-menus-need-the-space-for-the-tr.patch +Patch12: 0001-rhbz-1353069-don-t-record-undo-information-in-the-cl.patch +Patch13: 0001-in-msword-the-hard-break-between-image-and-caption-h.patch +Patch14: 0001-Resolves-tdf-98807-gtk3-isn-t-giving-utility-windows.patch +Patch15: 0001-Related-rhbz-1390607-our-side-of-per-monitor-fullscr.patch +Patch16: 0001-ensure-checkForUniqueItem-on-inserting-a-new-slide.patch +Patch17: 0001-catch-and-rethrow-later-uno-exceptions-within-glib-s.patch +Patch18: 0001-gtk3-focus-jumping-around-the-place-under-wayland-po.patch +Patch19: 0001-Resolves-rhbz-1342828-toolbars-jumping-around-while-.patch +Patch20: 0001-Resolves-rhbz-1391418-wayland-toolbars-can-t-be-dock.patch +Patch21: 0001-gtk-under-wayland-tracking-the-window-position-is-wo.patch +Patch22: 0001-Resolves-rhbz-1396827-update-geom-on-mouse-click-as-.patch +Patch23: 0001-avoid-loss-of-text-in-edited-placeholder.patch +Patch24: 0001-set-the-search-toolbar-so-it-doesn-t-move-around-wrt.patch +Patch25: 0001-Resolves-rhbz-1397181-toolbar-layout-manager-not-res.patch +Patch26: 0001-Resolves-rhbz-1362453-use-the-cairo-scaling-approach.patch +Patch27: 0001-glDrawArrays-takes-num-of-indices-not-size-of-storag.patch +Patch28: 0001-rework-diamond-transition-to-use-only-opengl-core.patch +Patch29: 0001-change-from-glew-to-epoxy.patch +Patch30: 0001-gtk3-implement-opengl-support-for-slideshow.patch +Patch31: 0001-usageinfo-causes-one-of-our-more-frequent-fedora-25-.patch +Patch32: 0001-Resolves-rhbz-1400683-ctrl-alt-c-doesn-t-insert-comm.patch +Patch33: 0001-Resolves-rhbz-1401778-gtk3-wayland-switching-windows.patch %if 0%{?fedora} >= 26 Patch400: 0001-Switch-from-orcus-0.11-to-orcus-0.12.patch @@ -2330,7 +2320,8 @@ done %endif %changelog -* Tue Dec 06 2016 Caolán McNamara - 1:5.2.3.3-12-UNBUILT +* Tue Dec 06 2016 Caolán McNamara - 1:5.2.4.1-1 +- update to 5.2.4 rc1 - Resolves: rhbz#1400683 ctrl+alt+c doesn't insert comment - Resolves: rhbz#1401778 switching document from window menu doesn't work under wayland diff --git a/sources b/sources index e619821..6085515 100644 --- a/sources +++ b/sources @@ -7,7 +7,7 @@ a7983f859eafb2677d7ff386a023bc40 a7983f859eafb2677d7ff386a023bc40-xsltml_2.1.2. 12fb8b5b0d5132726e57b9b9fc7e22c4 libreoffice-multiliblauncher.sh 4b87018f7fff1d054939d19920b751a0 4b87018f7fff1d054939d19920b751a0-collada2gltf-master-cb1d97788a.tar.bz2 ce12af00283eb90d9281956524250d6e ce12af00283eb90d9281956524250d6e-xmlsec1-1.2.20.tar.gz -6177d8be5ca358929277a19292cae36d libreoffice-5.2.3.3.tar.xz -d37cf576bf6df067474f96f3bf6369d6 libreoffice-help-5.2.3.3.tar.xz -2346cacee8b4e797ba23765b748cf3ae libreoffice-translations-5.2.3.3.tar.xz d63a9f47ab048f5009d90693d6aa6424 libgltf-0.0.2.tar.bz2 +0ef6ea84d44621076f3f6b0bf7525a12 libreoffice-5.2.4.1.tar.xz +672b99155243d7d97b7025b33e191e66 libreoffice-help-5.2.4.1.tar.xz +2867679882a5063948edabdd02a40c91 libreoffice-translations-5.2.4.1.tar.xz