summaryrefslogtreecommitdiff
path: root/sw/source/uibase/utlui
diff options
context:
space:
mode:
Diffstat (limited to 'sw/source/uibase/utlui')
-rw-r--r--sw/source/uibase/utlui/content.cxx24
1 files changed, 19 insertions, 5 deletions
diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx
index 3e5a2faa8043..5642ff20a790 100644
--- a/sw/source/uibase/utlui/content.cxx
+++ b/sw/source/uibase/utlui/content.cxx
@@ -4769,13 +4769,27 @@ IMPL_LINK(SwContentTree, KeyInputHdl, const KeyEvent&, rEvent, bool)
else if(aCode.GetCode() == KEY_DELETE && 0 == aCode.GetModifier())
{
std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
- if (m_xTreeView->get_selected(xEntry.get()) && lcl_IsContent(*xEntry, *m_xTreeView))
+ if (!m_pActiveShell->GetView().GetDocShell()->IsReadOnly()
+ && m_xTreeView->get_selected(xEntry.get()))
{
- assert(dynamic_cast<SwContent*>(weld::fromId<SwTypeNumber*>(m_xTreeView->get_id(*xEntry))));
- if (weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry))->GetParent()->IsDeletable() &&
- !m_pActiveShell->GetView().GetDocShell()->IsReadOnly())
+ if (lcl_IsContent(*xEntry, *m_xTreeView))
+ {
+ assert(dynamic_cast<SwContent*>(weld::fromId<SwTypeNumber*>(m_xTreeView->get_id(*xEntry))));
+ if (weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry))->GetParent()->IsDeletable())
+ {
+ EditEntry(*xEntry, EditEntryMode::DELETE);
+ }
+ }
+ else
{
- EditEntry(*xEntry, EditEntryMode::DELETE);
+ SwContentType* pContentType
+ = weld::fromId<SwContentType*>(m_xTreeView->get_id(*xEntry));
+ if (pContentType->GetMemberCount()
+ && (pContentType->GetType() == ContentTypeId::FOOTNOTE
+ || pContentType->GetType() == ContentTypeId::ENDNOTE))
+ {
+ ExecuteContextMenuAction("deleteallfootnotes");
+ }
}
}
}