[REVIEW-3-5] fdo#37593 Make sure needsUpdate compares canonicalized paths

Stephan Bergmann sbergman at redhat.com
Fri Mar 16 07:33:45 PDT 2012


Please consider the below fix for 
<https://bugs.freedesktop.org/show_bug.cgi?id=37593> "'File > New > 
Template' no longer remembers my last open folder" for inclusion in 
libreoffice-3-5.

Stephan

On 03/16/2012 03:03 PM, Stephan Bergmann wrote:
> commit 32a5ad89a505be22fb8ca0b990a8991a7de6453a
> Author: Stephan Bergmann<sbergman at redhat.com>
> Date:   Fri Mar 16 14:57:51 2012 +0100
>
>      fdo#37593 Make sure needsUpdate compares canonicalized paths
>
>      ...so that it does not erroneously always claim an update is needed, so that
>      SvtDocumentTemplateDialog::UpdateHdl_Impl does not always jump back to
>      OpenTemplateRoot() shortly after opening the dialog (and thus jumps away from
>      the last remembered folder).
>
> diff --git a/svtools/source/misc/templatefoldercache.cxx b/svtools/source/misc/templatefoldercache.cxx
> index d7a5679..1486fb2 100644
> --- a/svtools/source/misc/templatefoldercache.cxx
> +++ b/svtools/source/misc/templatefoldercache.cxx
> @@ -693,6 +693,17 @@ namespace svt
>           {
>               String sTemplatePath( aDirs.getToken(0, ';', nIndex) );
>               sTemplatePath = aPathOptions.ExpandMacros( sTemplatePath );
> +
> +            // Make sure excess ".." path segments (from expanding bootstrap
> +            // variables in paths) are normalized in the same way they are
> +            // normalized for paths read from the .templdir.cache file (where
> +            // paths have gone through makeRelocatable URL on writing out and
> +            // then through makeAbsoluteURL when reading back in), as otherwise
> +            // equalStates() in needsUpdate() could erroneously consider
> +            // m_aCurrentState and m_aPreviousState as different:
> +            sTemplatePath = getOfficeInstDirs()->makeAbsoluteURL(
> +                getOfficeInstDirs()->makeRelocatableURL(sTemplatePath));
> +
>               // create a new entry
>               m_aCurrentState.push_back( new TemplateContent( INetURLObject( sTemplatePath ) ) );
>               TemplateFolderContent::iterator aCurrentRoot = m_aCurrentState.end();


More information about the LibreOffice mailing list