summaryrefslogtreecommitdiff
path: root/sc
diff options
context:
space:
mode:
Diffstat (limited to 'sc')
-rw-r--r--sc/source/ui/cctrl/checklistmenu.cxx4
-rw-r--r--sc/source/ui/navipi/content.cxx59
2 files changed, 31 insertions, 32 deletions
diff --git a/sc/source/ui/cctrl/checklistmenu.cxx b/sc/source/ui/cctrl/checklistmenu.cxx
index 201313f0e41e..55072f5d5f9c 100644
--- a/sc/source/ui/cctrl/checklistmenu.cxx
+++ b/sc/source/ui/cctrl/checklistmenu.cxx
@@ -802,7 +802,7 @@ IMPL_LINK_NOARG(ScCheckListMenuControl, EdModifyHdl, weld::Entry&, void)
size_t nIndex = aShownIndexes[i];
insertMember(*mpChecks, rIter, maMembers[nIndex], true);
++nSelCount;
- }, &aFixedWidths);
+ }, nullptr, &aFixedWidths);
}
}
@@ -1256,7 +1256,7 @@ size_t ScCheckListMenuControl::initMembers(int nMaxMemberWidth)
insertMember(*mpChecks, rIter, maMembers[i], maMembers[i].mbVisible);
if (maMembers[i].mbVisible)
++nVisMemCount;
- }, &aFixedWidths);
+ }, nullptr, &aFixedWidths);
}
else
{
diff --git a/sc/source/ui/navipi/content.cxx b/sc/source/ui/navipi/content.cxx
index 6f4d92198934..53b4e413de50 100644
--- a/sc/source/ui/navipi/content.cxx
+++ b/sc/source/ui/navipi/content.cxx
@@ -879,52 +879,51 @@ void ScContentTree::GetDrawNames( ScContentId nType )
if (!pDoc)
return;
- // iterate in flat mode for groups
- SdrIterMode eIter = ( nType == ScContentId::DRAWING ) ? SdrIterMode::Flat : SdrIterMode::DeepNoGroups;
-
ScDrawLayer* pDrawLayer = pDoc->GetDrawLayer();
+ if (!pDrawLayer)
+ return;
+
SfxObjectShell* pShell = pDoc->GetDocumentShell();
- if (!(pDrawLayer && pShell))
+ if (!pShell)
return;
+ // iterate in flat mode for groups
+ SdrIterMode eIter = ( nType == ScContentId::DRAWING ) ? SdrIterMode::Flat : SdrIterMode::DeepNoGroups;
+
+ std::vector<OUString> aNames;
SCTAB nTabCount = pDoc->GetTableCount();
- int treeNodeCount = 0;
for (SCTAB nTab=0; nTab<nTabCount; nTab++)
{
SdrPage* pPage = pDrawLayer->GetPage(static_cast<sal_uInt16>(nTab));
OSL_ENSURE(pPage,"Page ?");
- if (pPage)
+ if (!pPage)
+ continue;
+ SdrObjListIter aIter(pPage, eIter);
+ SdrObject* pObject = aIter.Next();
+ while (pObject)
{
- SdrObjListIter aIter( pPage, eIter );
- SdrObject* pObject = aIter.Next();
- while (pObject)
+ if (IsPartOfType(nType, pObject->GetObjIdentifier()))
{
- if ( IsPartOfType( nType, pObject->GetObjIdentifier() ) )
+ OUString aName = ScDrawLayer::GetVisibleName(pObject);
+ if (!aName.isEmpty())
+ aNames.push_back(aName);
+ if (aNames.size() > MAX_TREE_NODES)
{
- OUString aName = ScDrawLayer::GetVisibleName( pObject );
- if (!aName.isEmpty())
- {
- weld::TreeIter* pParent = m_aRootNodes[nType].get();
- if (pParent)
- {
- m_xTreeView->insert(pParent, -1, &aName, nullptr, nullptr, nullptr, false, m_xScratchIter.get());
- m_xTreeView->set_sensitive(*m_xScratchIter, true);
- treeNodeCount++;
- if (treeNodeCount > MAX_TREE_NODES)
- {
- SAL_WARN("sc", "too many tree nodes, ignoring the rest");
- return;
- }
- }//end if parent
- else
- SAL_WARN("sc", "InsertContent without parent");
- }
+ SAL_WARN("sc", "too many tree nodes, ignoring the rest");
+ break;
}
-
- pObject = aIter.Next();
}
+ pObject = aIter.Next();
}
}
+
+ weld::TreeIter* pParent = m_aRootNodes[nType].get();
+ assert(pParent && "InsertContent without parent");
+ // insert all of these in one go under pParent
+ m_xTreeView->bulk_insert_for_each(aNames.size(), [this, &aNames](weld::TreeIter& rIter, int nIndex) {
+ m_xTreeView->set_text(rIter, aNames[nIndex]);
+ m_xTreeView->set_sensitive(rIter, true);
+ }, pParent);
}
void ScContentTree::GetGraphicNames()