From cba696e05aa4fe2df0d5f423e0ffbe310b23ff48 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Jul 22 2016 08:47:01 +0000 Subject: Related: rhbz#1065807 recover using xdg templates and document settings --- diff --git a/0001-Related-rhbz-1065807-recover-using-xdg-templates-and.patch b/0001-Related-rhbz-1065807-recover-using-xdg-templates-and.patch new file mode 100644 index 0000000..c78c69c --- /dev/null +++ b/0001-Related-rhbz-1065807-recover-using-xdg-templates-and.patch @@ -0,0 +1,191 @@ +From 9f74d796ce16e045f659862fef1fe93e2a020518 Mon Sep 17 00:00:00 2001 +From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= +Date: Fri, 22 Jul 2016 09:39:55 +0100 +Subject: [PATCH] Related: rhbz#1065807 recover using xdg templates and + documents settings + +lost since... + +commit 3cf557c12d27f1b2250e69a543136da098112d80 +Author: Bjoern Michaelsen +Date: Fri Oct 16 12:15:55 2015 +0100 + + drop gconf integration as per ESC decision + +Change-Id: If2c594174a6fa8c524d9664c9f197cb7c6d4641d +--- + shell/source/backends/desktopbe/desktopbackend.cxx | 125 +++++++++++++++++++-- + 1 file changed, 118 insertions(+), 7 deletions(-) + +diff --git a/shell/source/backends/desktopbe/desktopbackend.cxx b/shell/source/backends/desktopbe/desktopbackend.cxx +index 745d96d..f4a2169 100644 +--- a/shell/source/backends/desktopbe/desktopbackend.cxx ++++ b/shell/source/backends/desktopbe/desktopbackend.cxx +@@ -42,9 +42,12 @@ + #include "cppuhelper/implementationentry.hxx" + #include "cppuhelper/weak.hxx" + #include "osl/diagnose.h" ++#include "osl/file.hxx" ++#include "osl/security.hxx" + #include "rtl/string.h" + #include "rtl/textenc.h" + #include "rtl/ustring.h" ++#include "rtl/ustrbuf.hxx" + #include "rtl/ustring.hxx" + #include "sal/types.h" + #include "uno/current_context.hxx" +@@ -148,17 +151,128 @@ void Default::setPropertyValue(OUString const &, css::uno::Any const &) + static_cast< cppu::OWeakObject * >(this), -1); + } + ++static OUString xdg_user_dir_lookup (const char *type) ++{ ++ char *config_home; ++ char *p; ++ bool bError = false; ++ ++ osl::Security aSecurity; ++ oslFileHandle handle; ++ OUString aHomeDirURL; ++ OUString aDocumentsDirURL; ++ OUString aConfigFileURL; ++ OUStringBuffer aUserDirBuf; ++ ++ if (!aSecurity.getHomeDir( aHomeDirURL ) ) ++ { ++ osl::FileBase::getFileURLFromSystemPath(OUString("/tmp"), aDocumentsDirURL); ++ return aDocumentsDirURL; ++ } ++ ++ config_home = getenv ("XDG_CONFIG_HOME"); ++ if (config_home == NULL || config_home[0] == 0) ++ { ++ aConfigFileURL = aHomeDirURL + "/.config/user-dirs.dirs"; ++ } ++ else ++ { ++ aConfigFileURL = OUString::createFromAscii(config_home) + "/user-dirs.dirs"; ++ } ++ ++ if(osl_File_E_None == osl_openFile(aConfigFileURL.pData, &handle, osl_File_OpenFlag_Read)) ++ { ++ rtl::ByteSequence seq; ++ while (osl_File_E_None == osl_readLine(handle , reinterpret_cast(&seq))) ++ { ++ /* Remove newline at end */ ++ int relative = 0; ++ int len = seq.getLength(); ++ if(len>0 && seq[len-1] == '\n') ++ seq[len-1] = 0; ++ ++ p = reinterpret_cast(seq.getArray()); ++ while (*p == ' ' || *p == '\t') ++ p++; ++ if (strncmp (p, "XDG_", 4) != 0) ++ continue; ++ p += 4; ++ if (strncmp (p, type, strlen (type)) != 0) ++ continue; ++ p += strlen (type); ++ if (strncmp (p, "_DIR", 4) != 0) ++ continue; ++ p += 4; ++ while (*p == ' ' || *p == '\t') ++ p++; ++ if (*p != '=') ++ continue; ++ p++; ++ while (*p == ' ' || *p == '\t') ++ p++; ++ if (*p != '"') ++ continue; ++ p++; ++ if (strncmp (p, "$HOME/", 6) == 0) ++ { ++ p += 6; ++ relative = 1; ++ } ++ else if (*p != '/') ++ continue; ++ if (relative) ++ { ++ aUserDirBuf = OUStringBuffer(aHomeDirURL + "/"); ++ } ++ else ++ { ++ aUserDirBuf = OUStringBuffer(); ++ } ++ while (*p && *p != '"') ++ { ++ if ((*p == '\\') && (*(p+1) != 0)) ++ p++; ++ aUserDirBuf.append((sal_Unicode)*p++); ++ } ++ }//end of while ++ osl_closeFile(handle); ++ } ++ else ++ bError = true; ++ if (aUserDirBuf.getLength()>0 && !bError) ++ { ++ aDocumentsDirURL = aUserDirBuf.makeStringAndClear(); ++ osl::Directory aDocumentsDir( aDocumentsDirURL ); ++ if( osl::FileBase::E_None == aDocumentsDir.open() ) ++ return aDocumentsDirURL; ++ } ++ /* Use fallbacks historical compatibility if nothing else exists */ ++ return aHomeDirURL + "/" + OUString::createFromAscii(type); ++} ++ + css::uno::Any Default::getPropertyValue(OUString const & PropertyName) + throw ( + css::beans::UnknownPropertyException, css::lang::WrappedTargetException, + css::uno::RuntimeException, std::exception) + { ++ if (PropertyName == "TemplatePathVariable") ++ { ++ OUString aDirURL = xdg_user_dir_lookup("Templates"); ++ css::uno::Any aValue(aDirURL); ++ return css::uno::makeAny(css::beans::Optional(true, aValue)); ++ } ++ ++ if (PropertyName == "WorkPathVariable") ++ { ++ OUString aDirURL = xdg_user_dir_lookup("Documents"); ++ css::uno::Any aValue(aDirURL); ++ return css::uno::makeAny(css::beans::Optional(true, aValue)); ++ } ++ + if ( PropertyName == "EnableATToolSupport" || + PropertyName == "ExternalMailer" || + PropertyName == "SourceViewFontHeight" || + PropertyName == "SourceViewFontName" || +- PropertyName == "TemplatePathVariable" || +- PropertyName == "WorkPathVariable" || + PropertyName == "ooInetFTPProxyName" || + PropertyName == "ooInetFTPProxyPort" || + PropertyName == "ooInetHTTPProxyName" || +@@ -172,6 +286,7 @@ css::uno::Any Default::getPropertyValue(OUString const & PropertyName) + { + return css::uno::makeAny(css::beans::Optional< css::uno::Any >()); + } ++ + throw css::beans::UnknownPropertyException( + PropertyName, static_cast< cppu::OWeakObject * >(this)); + } +@@ -209,11 +324,7 @@ css::uno::Reference< css::uno::XInterface > SAL_CALL createInstance( + + // Fall back to the default if the specific backend is not available: + css::uno::Reference< css::uno::XInterface > backend; +- if ( desktop == "GNOME" ) { +- backend = createBackend( +- context, +- "com.sun.star.configuration.backend.GconfBackend"); +- } else if ( desktop == "KDE" ) { ++ if ( desktop == "KDE" ) { + backend = createBackend( + context, + "com.sun.star.configuration.backend.KDEBackend"); +-- +2.7.4 + diff --git a/libreoffice.spec b/libreoffice.spec index 103f874..e45edf5 100644 --- a/libreoffice.spec +++ b/libreoffice.spec @@ -241,6 +241,7 @@ Patch11: 0001-Resolves-rhbz-1351224-wayland-grab-related-crashes.patch Patch12: 0001-Resolves-rhbz-1352965-gtk3-infinite-clipboard-recurs.patch Patch13: 0001-rhbz-1351292-correctly-set-edit-mode.patch Patch14: 0001-Related-rhbz-1351369-gtk3-clipboards-have-to-live-to.patch +Patch15: 0001-Related-rhbz-1065807-recover-using-xdg-templates-and.patch %if 0%{?rhel} # not upstreamed