Resolves: tdf#132143 make placeholder nodes unselectable
Change-Id: I13bcb43122f6b82114f287f13da20a584bf5f349
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/92862
Tested-by: Jenkins
Reviewed-by: Caolán McNamara <caolanm@redhat.com>
diff --git a/include/vcl/viewdataentry.hxx b/include/vcl/viewdataentry.hxx
index 85f4d32..74d7d22 100644
--- a/include/vcl/viewdataentry.hxx
+++ b/include/vcl/viewdataentry.hxx
@@ -72,6 +72,7 @@ public:
void SetFocus( bool bFocus );
void SetSelected( bool bSelected );
void SetExpanded( bool bExpanded );
void SetSelectable( bool bSelectable );
void SetDragTarget( bool bDragTarget )
{
mbDragTarget = bDragTarget;
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index 5313ae3..ebf0b49 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -3492,7 +3492,9 @@ public:
if (bChildrenOnDemand)
{
m_xTreeView->InsertEntry("<dummy>", pEntry, false, 0, nullptr);
SvTreeListEntry* pPlaceHolder = m_xTreeView->InsertEntry("<dummy>", pEntry, false, 0, nullptr);
SvViewDataEntry* pViewData = m_xTreeView->GetViewDataEntry(pPlaceHolder);
pViewData->SetSelectable(false);
}
enable_notify_events();
}
@@ -4259,7 +4261,11 @@ public:
SvTreeListEntry* pPlaceHolder = GetPlaceHolderChild(rVclIter.iter);
if (bChildrenOnDemand && !pPlaceHolder)
m_xTreeView->InsertEntry("<dummy>", rVclIter.iter, false, 0, nullptr);
{
pPlaceHolder = m_xTreeView->InsertEntry("<dummy>", rVclIter.iter, false, 0, nullptr);
SvViewDataEntry* pViewData = m_xTreeView->GetViewDataEntry(pPlaceHolder);
pViewData->SetSelectable(false);
}
else if (!bChildrenOnDemand && pPlaceHolder)
m_xTreeView->RemoveEntry(pPlaceHolder);
@@ -4801,7 +4807,9 @@ IMPL_LINK_NOARG(SalInstanceTreeView, ExpandingHdl, SvTreeListBox*, bool)
//expand disallowed, restore placeholder
if (!bRet)
{
m_xTreeView->InsertEntry("<dummy>", pEntry, false, 0, nullptr);
pPlaceHolder = m_xTreeView->InsertEntry("<dummy>", pEntry, false, 0, nullptr);
SvViewDataEntry* pViewData = m_xTreeView->GetViewDataEntry(pPlaceHolder);
pViewData->SetSelectable(false);
}
m_aExpandingPlaceHolderParents.erase(pEntry);
}
diff --git a/vcl/source/treelist/viewdataentry.cxx b/vcl/source/treelist/viewdataentry.cxx
index bde20c3..76a3fc7 100644
--- a/vcl/source/treelist/viewdataentry.cxx
+++ b/vcl/source/treelist/viewdataentry.cxx
@@ -66,6 +66,11 @@ void SvViewDataEntry::SetExpanded( bool bExpanded )
mbExpanded = bExpanded;
}
void SvViewDataEntry::SetSelectable( bool bSelectable )
{
mbSelectable = bSelectable;
}
void SvViewDataEntry::Init(size_t nSize)
{
maItems.resize(nSize);