diff options
author | Tor Lillqvist <tml@collabora.com> | 2014-08-19 20:16:53 +0300 |
---|---|---|
committer | Andras Timar <andras.timar@collabora.com> | 2014-08-21 21:24:51 +0200 |
commit | ef639c610a201b4c383eaea1e83e17aa221ef6f9 (patch) | |
tree | 28d78614d927cb5eeda502d977a692498ff04970 /framework | |
parent | f0cedfc5086794f570fcdf6eb56c593ff66df112 (diff) |
bnc#529470: I can't remove a path in AutoText dialog
This is, not surprisingly, somewhat weird code, but I think this patch does
what is necessary, it does fix the bug.
Change-Id: Ie1947b311f1455ba48a904f5ef42ad92899fac31
Reviewed-on: https://gerrit.libreoffice.org/11032
Reviewed-by: Andras Timar <andras.timar@collabora.com>
Tested-by: Andras Timar <andras.timar@collabora.com>
Diffstat (limited to 'framework')
-rw-r--r-- | framework/inc/services/pathsettings.hxx | 4 | ||||
-rw-r--r-- | framework/source/services/pathsettings.cxx | 32 |
2 files changed, 31 insertions, 5 deletions
diff --git a/framework/inc/services/pathsettings.hxx b/framework/inc/services/pathsettings.hxx index 34e65f5858eb..352e824408b5 100644 --- a/framework/inc/services/pathsettings.hxx +++ b/framework/inc/services/pathsettings.hxx @@ -372,8 +372,8 @@ class PathSettings : // base classes So real user defined paths can be extracted from the list of fix internal paths ! */ - void impl_purgeKnownPaths(const PathSettings::PathInfo& rPath, - OUStringList& lList); + void impl_purgeKnownPaths(PathSettings::PathInfo& rPath, + OUStringList& lList); /** rebuild the member m_lPropDesc using the path list m_lPaths. */ void impl_rebuildPropertyDescriptor(); diff --git a/framework/source/services/pathsettings.cxx b/framework/source/services/pathsettings.cxx index 15fb3c05e89f..77d2224c3885 100644 --- a/framework/source/services/pathsettings.cxx +++ b/framework/source/services/pathsettings.cxx @@ -694,10 +694,13 @@ OUStringList PathSettings::impl_convertOldStyle2Path(const OUString& sOldStylePa } //----------------------------------------------------------------------------- -void PathSettings::impl_purgeKnownPaths(const PathSettings::PathInfo& rPath, - OUStringList& lList) +void PathSettings::impl_purgeKnownPaths(PathSettings::PathInfo& rPath, + OUStringList& lList) { - OUStringList::const_iterator pIt; + OUStringList::iterator pIt; + + // Erase items in the internal path list from lList. + // Also erase items in the internal path list from the user path list. for ( pIt = rPath.lInternalPaths.begin(); pIt != rPath.lInternalPaths.end() ; ++pIt ) @@ -706,7 +709,29 @@ void PathSettings::impl_purgeKnownPaths(const PathSettings::PathInfo& rPath, OUStringList::iterator pItem = lList.find(rItem); if (pItem != lList.end()) lList.erase(pItem); + pItem = rPath.lUserPaths.find(rItem); + if (pItem != rPath.lUserPaths.end()) + rPath.lUserPaths.erase(pItem); + } + + // Erase itsems not in lList from the user path list. + pIt = rPath.lUserPaths.begin(); + while ( pIt != rPath.lUserPaths.end() ) + { + const OUString& rItem = *pIt; + OUStringList::iterator pItem = lList.find(rItem); + if ( pItem == lList.end() ) + { + rPath.lUserPaths.erase(pIt); + pIt = rPath.lUserPaths.begin(); + } + else + { + ++pIt; + } } + + // Erase items in the user path list from lList. for ( pIt = rPath.lUserPaths.begin(); pIt != rPath.lUserPaths.end() ; ++pIt ) @@ -717,6 +742,7 @@ void PathSettings::impl_purgeKnownPaths(const PathSettings::PathInfo& rPath, lList.erase(pItem); } + // Erase the write path from lList OUStringList::iterator pItem = lList.find(rPath.sWritePath); if (pItem != lList.end()) lList.erase(pItem); |