summaryrefslogtreecommitdiff
path: root/cui
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2019-11-25 10:20:32 +0000
committerCaolán McNamara <caolanm@redhat.com>2019-11-28 09:54:43 +0100
commita655117db4b25f8b06a947295058e7257e3b45dd (patch)
treed9ae36955454a73d71b4894099d42a243fa8d41f /cui
parentf8719f68f8c073c0ad473507b16fc4bd99e79baa (diff)
tdf#126043 load the xml just once
Change-Id: I98cfeeeddf2fb2d86259a11368bf3db752f5e556 Reviewed-on: https://gerrit.libreoffice.org/83656 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com> (cherry picked from commit 7c949066e6aae6ffe3b88d6500e70cdb7cc03b69) Reviewed-on: https://gerrit.libreoffice.org/83902
Diffstat (limited to 'cui')
-rw-r--r--cui/source/customize/SvxNotebookbarConfigPage.cxx28
-rw-r--r--cui/source/inc/SvxNotebookbarConfigPage.hxx3
2 files changed, 17 insertions, 14 deletions
diff --git a/cui/source/customize/SvxNotebookbarConfigPage.cxx b/cui/source/customize/SvxNotebookbarConfigPage.cxx
index 70c9c5e10510..b74353a95758 100644
--- a/cui/source/customize/SvxNotebookbarConfigPage.cxx
+++ b/cui/source/customize/SvxNotebookbarConfigPage.cxx
@@ -417,31 +417,28 @@ void SvxNotebookbarConfigPage::searchNodeandAttribute(std::vector<NotebookbarEnt
}
}
-void SvxNotebookbarConfigPage::FillFunctionsList(std::vector<NotebookbarEntries>& aEntries,
+void SvxNotebookbarConfigPage::FillFunctionsList(xmlNodePtr pRootNodePtr,
+ std::vector<NotebookbarEntries>& aEntries,
std::vector<CategoriesEntries>& aCategoryList,
OUString& sActiveCategory)
{
- OString sUIFileUIPath = CustomNotebookbarGenerator::getSystemPath(
- CustomNotebookbarGenerator::getCustomizedUIPath());
- xmlDocPtr pDoc = xmlParseFile(sUIFileUIPath.getStr());
- xmlNodePtr pNodePtr = xmlDocGetRootElement(pDoc);
-
CategoriesEntries aCurItemEntry;
- searchNodeandAttribute(aEntries, aCategoryList, sActiveCategory, aCurItemEntry, pNodePtr,
+ searchNodeandAttribute(aEntries, aCategoryList, sActiveCategory, aCurItemEntry, pRootNodePtr,
false);
- if (pDoc != nullptr)
- {
- xmlFreeDoc(pDoc);
- }
}
void SvxNotebookbarConfigPage::SelectElement()
{
+ OString sUIFileUIPath = CustomNotebookbarGenerator::getSystemPath(
+ CustomNotebookbarGenerator::getCustomizedUIPath());
+ xmlDocPtr pDoc = xmlParseFile(sUIFileUIPath.getStr());
+ xmlNodePtr pNodePtr = xmlDocGetRootElement(pDoc);
+
m_xContentsListBox->clear();
std::vector<NotebookbarEntries> aEntries;
std::vector<CategoriesEntries> aCategoryList;
OUString sActiveCategory = m_xTopLevelListBox->get_active_id();
- FillFunctionsList(aEntries, aCategoryList, sActiveCategory);
+ FillFunctionsList(pNodePtr, aEntries, aCategoryList, sActiveCategory);
if (m_xTopLevelListBox->get_count() == 1)
{
@@ -463,7 +460,7 @@ void SvxNotebookbarConfigPage::SelectElement()
std::vector<NotebookbarEntries> aGtkEntries;
sal_Int32 rPos = 1;
sActiveCategory = aEntries[nIdx].sUIItemId.getToken(rPos, ':', rPos);
- FillFunctionsList(aGtkEntries, aCategoryList, sActiveCategory);
+ FillFunctionsList(pNodePtr, aGtkEntries, aCategoryList, sActiveCategory);
for (std::size_t Idx = 0; Idx < aGtkEntries.size(); Idx++)
aTempEntries.push_back(aGtkEntries[Idx]);
aGtkEntries.clear();
@@ -502,6 +499,11 @@ void SvxNotebookbarConfigPage::SelectElement()
rTreeView.thaw();
aEntries.clear();
+
+ if (pDoc != nullptr)
+ {
+ xmlFreeDoc(pDoc);
+ }
}
SvxNotebookbarEntriesListBox::SvxNotebookbarEntriesListBox(std::unique_ptr<weld::TreeView> xParent,
diff --git a/cui/source/inc/SvxNotebookbarConfigPage.hxx b/cui/source/inc/SvxNotebookbarConfigPage.hxx
index 7793d6e6415b..3c657db3ca84 100644
--- a/cui/source/inc/SvxNotebookbarConfigPage.hxx
+++ b/cui/source/inc/SvxNotebookbarConfigPage.hxx
@@ -60,7 +60,8 @@ public:
SaveInData* CreateSaveInData(const css::uno::Reference<css::ui::XUIConfigurationManager>&,
const css::uno::Reference<css::ui::XUIConfigurationManager>&,
const OUString& aModuleId, bool docConfig) override;
- static void FillFunctionsList(std::vector<NotebookbarEntries>& aEntries,
+ static void FillFunctionsList(xmlNodePtr pRootNodePtr,
+ std::vector<NotebookbarEntries>& aEntries,
std::vector<CategoriesEntries>& aCategoryList,
OUString& sActiveCategory);
static void searchNodeandAttribute(std::vector<NotebookbarEntries>& aEntries,