[libreoffice/f19] Resolves: rhbz#1065807 search XDG defined 'Templates'

Caolán McNamara caolanm at fedoraproject.org
Tue Feb 25 10:54:15 UTC 2014


commit 12f43bd5a5cca857b7f9032cb9adb97079805ee2
Author: Caolán McNamara <caolanm at redhat.com>
Date:   Tue Feb 25 10:55:03 2014 +0000

    Resolves: rhbz#1065807 search XDG defined 'Templates'

 ...z-1065807-rework-i66157-for-multiple-writ.patch |  195 +++++++++++++++++++
 ...bz-1065807-use-xdg-Templates-for-default-.patch |  202 ++++++++++++++++++++
 ...list-common-lang-independant-template-dir.patch |   25 +++
 libreoffice.spec                                   |   11 +-
 4 files changed, 432 insertions(+), 1 deletions(-)
---
diff --git a/0001-Related-rhbz-1065807-rework-i66157-for-multiple-writ.patch b/0001-Related-rhbz-1065807-rework-i66157-for-multiple-writ.patch
new file mode 100644
index 0000000..87607fd
--- /dev/null
+++ b/0001-Related-rhbz-1065807-rework-i66157-for-multiple-writ.patch
@@ -0,0 +1,195 @@
+From bbf82f684060980d267733ee589d263d6b25340c Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Mon, 24 Feb 2014 15:27:36 +0000
+Subject: [PATCH] Related: rhbz#1065807 rework #i66157# for multiple writable
+ template dirs
+
+if there are multiple user-level template dirs then we should be able to
+remove/rename content in all of them, not just the default writable target.
+
+The target scenario here is to default to ~/Templates when it exists as the
+template dir, but to retain ~/.config/libreoffice/user/template in the dir for
+any pre-existing templates and to treat both as equivalent in terms of removing
+their content etc.
+
+i#66157# wanted to avoid remove extensions templates and other internal
+ones, so rework that logic to instead just be hands off internal templates
+and allow modification of the remainder
+
+Change-Id: I56afe991d4297ba692e914ae95ea02d68553f60a
+---
+ sfx2/source/doc/doctemplates.cxx | 80 +++++++++++++++++++++++++++++++++-------
+ 1 file changed, 66 insertions(+), 14 deletions(-)
+
+diff --git a/sfx2/source/doc/doctemplates.cxx b/sfx2/source/doc/doctemplates.cxx
+index 574232a..47b8fed 100644
+--- a/sfx2/source/doc/doctemplates.cxx
++++ b/sfx2/source/doc/doctemplates.cxx
+@@ -67,6 +67,7 @@
+ #include <com/sun/star/beans/PropertyValue.hpp>
+ #include <com/sun/star/uno/RuntimeException.hpp>
+ #include <com/sun/star/uno/XComponentContext.hpp>
++#include <com/sun/star/util/thePathSettings.hpp>
+ 
+ #include <rtl/ref.hxx>
+ #include <svtools/templatefoldercache.hxx>
+@@ -187,6 +188,7 @@ class SfxDocTplService_Impl
+ 
+     ::osl::Mutex                maMutex;
+     Sequence< OUString >        maTemplateDirs;
++    Sequence< OUString >        maInternalTemplateDirs;
+     OUString                    maRootURL;
+     NameList_Impl               maNames;
+     Locale                      maLocale;
+@@ -271,8 +273,16 @@ class SfxDocTplService_Impl
+ 
+     void                        updateData( DocTemplates_EntryData_Impl *pData );
+ 
++    //See: #i66157# and rhbz#1065807
++    //return which template dir the rURL is a subpath of
++    OUString                    findParentTemplateDir(const OUString& rURL) const;
++
++    //See: #i66157# and rhbz#1065807
++    //return true if rURL is a path (or subpath of) a dir which is not a user path
++    //which implies neither it or its contents can be removed
++    bool                        isInternalTemplateDir(const OUString& rURL) const;
+ public:
+-                                 SfxDocTplService_Impl( const uno::Reference< XComponentContext > & xContext );
++                                SfxDocTplService_Impl( const uno::Reference< XComponentContext > & xContext );
+                                 ~SfxDocTplService_Impl();
+ 
+     sal_Bool                    init() { if ( !mbIsInitialized ) init_Impl(); return mbIsInitialized; }
+@@ -552,7 +562,7 @@ void SfxDocTplService_Impl::getDirList()
+     // TODO/LATER: let use service, register listener
+     INetURLObject   aURL;
+     OUString    aDirs = SvtPathOptions().GetTemplatePath();
+-    sal_uInt16  nCount = comphelper::string::getTokenCount(aDirs, C_DELIM);
++    sal_Int32 nCount = comphelper::string::getTokenCount(aDirs, C_DELIM);
+ 
+     maTemplateDirs = Sequence< OUString >( nCount );
+ 
+@@ -560,7 +570,7 @@ void SfxDocTplService_Impl::getDirList()
+     const OUString aPrefix(
+         "vnd.sun.star.expand:"  );
+ 
+-    for ( sal_uInt16 i=0; i<nCount; i++ )
++    for (sal_Int32 i = 0; i < nCount; ++i)
+     {
+         aURL.SetSmartProtocol( INET_PROT_FILE );
+         aURL.SetURL( aDirs.getToken( i, C_DELIM ) );
+@@ -578,6 +588,23 @@ void SfxDocTplService_Impl::getDirList()
+ 
+     aValue <<= maTemplateDirs;
+ 
++    css::uno::Reference< css::util::XPathSettings > xPathSettings =
++        css::util::thePathSettings::get(mxContext);
++
++    // load internal paths
++    OUString sProp( "Template_internal" );
++    Any aAny = xPathSettings->getPropertyValue( sProp );
++    aAny >>= maInternalTemplateDirs;
++
++    nCount = maInternalTemplateDirs.getLength();
++    for (sal_Int32 i = 0; i < nCount; ++i)
++    {
++        //expand vnd.sun.star.expand: and remove "..." from them
++        //to normalize into the expected url patterns
++        maRelocator.makeRelocatableURL(maInternalTemplateDirs[i]);
++        maRelocator.makeAbsoluteURL(maInternalTemplateDirs[i]);
++    }
++
+     // Store the template dir list
+     setProperty( maRootContent, aPropName, aValue );
+ }
+@@ -1538,13 +1565,16 @@ sal_Bool SfxDocTplService_Impl::removeGroup( const OUString& rGroupName )
+ 
+         if ( !maTemplateDirs.getLength() )
+             return sal_False;
+-        OUString aGeneralTempPath = maTemplateDirs[ maTemplateDirs.getLength() - 1 ];
+ 
+         // check that the fs location is in writeble folder and this is not a "My templates" folder
+         INetURLObject aGroupParentFolder( aGroupTargetURL );
+-        if ( !aGroupParentFolder.removeSegment()
+-          || !::utl::UCBContentHelper::IsSubPath( aGeneralTempPath,
+-                                                      aGroupParentFolder.GetMainURL( INetURLObject::NO_DECODE ) ) )
++        if (!aGroupParentFolder.removeSegment())
++            return sal_False;
++
++        OUString aGeneralTempPath = findParentTemplateDir(
++            aGroupParentFolder.GetMainURL(INetURLObject::NO_DECODE));
++
++        if (aGeneralTempPath.isEmpty())
+             return sal_False;
+ 
+         // now get the content of the Group
+@@ -1652,14 +1682,14 @@ sal_Bool SfxDocTplService_Impl::renameGroup( const OUString& rOldName,
+ 
+     if ( !maTemplateDirs.getLength() )
+         return sal_False;
+-    OUString aGeneralTempPath = maTemplateDirs[ maTemplateDirs.getLength() - 1 ];
+ 
+     // check that the fs location is in writeble folder and this is not a "My templates" folder
+     INetURLObject aGroupParentFolder( aGroupTargetURL );
+-    if ( !aGroupParentFolder.removeSegment()
+-      || !::utl::UCBContentHelper::IsSubPath( aGeneralTempPath,
+-                                                  aGroupParentFolder.GetMainURL( INetURLObject::NO_DECODE ) ) )
++    if (!aGroupParentFolder.removeSegment() ||
++        isInternalTemplateDir(aGroupParentFolder.GetMainURL(INetURLObject::NO_DECODE)))
++    {
+         return sal_False;
++    }
+ 
+     // check that the group can be renamed ( all the contents must be in target location )
+     sal_Bool bCanBeRenamed = sal_False;
+@@ -1761,7 +1791,7 @@ sal_Bool SfxDocTplService_Impl::storeTemplate( const OUString& rGroupName,
+             aValue >>= aTemplateToRemoveTargetURL;
+ 
+         if ( aGroupTargetURL.isEmpty() || !maTemplateDirs.getLength()
+-          || (!aTemplateToRemoveTargetURL.isEmpty() && !::utl::UCBContentHelper::IsSubPath( maTemplateDirs[ maTemplateDirs.getLength() - 1 ], aTemplateToRemoveTargetURL )) )
++          || (!aTemplateToRemoveTargetURL.isEmpty() && isInternalTemplateDir(aTemplateToRemoveTargetURL)) )
+             return sal_False; // it is not allowed to remove the template
+     }
+ 
+@@ -2050,6 +2080,29 @@ sal_Bool SfxDocTplService_Impl::addTemplate( const OUString& rGroupName,
+     return sal_False;
+ }
+ 
++bool SfxDocTplService_Impl::isInternalTemplateDir(const OUString& rURL) const
++{
++    const sal_Int32 nDirs = maInternalTemplateDirs.getLength();
++    const OUString* pDirs = maInternalTemplateDirs.getConstArray();
++    for (sal_Int32 i = 0; i < nDirs; ++i, ++pDirs)
++    {
++        if (::utl::UCBContentHelper::IsSubPath(*pDirs, rURL))
++            return true;
++    }
++    return false;
++}
++
++OUString SfxDocTplService_Impl::findParentTemplateDir(const OUString& rURL) const
++{
++    const sal_Int32 nDirs = maTemplateDirs.getLength();
++    const OUString* pDirs = maTemplateDirs.getConstArray();
++    for (sal_Int32 i = 0; i < nDirs; ++i, ++pDirs)
++    {
++        if (::utl::UCBContentHelper::IsSubPath(*pDirs, rURL))
++            return *pDirs;
++    }
++    return OUString();
++}
+ 
+ sal_Bool SfxDocTplService_Impl::removeTemplate( const OUString& rGroupName,
+                                                 const OUString& rTemplateName )
+@@ -2091,8 +2144,7 @@ sal_Bool SfxDocTplService_Impl::removeTemplate( const OUString& rGroupName,
+     // delete the target template
+     if ( !aTargetURL.isEmpty() )
+     {
+-        if ( !maTemplateDirs.getLength()
+-          || !::utl::UCBContentHelper::IsSubPath( maTemplateDirs[ maTemplateDirs.getLength() - 1 ], aTargetURL ) )
++        if (isInternalTemplateDir(aTargetURL))
+             return sal_False;
+ 
+         removeContent( aTargetURL );
+-- 
+1.8.5.3
+
diff --git a/0001-Resolves-rhbz-1065807-use-xdg-Templates-for-default-.patch b/0001-Resolves-rhbz-1065807-use-xdg-Templates-for-default-.patch
new file mode 100644
index 0000000..be31624
--- /dev/null
+++ b/0001-Resolves-rhbz-1065807-use-xdg-Templates-for-default-.patch
@@ -0,0 +1,202 @@
+From 838b77f5f3d6d8fd98891e99a23ff78a6a357cb2 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Mon, 24 Feb 2014 11:38:13 +0000
+Subject: [PATCH] Resolves: rhbz#1065807 use xdg ~/Templates for default
+ Template location
+
+(if it exists)
+
+Change-Id: I98fc9fd54d1f56c8bed24ce4d2ebf53756ded2cc
+---
+ framework/source/services/pathsettings.cxx         |  6 +++
+ .../registry/data/org/openoffice/Office/Paths.xcu  | 13 +++++++
+ shell/source/backends/desktopbe/desktopbackend.cxx | 21 ++++++++---
+ shell/source/backends/gconfbe/gconfaccess.cxx      | 43 +++++++++++++++-------
+ shell/source/backends/gconfbe/gconfaccess.hxx      |  1 +
+ 5 files changed, 66 insertions(+), 18 deletions(-)
+
+diff --git a/framework/source/services/pathsettings.cxx b/framework/source/services/pathsettings.cxx
+index 90d61d2..105c5a6 100644
+--- a/framework/source/services/pathsettings.cxx
++++ b/framework/source/services/pathsettings.cxx
+@@ -644,6 +644,12 @@ PathSettings::PathInfo PathSettings::impl_readNewFormat(const OUString& sPath)
+     // read the writeable path
+     xPath->getByName(CFGPROP_WRITEPATH) >>= aPathVal.sWritePath;
+ 
++    // avoid duplicates, by removing the writeable path from
++    // the user defined path list if it happens to be there too
++    OUStringList::iterator aI = aPathVal.lUserPaths.find(aPathVal.sWritePath);
++    if (aI != aPathVal.lUserPaths.end())
++        aPathVal.lUserPaths.erase(aI);
++
+     // read state props
+     xPath->getByName(CFGPROP_ISSINGLEPATH) >>= aPathVal.bIsSinglePath;
+ 
+diff --git a/officecfg/registry/data/org/openoffice/Office/Paths.xcu b/officecfg/registry/data/org/openoffice/Office/Paths.xcu
+index 4b5ec7d..2ef605e 100644
+--- a/officecfg/registry/data/org/openoffice/Office/Paths.xcu
++++ b/officecfg/registry/data/org/openoffice/Office/Paths.xcu
+@@ -160,8 +160,21 @@
+       <node oor:name="InternalPaths">
+         <node oor:name="$(insturl)/@LIBO_SHARE_FOLDER@/template/$(vlang)" oor:op="fuse"/>
+       </node>
++      <!--
++           On unix check of we have a ~/Templates and use that as the write path.
++           On other platforms, or if ~/Templates doesn't exist, use the traditional
++           $(userurl)/template path.
++
++           If we end up using the new ~/Templates as the write path, we then want
++           to have $(userurl)/template in our userpath for any templates left behind
++           in that dir.
++      -->
+       <prop oor:name="WritePath">
+         <value>$(userurl)/template</value>
++        <value install:module="unixdesktop" oor:external="com.sun.star.configuration.backend.DesktopBackend TemplatePathVariable"/>
++      </prop>
++      <prop oor:name="UserPaths">
++        <value install:module="unixdesktop">$(userurl)/template</value>
+       </prop>
+     </node>
+     <node oor:name="UIConfig" oor:op="fuse" oor:mandatory="true">
+diff --git a/shell/source/backends/desktopbe/desktopbackend.cxx b/shell/source/backends/desktopbe/desktopbackend.cxx
+index 8233bff..0acf337 100644
+--- a/shell/source/backends/desktopbe/desktopbackend.cxx
++++ b/shell/source/backends/desktopbe/desktopbackend.cxx
+@@ -153,11 +153,22 @@ css::uno::Any Default::getPropertyValue(OUString const & PropertyName)
+         css::beans::UnknownPropertyException, css::lang::WrappedTargetException,
+         css::uno::RuntimeException)
+ {
+-    if ( PropertyName == "EnableATToolSupport" || PropertyName == "ExternalMailer" || PropertyName == "SourceViewFontHeight"
+-      || PropertyName == "SourceViewFontName" || PropertyName == "WorkPathVariable" || PropertyName == "ooInetFTPProxyName"
+-      || PropertyName == "ooInetFTPProxyPort" || PropertyName == "ooInetHTTPProxyName" || PropertyName == "ooInetHTTPProxyPort"
+-      || PropertyName == "ooInetHTTPSProxyName" || PropertyName == "ooInetHTTPSProxyPort" || PropertyName == "ooInetNoProxy"
+-      || PropertyName == "ooInetProxyType" || PropertyName == "givenname" || PropertyName == "sn" )
++    if ( PropertyName == "EnableATToolSupport" ||
++         PropertyName == "ExternalMailer" ||
++         PropertyName == "SourceViewFontHeight" ||
++         PropertyName == "SourceViewFontName" ||
++         PropertyName == "TemplatePathVariable" ||
++         PropertyName == "WorkPathVariable" ||
++         PropertyName == "ooInetFTPProxyName" ||
++         PropertyName == "ooInetFTPProxyPort" ||
++         PropertyName == "ooInetHTTPProxyName" ||
++         PropertyName == "ooInetHTTPProxyPort" ||
++         PropertyName == "ooInetHTTPSProxyName" ||
++         PropertyName == "ooInetHTTPSProxyPort" ||
++         PropertyName == "ooInetNoProxy" ||
++         PropertyName == "ooInetProxyType" ||
++         PropertyName == "givenname" ||
++         PropertyName == "sn" )
+     {
+         return css::uno::makeAny(css::beans::Optional< css::uno::Any >());
+     }
+diff --git a/shell/source/backends/gconfbe/gconfaccess.cxx b/shell/source/backends/gconfbe/gconfaccess.cxx
+index 8cf9f4b..1bdad66 100644
+--- a/shell/source/backends/gconfbe/gconfaccess.cxx
++++ b/shell/source/backends/gconfbe/gconfaccess.cxx
+@@ -23,6 +23,7 @@
+ #include <string.h>
+ 
+ #include "com/sun/star/uno/RuntimeException.hpp"
++#include "com/sun/star/uno/Sequence.hxx"
+ #include "osl/file.hxx"
+ #include "osl/security.hxx"
+ #include "osl/thread.h"
+@@ -189,19 +190,10 @@ static OUString xdg_user_dir_lookup (const char *type)
+         if( osl::FileBase::E_None == aDocumentsDir.open() )
+             return aDocumentsDirURL;
+     }
+-    /* Special case desktop for historical compatibility */
+-    if (strcmp (type, "DESKTOP") == 0)
+-    {
+-        return aHomeDirURL + "/Desktop";
+-    }
+-    else
+-    {
+-        return aHomeDirURL + "/Documents";
+-    }
++    /* Use fallbacks historical compatibility if nothing else exists */
++    return aHomeDirURL + "/" + OUString::createFromAscii(type);
+ }
+ 
+-
+-
+ uno::Any makeAnyOfGconfValue( GConfValue *pGconfValue )
+ {
+     switch( pGconfValue->type )
+@@ -317,11 +309,18 @@ uno::Any translateToOOo( const ConfigurationValue &rValue, GConfValue *pGconfVal
+ 
+         case SETTING_WORK_DIRECTORY:
+         {
+-            OUString aDocumentsDirURL = xdg_user_dir_lookup("DOCUMENTS");
++            OUString aDocumentsDirURL = xdg_user_dir_lookup("Documents");
+ 
+             return uno::makeAny( aDocumentsDirURL );
+         }
+ 
++        case SETTING_TEMPLATE_DIRECTORY:
++        {
++            OUString aTemplatesDirURL = xdg_user_dir_lookup("Templates");
++
++            return uno::makeAny( aTemplatesDirURL );
++        }
++
+         case SETTING_USER_GIVENNAME:
+         {
+             OUString aCompleteName( OStringToOUString(
+@@ -392,7 +391,7 @@ sal_Bool SAL_CALL isDependencySatisfied( GConfClient* pClient, const Configurati
+ 
+         case SETTING_WORK_DIRECTORY:
+         {
+-            OUString aDocumentsDirURL = xdg_user_dir_lookup("DOCUMENTS");
++            OUString aDocumentsDirURL = xdg_user_dir_lookup("Documents");
+             osl::Directory aDocumentsDir( aDocumentsDirURL );
+ 
+             if( osl::FileBase::E_None == aDocumentsDir.open() )
+@@ -400,6 +399,16 @@ sal_Bool SAL_CALL isDependencySatisfied( GConfClient* pClient, const Configurati
+         }
+             break;
+ 
++        case SETTING_TEMPLATE_DIRECTORY:
++        {
++            OUString aTemplatesDirURL = xdg_user_dir_lookup("Templates");
++            osl::Directory aTemplatesDir( aTemplatesDirURL );
++
++            if( osl::FileBase::E_None == aTemplatesDir.open() )
++                return sal_True;
++        }
++            break;
++
+         case SETTING_USER_GIVENNAME:
+         {
+             OUString aCompleteName( OStringToOUString(
+@@ -563,6 +572,14 @@ ConfigurationValue const ConfigurationValues[] =
+     },
+ 
+     {
++        SETTING_TEMPLATE_DIRECTORY,
++        "/desktop/gnome/url-handlers/mailto/command", // dummy
++        RTL_CONSTASCII_STRINGPARAM("TemplatePathVariable"),
++        sal_True,
++        SETTING_TEMPLATE_DIRECTORY, // so that the existence of the dir can be checked
++    },
++
++    {
+         SETTING_USER_GIVENNAME,
+         "/desktop/gnome/url-handlers/mailto/command", // dummy
+         RTL_CONSTASCII_STRINGPARAM("givenname"),
+diff --git a/shell/source/backends/gconfbe/gconfaccess.hxx b/shell/source/backends/gconfbe/gconfaccess.hxx
+index 7f0a52a..3fcd217 100644
+--- a/shell/source/backends/gconfbe/gconfaccess.hxx
++++ b/shell/source/backends/gconfbe/gconfaccess.hxx
+@@ -47,6 +47,7 @@ enum ConfigurationSetting
+     SETTING_ENABLE_ACCESSIBILITY,
+     SETTING_MAILER_PROGRAM,
+     SETTING_WORK_DIRECTORY,
++    SETTING_TEMPLATE_DIRECTORY,
+     SETTING_SOURCEVIEWFONT_NAME,
+     SETTING_SOURCEVIEWFONT_HEIGHT,
+     SETTING_USER_GIVENNAME,
+-- 
+1.8.5.3
+
diff --git a/0001-explictly-list-common-lang-independant-template-dir.patch b/0001-explictly-list-common-lang-independant-template-dir.patch
new file mode 100644
index 0000000..4bb15db
--- /dev/null
+++ b/0001-explictly-list-common-lang-independant-template-dir.patch
@@ -0,0 +1,25 @@
+From 6f48d0bb2d3f3b4e4d3e46d3a5cdeaa552df1933 Mon Sep 17 00:00:00 2001
+From: =?UTF-8?q?Caol=C3=A1n=20McNamara?= <caolanm at redhat.com>
+Date: Tue, 25 Feb 2014 09:55:48 +0000
+Subject: [PATCH] explictly list common lang-independant template dir
+
+Change-Id: I50d8efe46fc2eb3dfe615ad1f6eb7ee03cdcd29a
+---
+ officecfg/registry/data/org/openoffice/Office/Paths.xcu | 1 +
+ 1 file changed, 1 insertion(+)
+
+diff --git a/officecfg/registry/data/org/openoffice/Office/Paths.xcu b/officecfg/registry/data/org/openoffice/Office/Paths.xcu
+index 2ef605e..2a9eb5c 100644
+--- a/officecfg/registry/data/org/openoffice/Office/Paths.xcu
++++ b/officecfg/registry/data/org/openoffice/Office/Paths.xcu
+@@ -158,6 +158,7 @@
+     </node>
+     <node oor:name="Template" oor:op="fuse" oor:mandatory="true">
+       <node oor:name="InternalPaths">
++        <node oor:name="$(insturl)/@LIBO_SHARE_FOLDER@/template/common" oor:op="fuse"/>
+         <node oor:name="$(insturl)/@LIBO_SHARE_FOLDER@/template/$(vlang)" oor:op="fuse"/>
+       </node>
+       <!--
+-- 
+1.8.5.3
+
diff --git a/libreoffice.spec b/libreoffice.spec
index d6cb4c5..c1c4eda 100644
--- a/libreoffice.spec
+++ b/libreoffice.spec
@@ -42,7 +42,7 @@ Summary:        Free Software Productivity Suite
 Name:           libreoffice
 Epoch:          1
 Version:        %{libo_version}.3
-Release:        2%{?libo_prerelease}%{?dist}
+Release:        3%{?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
 Group:          Applications/Productivity
 URL:            http://www.libreoffice.org/default/
@@ -267,6 +267,9 @@ Patch27: 0001-Related-rhbz-1039517-ml-short-cut-keys-are-unavailab.patch
 Patch28: 0001-Related-rhbz-1047871-conditional-formatting-doesn-t-.patch
 Patch29: 0001-Resolves-rhbz-1050162-don-t-draw-to-NULL-window.patch
 Patch30: 0001-Resolves-rhbz-1010995-div-by-0-on-some-bizarre-corne.patch
+Patch31: 0001-Related-rhbz-1065807-rework-i66157-for-multiple-writ.patch
+Patch32: 0001-Resolves-rhbz-1065807-use-xdg-Templates-for-default-.patch
+Patch33: 0001-explictly-list-common-lang-independant-template-dir.patch
 
 %define instdir %{_libdir}
 %define baseinstdir %{instdir}/libreoffice
@@ -1061,6 +1064,9 @@ mv -f redhat.soc extras/source/palettes/standard.soc
 %patch28 -p1 -b .rhbz-1047871-conditional-formatting-doesn-t-.patch
 %patch29 -p1 -b .Resolves-rhbz-1050162-don-t-draw-to-NULL-window.patch
 %patch30 -p1 -b .Resolves-rhbz-1010995-div-by-0-on-some-bizarre-corne.patch
+%patch31 -p1 -b .rhbz-1065807-rework-i66157-for-multiple-writ.patch
+%patch32 -p1 -b .rhbz-1065807-use-xdg-Templates-for-default-.patch
+%patch33 -p1 -b .explictly-list-common-lang-independant-template-dir.patch
 
 # TODO: check this
 # these are horribly incomplete--empty translations and copied english
@@ -2156,6 +2162,9 @@ update-desktop-database %{_datadir}/applications &> /dev/null || :
 %endif
 
 %changelog
+* Tue Feb 25 2014 Caolán McNamara <caolanm at redhat.com> - 1:4.1.5.3-3-UNBUILT
+- Resolves: rhbz#1065807 search XDG defined "Templates"
+
 * Tue Feb 18 2014 David Tardon <dtardon at redhat.com> - 1:4.1.5.3-2
 - Resolves: rhbz#1065925 [abrt] libreoffice-core: Divide(): soffice.bin killed
   by SIGFPE


More information about the scm-commits mailing list