23#include <osl/thread.h>
66#include <com/sun/star/text/XTextSectionsSupplier.hpp>
67#include <com/sun/star/text/XTextGraphicObjectsSupplier.hpp>
68#include <com/sun/star/text/XTextTablesSupplier.hpp>
69#include <com/sun/star/text/XDocumentIndexesSupplier.hpp>
70#include <com/sun/star/text/XDocumentIndex.hpp>
71#include <com/sun/star/text/XBookmarksSupplier.hpp>
72#include <com/sun/star/text/XTextEmbeddedObjectsSupplier.hpp>
73#include <com/sun/star/text/XTextFramesSupplier.hpp>
85#include <bitmaps.hlst>
133const sal_uInt32 TOGGLE_OUTLINE_CONTENT_VISIBILITY = 1512;
134const sal_uInt32 HIDE_OUTLINE_CONTENT_VISIBILITY = 1513;
135const sal_uInt32 SHOW_OUTLINE_CONTENT_VISIBILITY = 1514;
137constexpr char NAVI_BOOKMARK_DELIM =
'\x01';
142 :
public o3tl::sorted_vector<std::unique_ptr<SwContent>, o3tl::less_uniqueptr_to<SwContent>,
143 o3tl::find_partialorder_ptrequals>
149 std::map<OUString, std::map<void*, bool>> lcl_DocOutLineExpandStateMap;
153 return weld::fromId<const SwTypeNumber*>(rTreeView.
get_id(rEntry))->GetTypeId() ==
CTYPE_CNT;
158 return weld::fromId<const SwTypeNumber*>(rTreeView.
get_id(rEntry))->GetTypeId() ==
CTYPE_CTT;
163 return weld::fromId<const SwOutlineContent*>(rTreeView.
get_id(rEntry))->GetOutlineLevel() < nLevel;
182 bool lcl_IsUiVisibleBookmark(const ::sw::mark::IMark* pMark)
243 STR_CONTENT_TYPE_OUTLINE,
244 STR_CONTENT_TYPE_TABLE,
245 STR_CONTENT_TYPE_FRAME,
246 STR_CONTENT_TYPE_GRAPHIC,
247 STR_CONTENT_TYPE_OLE,
248 STR_CONTENT_TYPE_BOOKMARK,
249 STR_CONTENT_TYPE_REGION,
250 STR_CONTENT_TYPE_URLFIELD,
251 STR_CONTENT_TYPE_REFERENCE,
252 STR_CONTENT_TYPE_INDEX,
253 STR_CONTENT_TYPE_POSTIT,
254 STR_CONTENT_TYPE_DRAWOBJECT,
255 STR_CONTENT_TYPE_TEXTFIELD,
256 STR_CONTENT_TYPE_FOOTNOTE,
257 STR_CONTENT_TYPE_ENDNOTE
262 STR_CONTENT_TYPE_SINGLE_OUTLINE,
263 STR_CONTENT_TYPE_SINGLE_TABLE,
264 STR_CONTENT_TYPE_SINGLE_FRAME,
265 STR_CONTENT_TYPE_SINGLE_GRAPHIC,
266 STR_CONTENT_TYPE_SINGLE_OLE,
267 STR_CONTENT_TYPE_SINGLE_BOOKMARK,
268 STR_CONTENT_TYPE_SINGLE_REGION,
269 STR_CONTENT_TYPE_SINGLE_URLFIELD,
270 STR_CONTENT_TYPE_SINGLE_REFERENCE,
271 STR_CONTENT_TYPE_SINGLE_INDEX,
272 STR_CONTENT_TYPE_SINGLE_POSTIT,
273 STR_CONTENT_TYPE_SINGLE_DRAWOBJECT,
274 STR_CONTENT_TYPE_SINGLE_TEXTFIELD,
275 STR_CONTENT_TYPE_SINGLE_FOOTNOTE,
276 STR_CONTENT_TYPE_SINGLE_ENDNOTE
281 bool checkVisibilityChanged(
285 if(rSwContentArrA.
size() != rSwContentArrB.
size())
290 for(
size_t a(0);
a < rSwContentArrA.
size();
a++)
292 if(rSwContentArrA[a]->IsInvisible() != rSwContentArrB[a]->IsInvisible())
301sal_Int32 getYPos(
const SwNode& rNode)
311 if (
SwNode* pAnchorNode = pFlyFormat->GetAnchor().GetAnchorNode())
313 return getYPos(*pAnchorNode);
317 return sal_Int32(nIndex);
327 m_nContentType(
nType),
328 m_nOutlineLevel(nLevel),
409 if(nIndex < m_pMember->
size())
422 std::unique_ptr<SwContentArr> pOldMember;
423 size_t nOldMemberCount = 0;
428 nOldMemberCount = pOldMember->size();
430 *pbContentChanged =
false;
442 double nOutlinesInFramesIndexAdjustment = 0.00001;
444 const size_t nOutlineCount = rOutlineNodes.
size();
446 for (
size_t i = 0;
i < nOutlineCount; ++
i)
448 SwTextNode* pNode = rOutlineNodes[
i]->GetTextNode();
455 nYPos += nOutlinesInFramesIndexAdjustment;
456 nOutlinesInFramesIndexAdjustment += 0.00001;
462 auto pCnt(std::make_unique<SwOutlineContent>(
this, aEntry,
i, nLevel,
471 assert(pbContentChanged &&
"pbContentChanged is always set if pOldMember is");
472 if (pOldMember->size() !=
m_pMember->size())
474 *pbContentChanged =
true;
477 for (
size_t i = 0;
i < pOldMember->size();
i++)
482 *pbContentChanged =
true;
498 if (rTableFormat.GetInfo(aGetHt))
507 nYPos = getYPos(*pTable->GetTableNode());
509 auto pCnt = std::make_unique<SwContent>(
this, rTableFormat.
GetName(), nYPos);
510 if( !rTableFormat.GetInfo( aAskItem ) &&
512 pCnt->SetInvisible();
522 *pbContentChanged = checkVisibilityChanged(
561 if( !pFrameFormat->GetInfo( aAskItem ) &&
564 m_pMember->insert(std::unique_ptr<SwContent>(pCnt));
573 assert(pbContentChanged &&
"pbContentChanged is always set if pOldMember is");
574 *pbContentChanged = checkVisibilityChanged(
588 if(lcl_IsUiVisibleBookmark(*ppBookmark))
590 const OUString& rBkmName = (*ppBookmark)->GetName();
592 auto pCnt(std::make_unique<SwContent>(
this, rBkmName,
601 std::vector<SwTextField*>
aArr;
604 const size_t nSize = rFieldTypes.size();
605 for (
size_t i = 0;
i < nSize; ++
i)
610 std::vector<SwFormatField*> vFields;
614 if (
SwTextField* pTextField = pFormatField->GetTextField())
619 aArr.emplace_back(pTextField);
626 bool bHasEntryInFly =
false;
629 std::stable_sort(
aArr.begin(),
aArr.end(),
631 SwPosition aPos(a->GetTextNode(), a->GetStart());
632 SwPosition bPos(b->GetTextNode(), b->GetStart());
633 return aPos < bPos;});
640 if (nEndOfExtrasIndex >= pTextField->GetTextNode().GetIndex())
644 if (pTextField->GetTextNode().GetFlyFormat())
646 bHasEntryInFly =
true;
657 std::stable_sort(
aArr.begin(),
aArr.end(),
659 SwTextNode& aTextNode = a->GetTextNode();
660 SwTextNode& bTextNode = b->GetTextNode();
661 SwPosition aPos(aTextNode, a->GetStart());
662 SwPosition bPos(bTextNode, b->GetStart());
664 if (nEndOfExtrasIndex >= aTextNode.GetIndex())
665 if (auto pFlyFormat = aTextNode.GetFlyFormat())
666 if (const SwPosition* pPos = pFlyFormat->GetAnchor().GetContentAnchor())
668 if (nEndOfExtrasIndex >= bTextNode.GetIndex())
669 if (auto pFlyFormat = bTextNode.GetFlyFormat())
670 if (const SwPosition* pPos = pFlyFormat->GetAnchor().GetContentAnchor())
672 return aPos < bPos;});
675 std::vector<OUString> aDocumentStatisticsSubTypesList;
679 const SwField* pField = pTextField->GetFormatField().GetField();
681 if (!sExpandField.isEmpty())
682 sExpandField =
u" - " + sExpandField;
686 if (aDocumentStatisticsSubTypesList.empty())
688 aDocumentStatisticsSubTypesList);
690 if (pField->
GetSubType() < aDocumentStatisticsSubTypesList.size())
691 sSubType =
u" - " + aDocumentStatisticsSubTypesList[pField->
GetSubType()];
702 OUString sExpandedTextOfReferencedTextNode =
705 if (sExpandedTextOfReferencedTextNode.getLength() > 80)
707 sExpandedTextOfReferencedTextNode = OUString::Concat(
708 sExpandedTextOfReferencedTextNode.subView(0, 80)) +
u"...";
711 + sExpandedTextOfReferencedTextNode + sExpandField;
715 OUString sFieldSubTypeOrName;
718 sFieldSubTypeOrName =
SwResId(STR_FLDREF_FOOTNOTE);
720 sFieldSubTypeOrName =
SwResId(STR_FLDREF_ENDNOTE);
730 auto pCnt(std::make_unique<SwTextFieldContent>(
this, sText,
731 &pTextField->GetFormatField(),
734 pCnt->SetInvisible();
744 if (rFootnoteIdxs.
size() == 0)
750 if ((!pTextFootnote->GetFootnote().IsEndNote()
752 || (pTextFootnote->GetFootnote().IsEndNote()
756 const OUString& sText
759 +
" " + lcl_GetFootnoteText(*pTextFootnote);
760 auto pCnt(std::make_unique<SwTextFootnoteContent>(
761 this, sText, pTextFootnote, ++
nPos));
763 pCnt->SetInvisible();
791 pParentFormat = pParentFormat->
GetParent();
794 std::unique_ptr<SwContent> pCnt(
new SwRegionContent(
this, sSectionName,
796 if( !pFormat->
GetInfo( aAskItem ) &&
798 pCnt->SetInvisible();
808 assert(pbContentChanged &&
"pbContentChanged is always set if pOldMember is");
809 *pbContentChanged = checkVisibilityChanged(
818 std::vector<OUString> aRefMarks;
822 for (
const auto& rRefMark : aRefMarks)
824 m_pMember->insert(std::make_unique<SwContent>(
this, rRefMark,
839 r.rINetAttr.GetINetFormat().GetValue(),
849 bool bHasEntryInFly =
false;
850 std::vector<SwGetINetAttr*> aStableSortINetAttrsArray;
854 aStableSortINetAttrsArray.emplace_back(&r);
857 if (nEndOfExtrasIndex >= r.rINetAttr.GetTextNode().GetIndex())
861 if (r.rINetAttr.GetTextNode().GetFlyFormat())
862 bHasEntryInFly =
true;
867 std::stable_sort(aStableSortINetAttrsArray.begin(), aStableSortINetAttrsArray.end(),
869 SwPosition aSwPos(a->rINetAttr.GetTextNode(),
870 a->rINetAttr.GetStart());
871 SwPosition bSwPos(b->rINetAttr.GetTextNode(),
872 b->rINetAttr.GetStart());
873 return aSwPos < bSwPos;});
879 std::stable_sort(aStableSortINetAttrsArray.begin(), aStableSortINetAttrsArray.end(),
881 const SwTextNode& aTextNode = a->rINetAttr.GetTextNode();
882 const SwTextNode& bTextNode = b->rINetAttr.GetTextNode();
883 SwPosition aPos(aTextNode, a->rINetAttr.GetStart());
884 SwPosition bPos(bTextNode, b->rINetAttr.GetStart());
886 if (nEndOfExtrasIndex >= aTextNode.GetIndex())
887 if (auto pFlyFormat = aTextNode.GetFlyFormat())
888 if (const SwPosition* pPos = pFlyFormat->GetAnchor().GetContentAnchor())
890 if (nEndOfExtrasIndex >= bTextNode.GetIndex())
891 if (auto pFlyFormat = bTextNode.GetFlyFormat())
892 if (const SwPosition* pPos = pFlyFormat->GetAnchor().GetContentAnchor())
894 return aPos < bPos;});
897 SwGetINetAttrs::size_type
n = 0;
898 for (
auto p : aStableSortINetAttrsArray)
900 auto pCnt = std::make_unique<SwURLFieldContent>(
this,
p->sText,
912 for ( sal_uInt16 nTox = 0; nTox <
nCount; nTox++ )
923 m_pMember->insert( std::unique_ptr<SwContent>(pCnt) );
927 assert(pbContentChanged &&
"pbContentChanged is always set if pOldMember is");
928 if (!*pbContentChanged && nOldMemberCount >
nPos &&
930 *pbContentChanged =
true;
945 if (pFormatField->GetTextField() && pFormatField->IsFieldInDoc())
947 OUString sEntry = pFormatField->GetField()->GetPar2();
954 if (!pFormatField->GetTextField()->GetTextNode().getLayoutFrame(
956 pCnt->SetInvisible();
959 assert(pbContentChanged &&
"pbContentChanged is always set if pOldMember is");
960 if (!*pbContentChanged &&
962 (*pOldMember)[nYPos]->IsInvisible() != pCnt->IsInvisible())
963 *pbContentChanged =
true;
985 if (!pTemp->
GetName().isEmpty())
991 auto pCnt(std::make_unique<SwContent>(
this, pTemp->
GetName(), nYPos));
993 pCnt->SetInvisible();
1004 assert(pbContentChanged &&
"pbContentChanged is always set if pOldMember is");
1005 *pbContentChanged = checkVisibilityChanged(
1017 assert(pbContentChanged &&
"pbContentChanged is always set if pOldMember is");
1019 *pbContentChanged =
true;
1029 IDX_STR_OUTLINE_LEVEL = 0,
1030 IDX_STR_DRAGMODE = 1,
1031 IDX_STR_HYPERLINK = 2,
1032 IDX_STR_LINK_REGION = 3,
1033 IDX_STR_COPY_REGION = 4,
1034 IDX_STR_DISPLAY = 5,
1035 IDX_STR_ACTIVE_VIEW = 6,
1038 IDX_STR_INACTIVE = 9,
1039 IDX_STR_EDIT_ENTRY = 10,
1040 IDX_STR_DELETE_ENTRY = 11,
1041 IDX_STR_SEND_OUTLINE_TO_CLIPBOARD_ENTRY = 12,
1042 IDX_STR_OUTLINE_TRACKING = 13,
1043 IDX_STR_OUTLINE_TRACKING_DEFAULT = 14,
1044 IDX_STR_OUTLINE_TRACKING_FOCUS = 15,
1045 IDX_STR_OUTLINE_TRACKING_OFF = 16
1064 STR_SEND_OUTLINE_TO_CLIPBOARD_ENTRY,
1065 STR_OUTLINE_TRACKING,
1066 STR_OUTLINE_TRACKING_DEFAULT,
1067 STR_OUTLINE_TRACKING_FOCUS,
1068 STR_OUTLINE_TRACKING_OFF
1072 : m_xTreeView(
std::move(xTreeView))
1073 , m_aDropTargetHelper(*this)
1074 , m_pDialog(pDialog)
1075 , m_sSpace(OUString(
" "))
1076 , m_aUpdTimer(
"SwContentTree m_aUpdTimer")
1077 , m_aOverlayObjectDelayTimer(
"SwContentTree m_aOverlayObjectDelayTimer")
1078 , m_sInvisible(
SwResId(STR_INVISIBLE))
1079 , m_pHiddenShell(nullptr)
1080 , m_pActiveShell(nullptr)
1081 , m_pConfig(
SW_MOD()->GetNavigationConfig())
1090 , m_bIsIdleClear(false)
1091 , m_bIsLastReadOnly(false)
1092 , m_bIsOutlineMoveable(true)
1093 , m_bViewHasChanged(false)
1128 if (lcl_DocOutLineExpandStateMap.find(sDocTitle) != lcl_DocOutLineExpandStateMap.end())
1154 if (std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
1155 m_xTreeView->get_dest_row_at_pos(rMEvt.GetPosPixel(), xEntry.get(),
false,
false) &&
1156 !rMEvt.IsLeaveWindow())
1158 if (!m_xOverlayCompareEntry)
1159 m_xOverlayCompareEntry.reset(m_xTreeView->make_iterator().release());
1160 else if (m_xTreeView->iter_compare(*xEntry, *m_xOverlayCompareEntry) == 0)
1162 m_xTreeView->copy_iterator(*xEntry, *m_xOverlayCompareEntry);
1163 BringEntryToAttention(*xEntry);
1167 if (m_xOverlayCompareEntry)
1168 m_xOverlayCompareEntry.reset();
1169 m_aOverlayObjectDelayTimer.Stop();
1170 if (m_xOverlayObject && m_xOverlayObject->getOverlayManager())
1172 m_xOverlayObject->getOverlayManager()->remove(*m_xOverlayObject);
1173 m_xOverlayObject.reset();
1182 rUnsetDragIcon =
true;
1184 bool bDisallow =
true;
1187 std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
1188 bool bEntry = m_xTreeView->get_selected(xEntry.get());
1189 if (!bEntry || lcl_IsContentType(*xEntry, *m_xTreeView))
1197 if (FillTransferData(*xContainer, nDragMode))
1203 m_aDndOutlinesSelected.clear();
1205 std::unique_ptr<weld::TreeIter> xScratch(m_xTreeView->make_iterator());
1210 m_xTreeView->copy_iterator(*xEntry, *xScratch);
1211 if (!m_xTreeView->iter_previous_sibling(*xScratch))
1213 if (!m_xTreeView->is_selected(*xScratch))
1215 m_xTreeView->copy_iterator(*xScratch, *xEntry);
1220 m_aDndOutlinesSelected.push_back(m_xTreeView->make_iterator(xEntry.get()));
1222 while (m_xTreeView->iter_next_sibling(*xEntry) && m_xTreeView->is_selected(*xEntry));
1227 m_xTreeView->enable_drag_source(xContainer, nDragMode);
1232 : DropTargetHelper(rTreeView.get_widget().get_drop_target())
1233 , m_rTreeView(rTreeView)
1273 void* key =
nullptr;
1291 std::unique_ptr<weld::TreeIter> xDropEntry(
m_xTreeView->make_iterator());
1297 if (xDropEntry && lcl_IsContent(*xDropEntry, *
m_xTreeView))
1299 assert(
dynamic_cast<SwContent*
>(weld::fromId<SwTypeNumber*>(
m_xTreeView->get_id(*xDropEntry))));
1301 assert(pOutlineContent);
1309 std::unique_ptr<weld::TreeIter> xChildEntry(
m_xTreeView->make_iterator(xDropEntry.get()));
1310 bool bChildEntry =
m_xTreeView->iter_children(*xChildEntry);
1313 m_xTreeView->copy_iterator(*xChildEntry, *xDropEntry);
1314 bChildEntry =
m_xTreeView->iter_next_sibling(*xChildEntry);
1326 else if (!lcl_IsContent(*xDropEntry, *
m_xTreeView))
1334 nTargetPos = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xDropEntry))->GetOutlinePos();
1340 std::unique_ptr<weld::TreeIter> xNext(
m_xTreeView->make_iterator(xDropEntry.get()));
1345 nTargetPos = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xNext))->GetOutlinePos() - 1;
1370 std::unique_ptr<weld::TreeIter> xChild(rContentTree.
make_iterator(&rEntry));
1377 if (!IsAllExpanded(rContentTree, *xChild))
1387 bool bExpand = !IsAllExpanded(rContentTree, rEntry);
1403 rPop.
set_label(OString::number(800), IsAllExpanded(rContentTree, rEntry) ?
SwResId(STR_COLLAPSEALL) :
SwResId(STR_EXPANDALL));
1411 rPop.
set_sensitive(OString::number(TOGGLE_OUTLINE_CONTENT_VISIBILITY),
false);
1412 rPop.
set_sensitive(OString::number(HIDE_OUTLINE_CONTENT_VISIBILITY),
false);
1413 rPop.
set_sensitive(OString::number(SHOW_OUTLINE_CONTENT_VISIBILITY),
false);
1419 bool bIsRoot = lcl_IsContentType(rEntry, rContentTree);
1423 if (pSh->GetViewOptions()->IsTreatSubOutlineLevelsAsContent())
1426 rPop.
set_sensitive(OString::number(TOGGLE_OUTLINE_CONTENT_VISIBILITY),
true);
1438 if (nOutlinePos >= rOutlineNodes.
size())
1444 bool bHasContent(
false);
1445 size_t nPos = nOutlinePos;
1448 if (rOutlineNodes.
size() >
nPos + 1)
1449 pEndNd = rOutlineNodes[
nPos + 1];
1453 if (rNodes.
GoNext(&aIdx) != pEndNd)
1459 while (++
nPos < rOutlineNodes.
size() &&
1462 pSttNd = rOutlineNodes[
nPos];
1464 if (rOutlineNodes.
size() >
nPos + 1)
1465 pEndNd = rOutlineNodes[
nPos + 1];
1469 if (rNodes.
GoNext(&aIdx) != pEndNd)
1486 size_t nPos = nOutlinePos;
1491 if (!bIsRoot && rOutlineNodes.
size() >
nPos + 1)
1492 pEndNd = rOutlineNodes[
nPos + 1];
1495 if (rNodes.
GoNext(&aIdx) != pEndNd)
1501 bool bHasUnfolded(!bHasFolded);
1503 while ((++nPos < pThis->GetWrtShell()->getIDocumentOutlineNodesAccess()->getOutlineNodesCount()) &&
1509 if (rOutlineNodes.
size() >
nPos + 1)
1510 pEndNd = rOutlineNodes[
nPos + 1];
1513 if (rNodes.
GoNext(&aIdx) == pEndNd)
1519 bHasUnfolded =
true;
1521 if (bHasFolded && bHasUnfolded)
1525 rPop.
set_sensitive(OString::number(HIDE_OUTLINE_CONTENT_VISIBILITY), bHasUnfolded);
1526 rPop.
set_sensitive(OString::number(SHOW_OUTLINE_CONTENT_VISIBILITY), bHasFolded);
1529 rPop.
set_sensitive(OString::number(TOGGLE_OUTLINE_CONTENT_VISIBILITY), !bIsRoot);
1534 if (rCEvt.GetCommand() != CommandEventId::ContextMenu)
1540 if (std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
1541 rCEvt.IsMouseEvent() && m_xTreeView->get_dest_row_at_pos(
1542 rCEvt.GetMousePosPixel(), xEntry.get(),
false))
1545 if (!m_xTreeView->is_selected(*xEntry))
1546 m_xTreeView->set_cursor(*xEntry);
1548 else if (m_xTreeView->is_selected(0))
1549 m_xTreeView->set_cursor(0);
1552 std::unique_ptr<weld::Builder> xBuilder(
Application::CreateBuilder(m_xTreeView.get(),
"modules/swriter/ui/navigatorcontextmenu.ui"));
1553 std::unique_ptr<weld::Menu> xPop = xBuilder->weld_menu(
"navmenu");
1555 bool bOutline(
false);
1556 std::unique_ptr<weld::Menu> xSubPop1 = xBuilder->weld_menu(
"outlinelevel");
1557 std::unique_ptr<weld::Menu> xSubPop2 = xBuilder->weld_menu(
"dragmodemenu");
1558 std::unique_ptr<weld::Menu> xSubPop3 = xBuilder->weld_menu(
"displaymenu");
1559 std::unique_ptr<weld::Menu> xSubPopOutlineTracking = xBuilder->weld_menu(
"outlinetracking");
1561 std::unique_ptr<weld::Menu> xSubPopOutlineContent = xBuilder->weld_menu(
"outlinecontent");
1563 xSubPopOutlineContent->append(OUString::number(TOGGLE_OUTLINE_CONTENT_VISIBILITY),
1564 SwResId(STR_OUTLINE_CONTENT_VISIBILITY_TOGGLE));
1565 xSubPopOutlineContent->append(OUString::number(HIDE_OUTLINE_CONTENT_VISIBILITY),
1566 SwResId(STR_OUTLINE_CONTENT_VISIBILITY_HIDE_ALL));
1567 xSubPopOutlineContent->append(OUString::number(SHOW_OUTLINE_CONTENT_VISIBILITY),
1568 SwResId(STR_OUTLINE_CONTENT_VISIBILITY_SHOW_ALL));
1570 for(
int i = 1;
i <= 3; ++
i)
1571 xSubPopOutlineTracking->append_radio(OUString::number(
i + 10), m_aContextStrings[IDX_STR_OUTLINE_TRACKING +
i]);
1572 xSubPopOutlineTracking->set_active(OString::number(10 + m_nOutlineTracking),
true);
1575 xSubPop1->append_radio(OUString::number(
i + 100), OUString::number(
i));
1576 xSubPop1->set_active(OString::number(100 + m_nOutlineLevel),
true);
1578 for (
int i=0;
i < 3; ++
i)
1579 xSubPop2->append_radio(OUString::number(
i + 201), m_aContextStrings[IDX_STR_HYPERLINK +
i]);
1580 xSubPop2->set_active(OString::number(201 +
static_cast<int>(GetParentWindow()->GetRegionDropMode())),
true);
1584 sal_uInt16
nId = 301;
1589 m_aContextStrings[pView ==
GetActiveView() ? IDX_STR_ACTIVE :
1590 IDX_STR_INACTIVE] +
")";
1591 xSubPop3->append_radio(OUString::number(
nId), sInsert);
1592 if (State::CONSTANT == m_eState && m_pActiveShell == &pView->GetWrtShell())
1593 xSubPop3->set_active(OString::number(
nId),
true);
1597 xSubPop3->append_radio(OUString::number(
nId++), m_aContextStrings[IDX_STR_ACTIVE_VIEW]);
1600 OUString sHiddenEntry = m_pHiddenShell->GetView().GetDocShell()->GetTitle() +
1602 m_aContextStrings[IDX_STR_HIDDEN] +
1604 xSubPop3->append_radio(OUString::number(
nId), sHiddenEntry);
1606 if (State::ACTIVE == m_eState)
1607 xSubPop3->set_active(OString::number(--
nId),
true);
1609 xSubPop3->set_active(OString::number(
nId),
true);
1612 std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
1613 if (!m_xTreeView->get_selected(xEntry.get()))
1616 bool bRemoveGotoEntry =
false;
1617 if (
State::HIDDEN == m_eState || !xEntry || !lcl_IsContent(*xEntry, *m_xTreeView) ||
1618 weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry))->IsInvisible())
1619 bRemoveGotoEntry =
true;
1621 bool bRemovePostItEntries =
true;
1622 bool bRemoveIndexEntries =
true;
1623 bool bRemoveCopyEntry =
true;
1624 bool bRemoveEditEntry =
true;
1625 bool bRemoveUnprotectEntry =
true;
1626 bool bRemoveDeleteChapterEntry =
true,
1627 bRemoveDeleteTableEntry =
true,
1628 bRemoveDeleteFrameEntry =
true,
1629 bRemoveDeleteImageEntry =
true,
1630 bRemoveDeleteOLEObjectEntry =
true,
1631 bRemoveDeleteBookmarkEntry =
true,
1632 bRemoveDeleteHyperlinkEntry =
true,
1633 bRemoveDeleteReferenceEntry =
true,
1634 bRemoveDeleteIndexEntry=
true,
1635 bRemoveDeleteCommentEntry =
true,
1636 bRemoveDeleteDrawingObjectEntry =
true,
1637 bRemoveDeleteFieldEntry =
true;
1638 bool bRemoveRenameEntry =
true;
1639 bool bRemoveSelectEntry =
true;
1640 bool bRemoveToggleExpandEntry =
true;
1641 bool bRemoveChapterEntries =
true;
1642 bool bRemoveSendOutlineEntry =
true;
1644 bool bRemoveTableTracking =
true;
1645 bool bRemoveSectionTracking =
true;
1646 bool bRemoveFrameTracking =
true;
1647 bool bRemoveImageTracking =
true;
1648 bool bRemoveOLEobjectTracking =
true;
1649 bool bRemoveBookmarkTracking =
true;
1650 bool bRemoveHyperlinkTracking =
true;
1651 bool bRemoveReferenceTracking =
true;
1652 bool bRemoveIndexTracking =
true;
1653 bool bRemoveCommentTracking =
true;
1654 bool bRemoveDrawingObjectTracking =
true;
1655 bool bRemoveFieldTracking =
true;
1656 bool bRemoveFootnoteTracking =
true;
1657 bool bRemoveEndnoteTracking =
true;
1659 bool bRemoveSortEntry =
true;
1664 if (lcl_IsContentType(*xEntry, *m_xTreeView))
1665 pType = weld::fromId<SwContentType*>(m_xTreeView->get_id(*xEntry));
1667 pType = weld::fromId<SwContent*>(
1668 m_xTreeView->get_id(*xEntry))->GetParent();
1674 bRemoveSortEntry =
false;
1679 switch (nContentType)
1682 aIdent =
"tabletracking";
1683 bRemoveTableTracking =
false;
1686 aIdent =
"sectiontracking";
1687 bRemoveSectionTracking =
false;
1690 aIdent =
"frametracking";
1691 bRemoveFrameTracking =
false;
1694 aIdent =
"imagetracking";
1695 bRemoveImageTracking =
false;
1698 aIdent =
"oleobjecttracking";
1699 bRemoveOLEobjectTracking =
false;
1702 aIdent =
"bookmarktracking";
1703 bRemoveBookmarkTracking =
false;
1706 aIdent =
"hyperlinktracking";
1707 bRemoveHyperlinkTracking =
false;
1710 aIdent =
"referencetracking";
1711 bRemoveReferenceTracking =
false;
1714 aIdent =
"indextracking";
1715 bRemoveIndexTracking =
false;
1718 aIdent =
"commenttracking";
1719 bRemoveCommentTracking =
false;
1722 aIdent =
"drawingobjecttracking";
1723 bRemoveDrawingObjectTracking =
false;
1726 aIdent =
"fieldtracking";
1727 bRemoveFieldTracking =
false;
1730 aIdent =
"footnotetracking";
1731 bRemoveFootnoteTracking =
false;
1734 aIdent =
"endnotetracking";
1735 bRemoveEndnoteTracking =
false;
1739 if (!aIdent.isEmpty())
1740 xPop->set_active(aIdent, mTrackContentType[nContentType]);
1744 (State::ACTIVE == m_eState || m_pActiveShell ==
GetActiveView()->GetWrtShellPtr())
1745 && lcl_IsContent(*xEntry, *m_xTreeView))
1747 const bool bReadonly = m_pActiveShell->GetView().GetDocShell()->IsReadOnly();
1748 const bool bVisible = !weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry))->IsInvisible();
1749 const bool bProtected = weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry))->IsProtect();
1752 const bool bEditable = pType->
IsEditable() &&
1756 const bool bRenamable = bEditable && !bReadonly &&
1768 switch (nContentType)
1771 bRemoveDeleteChapterEntry =
false;
1774 bRemoveDeleteTableEntry =
false;
1777 bRemoveDeleteFrameEntry =
false;
1780 bRemoveDeleteImageEntry =
false;
1783 bRemoveDeleteOLEObjectEntry =
false;
1786 bRemoveDeleteBookmarkEntry =
false;
1789 bRemoveDeleteHyperlinkEntry =
false;
1792 bRemoveDeleteReferenceEntry =
false;
1795 bRemoveDeleteIndexEntry =
false;
1798 bRemoveDeleteCommentEntry =
false;
1801 bRemoveDeleteDrawingObjectEntry =
false;
1804 bRemoveDeleteFieldEntry =
false;
1811 void* pUserData = weld::fromId<void*>(m_xTreeView->get_id(*xEntry));
1815 bRemoveGotoEntry =
true;
1824 bRemoveSelectEntry =
false;
1825 bRemoveChapterEntries =
false;
1827 bRemoveCopyEntry =
false;
1829 else if (!bReadonly && bEditable)
1833 bRemoveIndexEntries =
false;
1835 const SwTOXBase* pBase = weld::fromId<SwTOXBaseContent*>(m_xTreeView->get_id(*xEntry))->GetTOXBase();
1837 bRemoveEditEntry =
false;
1843 bRemoveSelectEntry =
false;
1844 bRemoveEditEntry =
false;
1845 bRemoveUnprotectEntry =
false;
1847 OUString sTableName = weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry))->GetName();
1848 bool bProt = m_pActiveShell->HasTableAnyProtection( &sTableName, &bFull );
1849 xPop->set_sensitive(OString::number(403), !bFull);
1850 xPop->set_sensitive(OString::number(404), bProt);
1854 bRemoveSelectEntry =
false;
1855 bRemoveEditEntry =
false;
1858 bRemoveEditEntry =
false;
1861 bRemoveRenameEntry =
false;
1866 if (lcl_IsContentType(*xEntry, *m_xTreeView))
1867 pType = weld::fromId<SwContentType*>(m_xTreeView->get_id(*xEntry));
1869 pType = weld::fromId<SwContent*>(
1870 m_xTreeView->get_id(*xEntry))->GetParent();
1879 *xSubPopOutlineContent);
1880 bRemoveSendOutlineEntry =
false;
1887 !m_pActiveShell->GetView().GetDocShell()->IsReadOnly() &&
1889 bRemovePostItEntries =
false;
1894 if (bRemoveToggleExpandEntry)
1895 xPop->remove(OString::number(800));
1897 if (bRemoveGotoEntry)
1898 xPop->remove(OString::number(900));
1900 if (bRemoveSelectEntry)
1901 xPop->remove(OString::number(805));
1903 if (bRemoveChapterEntries)
1905 xPop->remove(OString::number(801));
1906 xPop->remove(OString::number(802));
1907 xPop->remove(OString::number(803));
1908 xPop->remove(OString::number(804));
1911 if (bRemoveSendOutlineEntry)
1912 xPop->remove(OString::number(700));
1914 if (bRemovePostItEntries)
1916 xPop->remove(OString::number(600));
1917 xPop->remove(OString::number(601));
1918 xPop->remove(OString::number(602));
1921 if (bRemoveDeleteChapterEntry)
1922 xPop->remove(
"deletechapter");
1923 if (bRemoveDeleteTableEntry)
1924 xPop->remove(
"deletetable");
1925 if (bRemoveDeleteFrameEntry)
1926 xPop->remove(
"deleteframe");
1927 if (bRemoveDeleteImageEntry)
1928 xPop->remove(
"deleteimage");
1929 if (bRemoveDeleteOLEObjectEntry)
1930 xPop->remove(
"deleteoleobject");
1931 if (bRemoveDeleteBookmarkEntry)
1932 xPop->remove(
"deletebookmark");
1933 if (bRemoveDeleteHyperlinkEntry)
1934 xPop->remove(
"deletehyperlink");
1935 if (bRemoveDeleteReferenceEntry)
1936 xPop->remove(
"deletereference");
1937 if (bRemoveDeleteIndexEntry)
1938 xPop->remove(
"deleteindex");
1939 if (bRemoveDeleteCommentEntry)
1940 xPop->remove(
"deletecomment");
1941 if (bRemoveDeleteDrawingObjectEntry)
1942 xPop->remove(
"deletedrawingobject");
1943 if (bRemoveDeleteFieldEntry)
1944 xPop->remove(
"deletefield");
1946 bool bRemoveDeleteEntry =
1947 bRemoveDeleteChapterEntry &&
1948 bRemoveDeleteTableEntry &&
1949 bRemoveDeleteFrameEntry &&
1950 bRemoveDeleteImageEntry &&
1951 bRemoveDeleteOLEObjectEntry &&
1952 bRemoveDeleteBookmarkEntry &&
1953 bRemoveDeleteHyperlinkEntry &&
1954 bRemoveDeleteReferenceEntry &&
1955 bRemoveDeleteIndexEntry &&
1956 bRemoveDeleteCommentEntry &&
1957 bRemoveDeleteDrawingObjectEntry &&
1958 bRemoveDeleteFieldEntry;
1960 if (bRemoveRenameEntry)
1961 xPop->remove(OString::number(502));
1963 if (bRemoveIndexEntries)
1965 xPop->remove(OString::number(401));
1966 xPop->remove(OString::number(402));
1967 xPop->remove(OString::number(405));
1970 if (bRemoveUnprotectEntry)
1971 xPop->remove(OString::number(404));
1973 if (bRemoveEditEntry)
1974 xPop->remove(OString::number(403));
1976 if (bRemoveToggleExpandEntry &&
1977 bRemoveSendOutlineEntry)
1978 xPop->remove(
"separator1");
1980 if (bRemoveCopyEntry)
1981 xPop->remove(
"copy");
1983 if (bRemoveGotoEntry &&
1985 bRemoveSelectEntry &&
1986 bRemoveDeleteEntry &&
1987 bRemoveChapterEntries &&
1988 bRemovePostItEntries &&
1989 bRemoveRenameEntry &&
1990 bRemoveIndexEntries &&
1991 bRemoveUnprotectEntry &&
1993 xPop->remove(
"separator2");
1998 xPop->remove(OString::number(1));
2002 xSubPopOutlineTracking.reset();
2003 xPop->remove(OString::number(4));
2006 !m_pActiveShell->GetViewOptions()->IsShowOutlineContentVisibilityButton() ||
2007 m_pActiveShell->getIDocumentOutlineNodesAccess()->getOutlineNodesCount() == 0)
2009 xSubPopOutlineContent.reset();
2010 xPop->remove(OString::number(5));
2011 xPop->remove(
"separator3");
2014 if (bRemoveTableTracking)
2015 xPop->remove(
"tabletracking");
2016 if (bRemoveSectionTracking)
2017 xPop->remove(
"sectiontracking");
2018 if (bRemoveFrameTracking)
2019 xPop->remove(
"frametracking");
2020 if (bRemoveImageTracking)
2021 xPop->remove(
"imagetracking");
2022 if (bRemoveOLEobjectTracking)
2023 xPop->remove(
"oleobjecttracking");
2024 if (bRemoveBookmarkTracking)
2025 xPop->remove(
"bookmarktracking");
2026 if (bRemoveHyperlinkTracking)
2027 xPop->remove(
"hyperlinktracking");
2028 if (bRemoveReferenceTracking)
2029 xPop->remove(
"referencetracking");
2030 if (bRemoveIndexTracking)
2031 xPop->remove(
"indextracking");
2032 if (bRemoveCommentTracking)
2033 xPop->remove(
"commenttracking");
2034 if (bRemoveDrawingObjectTracking)
2035 xPop->remove(
"drawingobjecttracking");
2036 if (bRemoveFieldTracking)
2037 xPop->remove(
"fieldtracking");
2038 if (bRemoveFootnoteTracking)
2039 xPop->remove(
"footnotetracking");
2040 if (bRemoveEndnoteTracking)
2041 xPop->remove(
"endnotetracking");
2042 if (bRemoveSortEntry)
2043 xPop->remove(
"sort");
2045 bool bSetSensitiveCollapseAllCategories =
false;
2046 if (!m_bIsRoot && xEntry)
2048 bool bEntry = m_xTreeView->get_iter_first(*xEntry);
2051 if (m_xTreeView->get_row_expanded(*xEntry))
2053 bSetSensitiveCollapseAllCategories =
true;
2056 bEntry = m_xTreeView->iter_next_sibling(*xEntry);
2059 xPop->set_sensitive(
"collapseallcategories", bSetSensitiveCollapseAllCategories);
2061 OString sCommand = xPop->popup_at_rect(m_xTreeView.get(),
tools::Rectangle(rCEvt.GetMousePosPixel(),
Size(1,1)));
2062 if (!sCommand.isEmpty())
2063 ExecuteContextMenuAction(sCommand);
2074 std::unique_ptr<weld::TreeIter> xChild =
m_xTreeView->make_iterator();
2081 OUString sEntry = pCnt->
GetName();
2082 if (sEntry.isEmpty())
2085 insert(&rParent, sEntry,
sId,
false, xChild.get());
2087 if (bGraphic && !
static_cast<const SwGraphicContent*
>(pCnt)->GetLink().isEmpty())
2088 m_xTreeView->set_image(*xChild, RID_BMP_NAVI_GRAPHIC_LINK);
2099 m_xTreeView->insert(pParent, -1, &rStr, &rId,
nullptr,
nullptr, bChildrenOnDemand, pRet);
2107 std::unique_ptr<weld::TreeIter> xChild =
m_xTreeView->make_iterator(&rIter);
2125 std::unique_ptr<weld::TreeIter> xChild =
m_xTreeView->make_iterator();
2134 std::vector<std::unique_ptr<weld::TreeIter>> aParentCandidates;
2141 OUString sEntry = pCnt->
GetName();
2142 if(sEntry.isEmpty())
2146 auto lambda = [nLevel,
this](
const std::unique_ptr<weld::TreeIter>& entry)
2148 return lcl_IsLowerOutlineContent(*entry, *
m_xTreeView, nLevel);
2153 auto aFind = std::find_if(aParentCandidates.rbegin(), aParentCandidates.rend(), lambda);
2154 if (aFind != aParentCandidates.rend())
2155 insert(aFind->get(), sEntry,
sId,
false, xChild.get());
2157 insert(&rParent, sEntry,
sId,
false, xChild.get());
2162 aParentCandidates.erase(std::remove_if(aParentCandidates.begin(), aParentCandidates.end(),
2163 std::not_fn(lambda)), aParentCandidates.end());
2166 aParentCandidates.emplace_back(
m_xTreeView->make_iterator(xChild.get()));
2224 const sal_Int32 nOr = 1 <<
static_cast<int>(pCntType->
GetType());
2234 std::map< void*, bool > aCurrOutLineNodeMap;
2239 pNodesToExpand->emplace_back(
m_xTreeView->make_iterator(&rParent));
2240 if (bParentHasChild)
2242 std::unique_ptr<weld::TreeIter> xChild(
m_xTreeView->make_iterator(&rParent));
2244 while (bChild && lcl_IsContent(*xChild, *
m_xTreeView))
2249 auto const nPos = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xChild))->GetOutlinePos();
2251 aCurrOutLineNodeMap.emplace( key,
false );
2255 aCurrOutLineNodeMap[key] =
true;
2258 pNodesToExpand->emplace_back(
m_xTreeView->make_iterator(xChild.get()));
2259 m_xTreeView->set_children_on_demand(*xChild,
false);
2276 auto const nPos = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(rParent))->GetOutlinePos();
2285 pNodesToExpand->emplace_back(
m_xTreeView->make_iterator(&rParent));
2290 Expand(rParent,
nullptr);
2296 if (!m_xTreeView->iter_has_child(rParent) || m_xTreeView->get_children_on_demand(rParent))
2299 if (lcl_IsContentType(rParent, *m_xTreeView))
2304 std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator(&rParent));
2305 if (m_xTreeView->iter_children(*xEntry))
2309 m_xTreeView->collapse_row(*xEntry);
2311 while (m_xTreeView->iter_next(*xEntry));
2315 SwContentType* pCntType = weld::fromId<SwContentType*>(m_xTreeView->get_id(rParent));
2316 const sal_Int32 nAnd = ~(1 <<
static_cast<int>(pCntType->
GetType()));
2319 m_nActiveBlock &= nAnd;
2320 m_pConfig->SetActiveBlock(m_nActiveBlock);
2323 m_nHiddenBlock &= nAnd;
2325 else if (lcl_IsContent(rParent, *m_xTreeView))
2328 assert(
dynamic_cast<SwOutlineContent*
>(weld::fromId<SwTypeNumber*>(m_xTreeView->get_id(rParent))));
2329 auto const nPos = weld::fromId<SwOutlineContent*>(m_xTreeView->get_id(rParent))->GetOutlinePos();
2331 mOutLineNodeMap[key] =
false;
2340 bool bConsumed =
false;
2342 std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
2343 bool bEntry = m_xTreeView->get_cursor(xEntry.get());
2345 OSL_ENSURE(bEntry,
"no current entry!");
2348 if (lcl_IsContentType(*xEntry, *m_xTreeView) && !m_xTreeView->iter_has_child(*xEntry))
2350 RequestingChildren(*xEntry);
2351 m_xTreeView->set_children_on_demand(*xEntry,
false);
2353 else if (!lcl_IsContentType(*xEntry, *m_xTreeView) && (
State::HIDDEN != m_eState))
2355 assert(
dynamic_cast<SwContent*
>(weld::fromId<SwTypeNumber*>(m_xTreeView->get_id(*xEntry))));
2356 SwContent* pCnt = weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry));
2357 assert(pCnt &&
"no UserData");
2360 if (State::CONSTANT == m_eState)
2362 m_pActiveShell->GetView().GetViewFrame().GetWindow().ToTop();
2384 sResId = RID_BMP_NAVI_OUTLINE;
2387 sResId = RID_BMP_NAVI_TABLE;
2390 sResId = RID_BMP_NAVI_FRAME;
2393 sResId = RID_BMP_NAVI_GRAPHIC;
2396 sResId = RID_BMP_NAVI_OLE;
2399 sResId = RID_BMP_NAVI_BOOKMARK;
2402 sResId = RID_BMP_NAVI_REGION;
2405 sResId = RID_BMP_NAVI_URLFIELD;
2408 sResId = RID_BMP_NAVI_REFERENCE;
2411 sResId = RID_BMP_NAVI_INDEX;
2414 sResId = RID_BMP_NAVI_POSTIT;
2417 sResId = RID_BMP_NAVI_DRAWOBJECT;
2420 sResId = RID_BMP_NAVI_TEXTFIELD;
2423 sResId = RID_BMP_NAVI_FOOTNOTE;
2426 sResId = RID_BMP_NAVI_ENDNOTE;
2429 SAL_WARN(
"sw.ui",
"ContentTypeId::UNKNOWN has no bitmap preview");
2452 std::unique_ptr<weld::TreeIter> xParent(
m_xTreeView->make_iterator(&rParent));
2455 auto nRefDepth =
m_xTreeView->get_iter_depth(*xParent);
2456 auto nActDepth = nRefDepth;
2462 nActDepth =
m_xTreeView->get_iter_depth(*xParent);
2464 }
while(xParent && nRefDepth < nActDepth);
2472 std::unique_ptr<weld::TreeIter> xEntry(
m_xTreeView->make_iterator());
2476 while (nAbsPos && xEntry)
2489 std::unique_ptr<weld::TreeIter> xOldSelEntry(
m_xTreeView->make_iterator());
2490 if (!
m_xTreeView->get_selected(xOldSelEntry.get()))
2491 xOldSelEntry.reset();
2492 OUString sOldSelEntryId;
2493 size_t nEntryRelPos = 0;
2495 sal_Int32 nOldScrollPos = 0;
2499 sOldSelEntryId =
m_xTreeView->get_id(*xOldSelEntry);
2500 nOldScrollPos =
m_xTreeView->vadjustment_get_value();
2501 std::unique_ptr<weld::TreeIter> xParentEntry =
m_xTreeView->make_iterator(xOldSelEntry.get());
2502 while (
m_xTreeView->get_iter_depth(*xParentEntry))
2527 bool bDisable = pShell ==
nullptr ||
bReadOnly;
2538 std::unique_ptr<weld::TreeIter> xEntry =
m_xTreeView->make_iterator();
2539 std::unique_ptr<weld::TreeIter> xCntTypeEntry;
2540 std::vector<std::unique_ptr<weld::TreeIter>> aNodesToExpand;
2548 std::unique_ptr<SwContentType>& rpContentT = bActive ?
2554 OUString aImage(GetImageIdForContentTypeId(nCntType));
2555 bool bChOnDemand = 0 != rpContentT->GetMemberCount();
2557 insert(
nullptr, rpContentT->GetName(),
sId, bChOnDemand, xEntry.get());
2563 xCntTypeEntry =
m_xTreeView->make_iterator(xEntry.get());
2568 if (nExpandOptions & (1 <<
static_cast<int>(nCntType)))
2571 Expand(*xEntry, &aNodesToExpand);
2572 m_xTreeView->set_children_on_demand(*xEntry,
false);
2579 for (
const auto& rNode : aNodesToExpand)
2587 std::unique_ptr<SwContentType>& rpRootContentT = bActive ?
2592 OUString aImage(GetImageIdForContentTypeId(
m_nRootType));
2595 insert(
nullptr, rpRootContentT->GetName(),
sId, bChOnDemand, xEntry.get());
2598 xCntTypeEntry =
m_xTreeView->make_iterator(xEntry.get());
2605 Expand(*xEntry, &aNodesToExpand);
2606 m_xTreeView->set_children_on_demand(*xEntry,
false);
2616 for (
const auto& rNode : aNodesToExpand)
2628 std::unique_ptr<weld::TreeIter> xSelEntry =
m_xTreeView->make_iterator(xCntTypeEntry.get());
2631 std::unique_ptr<weld::TreeIter> xIter(
m_xTreeView->make_iterator(xCntTypeEntry.get()));
2632 std::unique_ptr<weld::TreeIter> xTemp(
m_xTreeView->make_iterator(xIter.get()));
2637 if (
m_xTreeView->get_id(*xIter) == sOldSelEntryId ||
nPos == nEntryRelPos)
2646 xSelEntry = std::move(xTemp);
2656 m_xTreeView->vadjustment_set_value(nOldScrollPos);
2673 OSL_ENSURE(pWrtShell,
"no Shell!");
2675 std::unique_ptr<weld::TreeIter> xEntry(
m_xTreeView->make_iterator());
2676 bool bEntry =
m_xTreeView->get_cursor(xEntry.get());
2677 if (!bEntry || lcl_IsContentType(*xEntry, *
m_xTreeView) || !pWrtShell)
2685 bool bOutline =
false;
2686 OUString sOutlineText;
2692 OSL_ENSURE(nPos < pWrtShell->getIDocumentOutlineNodesAccess()->getOutlineNodesCount(),
2693 "outlinecnt changed");
2705 for(
int nLevel = 0;
2710 sEntry += OUString::number( nVal - pOutlRule->
Get(nLevel).
GetStart() ) +
".";
2740 if(!sEntry.isEmpty())
2773 sUrl +=
"#" + sEntry;
2774 if(!rToken.isEmpty())
2787 sEntry = sOutlineText;
2793 aBmk.
Copy( rTransfer );
2811 std::unique_ptr<weld::TreeIter> xEntry(
m_xTreeView->make_iterator());
2812 bool bEntry =
m_xTreeView->get_cursor(xEntry.get());
2819 pCntType = weld::fromId<SwContentType*>(
m_xTreeView->get_id(*xEntry));
2824 pCntType = weld::fromId<SwContent*>(
m_xTreeView->get_id(*xEntry))->GetParent();
2830 m_xTreeView->set_selection_mode(SelectionMode::Multiple);
2837 m_xTreeView->set_selection_mode(SelectionMode::Single);
2861 bool bContentChanged =
false;
2887 std::unique_ptr<weld::TreeIter> xRootEntry(
m_xTreeView->make_iterator());
2899 if (bContentChanged)
2908 std::unique_ptr<weld::TreeIter> xEntry(
m_xTreeView->make_iterator(xRootEntry.get()));
2909 for (
size_t j = 0; j < nChildCount; ++j)
2913 SAL_WARN(
"sw.ui",
"unexpected missing entry");
2925 OUString sEntryText =
m_xTreeView->get_text(*xEntry);
2926 if (sEntryText != pCnt->
GetName() &&
2940 std::unique_ptr<weld::TreeIter> xEntry(
m_xTreeView->make_iterator());
2943 auto lcl_nextContentTypeEntry = [
this, &xEntry](){
2949 for (
bool bEntry =
m_xTreeView->get_iter_first(*xEntry); bEntry;
2950 bEntry = lcl_nextContentTypeEntry())
2961 bContentChanged =
true;
2966 if (bContentChanged)
2975 if (bContentChanged)
2984 bContentChanged =
true;
2988 for(
size_t j = 0; j < nChildCount; ++j)
2992 SAL_WARN(
"sw.ui",
"unexpected missing entry");
2993 bContentChanged =
true;
3001 OUString sEntryText =
m_xTreeView->get_text(*xEntry);
3002 if( sEntryText != pCnt->
GetName() &&
3005 bContentChanged =
true;
3013 bool bRemoveChildren =
false;
3016 if (nOldChildCount != nNewChildCount)
3018 bRemoveChildren =
true;
3022 std::unique_ptr<weld::TreeIter> xChild(
m_xTreeView->make_iterator(xEntry.get()));
3024 for (
size_t j = 0; j < nOldChildCount; ++j)
3029 OUString sEntryText =
m_xTreeView->get_text(*xChild);
3030 if( sEntryText != pCnt->
GetName() &&
3033 bRemoveChildren =
true;
3038 if (bRemoveChildren)
3040 std::unique_ptr<weld::TreeIter> xRemove(
m_xTreeView->make_iterator(xEntry.get()));
3046 m_xTreeView->set_children_on_demand(*xEntry, nNewChildCount != 0);
3049 else if((nCntCount != 0)
3052 bContentChanged =
true;
3058 return bContentChanged;
3063 std::unique_ptr<weld::TreeIter> xEntry(
m_xTreeView->make_iterator());
3068 void* pId = weld::fromId<void*>(
m_xTreeView->get_id(*xEntry));
3069 if (pId && lcl_IsContentType(*xEntry, *
m_xTreeView))
3127 m_xTreeView->set_direction(rFrameDir.GetValue() == SvxFrameDirection::Horizontal_RL_TB);
3173 switch (rHint.
GetId())
3175 case SfxHintId::SwNavigatorUpdateTracking:
3178 case SfxHintId::SwNavigatorSelectOutlinesWithSelections:
3184 std::unique_ptr<weld::TreeIter> xEntry(
m_xTreeView->make_iterator());
3185 if (xEntry &&
m_xTreeView->get_selected(xEntry.get()))
3192 case SfxHintId::DocChanged:
3199 case SfxHintId::ModeChanged:
3207 std::unique_ptr<weld::TreeIter> xEntry(
m_xTreeView->make_iterator());
3227 const bool bUp = rCmd ==
"chapterup";
3228 const bool bUpDown = bUp || rCmd ==
"chapterdown";
3229 const bool bLeft = rCmd ==
"promote";
3230 const bool bLeftRight = bLeft || rCmd ==
"demote";
3231 if (!bUpDown && !bLeftRight)
3246 std::vector<SwTextNode*> selectedOutlineNodes;
3247 std::vector<std::unique_ptr<weld::TreeIter>> selected;
3249 m_xTreeView->selected_foreach([
this, pShell, &bLeftRight, &bOutlineWithChildren, &selected, &selectedOutlineNodes](
weld::TreeIter& rEntry){
3251 bool bSkip = lcl_IsContentType(rEntry, *
m_xTreeView);
3255 if ((bLeftRight || bOutlineWithChildren) && !selected.empty())
3257 std::unique_ptr<weld::TreeIter> xParent(
m_xTreeView->make_iterator(&rEntry));
3258 for (
bool bParent =
m_xTreeView->iter_parent(*xParent); bParent; bParent =
m_xTreeView->iter_parent(*xParent))
3260 if (
m_xTreeView->iter_compare(*selected.back(), *xParent) == 0)
3269 selected.emplace_back(
m_xTreeView->make_iterator(&rEntry));
3277 selectedOutlineNodes.push_back(pNode->
GetTextNode());
3284 if (bUpDown && !bUp)
3286 std::reverse(selected.begin(), selected.end());
3290 bool bStartedAction =
false;
3291 for (
auto const& pCurrentEntry : selected)
3293 assert(pCurrentEntry && lcl_IsContent(*pCurrentEntry, *
m_xTreeView));
3296 assert(
dynamic_cast<SwContent*
>(weld::fromId<SwTypeNumber*>(
m_xTreeView->get_id(*pCurrentEntry))));
3298 weld::fromId<SwContent*>(
m_xTreeView->get_id(*pCurrentEntry))->GetParent()->GetType()
3301 nActPos = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*pCurrentEntry))->GetOutlinePos();
3309 if (!bStartedAction)
3313 bStartedAction =
true;
3321 const size_t nEntryAbsPos(
GetAbsPos(*pCurrentEntry));
3323 if (!bOutlineWithChildren && ((nDir == -1 && nActPos > 0) ||
3330 else if (bOutlineWithChildren)
3333 std::unique_ptr<weld::TreeIter> xEntry(
m_xTreeView->make_iterator(pCurrentEntry.get()));
3335 const auto nActLevel = weld::fromId<SwOutlineContent*>(
3336 m_xTreeView->get_id(*pCurrentEntry))->GetOutlineLevel();
3338 while (bEntry && lcl_IsContent(*xEntry, *
m_xTreeView))
3341 if (nActLevel >= weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xEntry))->GetOutlineLevel())
3343 nActEndPos = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xEntry))->GetOutlinePos();
3348 std::unique_ptr<weld::TreeIter> xNextSibling(
m_xTreeView->make_iterator(pCurrentEntry.get()));
3354 if (bEntry && lcl_IsContent(*xEntry, *
m_xTreeView))
3364 assert(!bEntry || !lcl_IsContent(*xEntry, *
m_xTreeView)||
3371 else if (nActLevel >= weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xEntry))->GetOutlineLevel())
3375 std::unique_ptr<weld::TreeIter> xTmp(
m_xTreeView->make_iterator(xEntry.get()));
3377 while (bTmp && lcl_IsContent(*xTmp, *
m_xTreeView) &&
3378 nActLevel < weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xTmp))->GetOutlineLevel())
3381 nActLevel < weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xTmp))->GetOutlineLevel())
3388 nDest = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xTmp))->GetOutlinePos();
3390 std::unique_ptr<weld::TreeIter> xPrevSibling(
m_xTreeView->make_iterator(xEntry.get()));
3396 nDest = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xEntry))->GetOutlinePos();
3400 nDirLast = nDir = nDest - nActEndPos;
3405 nDirLast = nDir = 0;
3410 std::unique_ptr<weld::TreeIter> xPrevSibling(
m_xTreeView->make_iterator(pCurrentEntry.get()));
3417 m_xTreeView->copy_iterator(*pCurrentEntry, *xEntry);
3418 while (bEntry && nDest)
3421 assert(!bEntry || !lcl_IsContent(*xEntry, *
m_xTreeView) ||
3423 if (bEntry && lcl_IsContent(*xEntry, *
m_xTreeView))
3425 nDest = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xEntry))->GetOutlinePos();
3435 else if (nActLevel >= weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xEntry))->GetOutlineLevel())
3439 std::unique_ptr<weld::TreeIter> xTmp(
m_xTreeView->make_iterator(xEntry.get()));
3441 while (bTmp && lcl_IsContent(*xTmp, *
m_xTreeView) &&
3442 nActLevel < weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xTmp))->GetOutlineLevel() &&
3445 nDest = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xTmp))->GetOutlinePos();
3446 const auto nLevel = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xTmp))->GetOutlineLevel();
3449 while (bTmp && lcl_IsContent(*xTmp, *
m_xTreeView) &&
3450 nLevel < weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xTmp))->GetOutlineLevel())
3452 nDest = weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xTmp))->GetOutlinePos();
3460 nDirLast = nDir = nDest - nActPos;
3478 const int nActLevel = rOutlNds[nActPos]->GetTextNode()->GetAttrOutlineLevel();
3485 int nLevel = rOutlNds[
nPos]->GetTextNode()->GetAttrOutlineLevel();
3491 }
while (bOutlineWithChildren && ++
nPos < rOutlNds.
size() &&
3492 rOutlNds[
nPos]->GetTextNode()->GetAttrOutlineLevel() > nActLevel);
3505 pShell->SwCursorShell::GotoOutline(
nPos);
3507 }
while (bOutlineWithChildren && ++
nPos < rOutlNds.
size() &&
3508 rOutlNds[
nPos]->GetTextNode()->GetAttrOutlineLevel() > nActLevel);
3528 auto nOldScrollPos =
m_xTreeView->vadjustment_get_value();
3533 m_xTreeView->vadjustment_set_value(nOldScrollPos);
3537 std::unique_ptr<weld::TreeIter> xListEntry(
m_xTreeView->make_iterator());
3542 if (weld::fromId<SwOutlineContent*>(
m_xTreeView->get_id(*xListEntry))->GetOutlinePos() == nCurrPos)
3544 std::unique_ptr<weld::TreeIter> xParent(
m_xTreeView->make_iterator(xListEntry.get()));
3556 for (
SwTextNode* pNode : selectedOutlineNodes)
3559 if(aFndIt == rOutLineNds.
end())
3561 const size_t nFndPos = aFndIt - rOutLineNds.
begin();
3566 std::unique_ptr<weld::TreeIter> xParent(
m_xTreeView->make_iterator(xEntry.get()));
3600 std::unique_ptr<weld::TreeIter> xIter(rContentTree.
make_iterator());
3605 void* pUserData = weld::fromId<void*>(rContentTree.
get_id(*xIter));
3623 const void*
p =
nullptr;
3624 while (rContentTree.
iter_next(*xIter) && lcl_IsContent(*xIter, rContentTree))
3626 void* pUserData = weld::fromId<void*>(rContentTree.
get_id(*xIter));
3664 std::unique_ptr<weld::TreeIter> xFirstSelected(rContentTree.
make_iterator());
3666 xFirstSelected.reset();
3668 rContentTree.
iter_compare(*xIter, *xFirstSelected) != 0)
3684 std::u16string_view rContentTypeName, std::u16string_view rName)
3690 std::unique_ptr<weld::TreeIter> xIter(rContentTree.
make_iterator());
3692 while (bFoundEntry && rContentTypeName != rContentTree.
get_text(*xIter))
3699 while (rContentTree.
iter_next(*xIter) && lcl_IsContent(*xIter, rContentTree))
3701 if (rName == rContentTree.
get_text(*xIter))
3704 std::unique_ptr<weld::TreeIter> xFirstSelected(rContentTree.
make_iterator());
3706 xFirstSelected.reset();
3708 rContentTree.
iter_compare(*xIter, *xFirstSelected) != 0)
3725 std::unique_ptr<weld::TreeIter> xIter(rContentTree.
make_iterator());
3727 while (bFoundEntry &&
SwResId(STR_CONTENT_TYPE_DRAWOBJECT) != rContentTree.
get_text(*xIter))
3733 while (rContentTree.
iter_next(*xIter) && lcl_IsContent(*xIter, rContentTree))
3735 if (rName == rContentTree.
get_text(*xIter))
3739 rContentTree.
select(*xIter);
3752 if (!m_xTreeView->is_visible())
3758 SwView* pView = GetParentWindow()->GetCreateView();
3761 if(pActShell && pActShell->
GetWin() &&
3762 (pActShell->
GetWin()->
HasFocus() || m_bDocHasChanged || m_bViewHasChanged) &&
3765 if (m_bDocHasChanged || m_bViewHasChanged)
3767 if (State::CONSTANT == m_eState && !lcl_FindShell(m_pActiveShell))
3769 SetActiveShell(pActShell);
3770 GetParentWindow()->UpdateListBox();
3772 if (State::ACTIVE == m_eState && pActShell != GetWrtShell())
3774 SetActiveShell(pActShell);
3776 else if ((State::ACTIVE == m_eState || (State::CONSTANT == m_eState && pActShell == GetWrtShell())) &&
3777 HasContentChanged())
3779 FindActiveTypeAndRemoveUserData();
3784 m_bIsIdleClear =
false;
3785 m_bDocHasChanged =
false;
3786 m_bViewHasChanged =
false;
3788 else if (!pView && State::ACTIVE == m_eState && !m_bIsIdleClear)
3792 SetActiveShell(
nullptr);
3795 m_bIsIdleClear =
true;
3832 OUString aContentTypeName;
3837 aContentTypeName =
SwResId(STR_CONTENT_TYPE_GRAPHIC);
3843 aContentTypeName =
SwResId(STR_CONTENT_TYPE_FRAME);
3849 aContentTypeName =
SwResId(STR_CONTENT_TYPE_OLE);
3851 if (!aContentTypeName.isEmpty())
3879 if (!
aName.isEmpty())
3895 && aContentAtPos.pFndTextAttr &&
3899 if (!aContentAtPos.pFndTextAttr->GetFootnote().IsEndNote())
3903 aContentAtPos.pFndTextAttr);
3907 aContentAtPos.pFndTextAttr);
3923 if (lcl_IsUiVisibleBookmark(*ppBookmark) &&
3924 *pCursorPoint >= (*ppBookmark)->GetMarkStart() &&
3925 *pCursorPoint <= (*ppBookmark)->GetMarkEnd())
3928 SwResId(STR_CONTENT_TYPE_BOOKMARK),
3929 (*ppBookmark)->GetName());
3939 aContentAtPos.pFndTextAttr &&
3944 const SwFormatRefMark& rRefMark = aContentAtPos.pFndTextAttr->GetRefMark();
3957 static_txtattr_cast<const SwTextINetFormat*>(aContentAtPos.pFndTextAttr))
3959 if (
const SwTextNode* pTextNode = pTextINetFormat->GetpTextNode())
3979 aContentAtPos.pFndTextAttr);
4013 pTOX->GetTOXName());
4023 pSection->GetSectionName());
4031 m_xTreeView->get_selected_text() == pSection->GetSectionName())
4047 std::unique_ptr<weld::TreeIter> xFirstEntry(
m_xTreeView->make_iterator());
4053 if (lcl_IsContent(rEntry, *
m_xTreeView) && weld::fromId<SwContent*>(
4054 m_xTreeView->get_id(rEntry))->GetParent()->GetType() ==
4057 if (weld::fromId<SwOutlineContent*>(
4058 m_xTreeView->get_id(rEntry))->GetOutlinePos() == nActPos)
4060 std::unique_ptr<weld::TreeIter> xFirstSelected(
4061 m_xTreeView->make_iterator());
4062 if (!m_xTreeView->get_selected(xFirstSelected.get()))
4063 xFirstSelected.reset();
4065 if (m_xTreeView->count_selected_rows() != 1 || !xFirstSelected ||
4066 m_xTreeView->iter_compare(rEntry, *xFirstSelected) != 0)
4068 if (m_nOutlineTracking == 2)
4071 std::unique_ptr<weld::TreeIter> xChildEntry(
4072 m_xTreeView->make_iterator());
4073 if (m_xTreeView->get_iter_first(*xChildEntry) &&
4074 m_xTreeView->iter_children(*xChildEntry))
4078 if (weld::fromId<SwContent*>(
4079 m_xTreeView->get_id(*xChildEntry))->
4080 GetParent()->GetType() == ContentTypeId::OUTLINE)
4081 m_xTreeView->collapse_row(*xChildEntry);
4085 while (m_xTreeView->iter_next(*xChildEntry));
4089 m_xTreeView->set_cursor(rEntry);
4093 std::unique_ptr<weld::TreeIter> xIter(m_xTreeView->make_iterator(&rEntry));
4094 for (int i = 0; i < 2; i++)
4096 if (m_xTreeView->get_iter_depth(*xIter) == 0)
4098 if (!m_xTreeView->iter_previous(*xIter))
4100 while (!weld::IsEntryVisible(*m_xTreeView, *xIter))
4101 m_xTreeView->iter_parent(*xIter);
4106 const bool bRowExpanded = m_xTreeView->get_row_expanded(*xIter);
4107 m_xTreeView->scroll_to_row(*xIter);
4109 m_xTreeView->collapse_row(*xIter);
4118 weld::fromId<SwContentType*>(
4129 if (m_xTreeView->count_selected_rows() > 0)
4131 m_xTreeView->unselect_all();
4132 m_xTreeView->set_cursor(-1);
4142 std::vector<SwOutlineNodes::size_type> aOutlinePositions;
4153 }
while (pCursor && pCursor != pFirstCursor);
4155 if (aOutlinePositions.empty())
4159 aOutlinePositions.erase(std::unique(aOutlinePositions.begin(), aOutlinePositions.end()),
4160 aOutlinePositions.end());
4164 for (
auto nOutlinePosition : aOutlinePositions)
4168 weld::fromId<SwContent*>(
4169 m_xTreeView->get_id(rEntry))->GetParent()->GetType() ==
4172 if (weld::fromId<SwOutlineContent*>(
4173 m_xTreeView->get_id(rEntry))->GetOutlinePos() ==
4176 std::unique_ptr<weld::TreeIter> xParent =
4177 m_xTreeView->make_iterator(&rEntry);
4178 if (m_xTreeView->iter_parent(*xParent) &&
4179 !m_xTreeView->get_row_expanded(*xParent))
4180 m_xTreeView->expand_row(*xParent);
4181 m_xTreeView->select(rEntry);
4203 bool bFirstMove =
true;
4217 nPrevTargetPosOrOffset = nSourcePos - nTargetPos;
4219 nPrevTargetPosOrOffset = nSourcePos + 1;
4221 else if (nSourcePos < nTargetPos)
4225 nPrevSourcePos = nSourcePos;
4226 nPrevTargetPosOrOffset = nTargetPos;
4235 nTargetPos = nSourcePos - nPrevTargetPosOrOffset;
4237 else if (nSourcePos < nTargetPos)
4240 nSourcePos = nPrevSourcePos;
4241 nTargetPos = nPrevTargetPosOrOffset;
4257 SwView* pActView = GetParentWindow()->GetCreateView();
4261 if (State::CONSTANT == m_eState && !lcl_FindShell(m_pActiveShell))
4263 SetActiveShell(pActShell);
4266 if (State::ACTIVE == m_eState && pActShell != GetWrtShell())
4267 SetActiveShell(pActShell);
4269 else if ((State::ACTIVE == m_eState || (State::CONSTANT == m_eState && pActShell == GetWrtShell())) &&
4272 if (HasContentChanged())
4274 m_bDocHasChanged =
false;
4277 else if (State::ACTIVE == m_eState)
4283 bool bConsumed =
true;
4288 std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
4289 if (m_xTreeView->get_selected(xEntry.get()))
4290 ExpandOrCollapseAll(*m_xTreeView, *xEntry);
4294 std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
4295 if (m_xTreeView->get_selected(xEntry.get()))
4301 GetParentWindow()->ToggleTree();
4308 if (lcl_IsContentType(*xEntry, *m_xTreeView))
4310 m_xTreeView->get_row_expanded(*xEntry) ? m_xTreeView->collapse_row(*xEntry)
4311 : m_xTreeView->expand_row(*xEntry);
4314 ContentDoubleClickHdl(*m_xTreeView);
4321 std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
4322 if (m_xTreeView->get_selected(xEntry.get()) && lcl_IsContent(*xEntry, *m_xTreeView))
4324 assert(
dynamic_cast<SwContent*
>(weld::fromId<SwTypeNumber*>(m_xTreeView->get_id(*xEntry))));
4325 if (weld::fromId<SwContent*>(m_xTreeView->get_id(*xEntry))->GetParent()->IsDeletable() &&
4326 !m_pActiveShell->GetView().GetDocShell()->IsReadOnly())
4336 std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
4337 if (m_xTreeView->get_cursor(xEntry.get()))
4341 if (State::CONSTANT == m_eState)
4343 m_pActiveShell->GetView().GetViewFrame().GetWindow().ToTop();
4346 SwContent* pCnt =
dynamic_cast<SwContent*
>(weld::fromId<SwTypeNumber*>(m_xTreeView->get_id(*xEntry)));
4350 SdrView* pDrawView = m_pActiveShell->GetDrawView();
4358 bool hasObjectMarked =
false;
4376 case SdrObjKind::Group:
4377 case SdrObjKind::Text:
4378 case SdrObjKind::Line:
4379 case SdrObjKind::Rectangle:
4380 case SdrObjKind::CircleOrEllipse:
4381 case SdrObjKind::CircleSection:
4382 case SdrObjKind::CircleArc:
4383 case SdrObjKind::CircleCut:
4384 case SdrObjKind::Polygon:
4385 case SdrObjKind::PolyLine:
4386 case SdrObjKind::PathLine:
4387 case SdrObjKind::PathFill:
4388 case SdrObjKind::FreehandLine:
4389 case SdrObjKind::FreehandFill:
4390 case SdrObjKind::PathPoly:
4391 case SdrObjKind::PathPolyLine:
4392 case SdrObjKind::Caption:
4393 case SdrObjKind::CustomShape:
4395 hasObjectMarked =
true;
4403 pDrawView->
MarkObj(pTemp, pPV,
true);
4409 if ( !hasObjectMarked )
4419 m_bViewHasChanged =
true;
4425 std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
4426 if (m_xTreeView->get_cursor(xEntry.get()))
4428 SwContent* pCnt =
dynamic_cast<SwContent*
>(weld::fromId<SwTypeNumber*>(m_xTreeView->get_id(*xEntry)));
4433 m_xTreeView->unselect_all();
4439 ExecCommand(
"promote", !aCode.
IsShift());
4441 ExecCommand(
"demote", !aCode.
IsShift());
4443 ExecCommand(
"chapterup", !aCode.
IsShift());
4445 ExecCommand(
"chapterdown", !aCode.
IsShift());
4447 CopyOutlineSelections();
4466 bool bContent =
false;
4467 void* pUserData = weld::fromId<void*>(m_xTreeView->get_id(rEntry));
4468 if (lcl_IsContentType(rEntry, *m_xTreeView))
4476 nType =
static_cast<SwContent*
>(pUserData)->GetParent()->GetType();
4511 if (
nullptr != (pSect = pFormat->
GetSection()) &&
4519 sEntry =
SwResId(STR_REGION_DEFNAME) +
": " + sEntry +
"\n" +
4520 SwResId(FLD_STAT_WORD) +
": " + OUString::number(aDocStat.
nWord) +
"\n" +
4521 SwResId(FLD_STAT_CHAR) +
": " + OUString::number(aDocStat.
nChar);
4535 SwResId(STR_CONTENT_FOOTNOTE);
4540 if(
static_cast<SwContent*
>(pUserData)->IsInvisible())
4542 if(!sEntry.isEmpty())
4544 sEntry += m_sInvisible;
4549 size_t nMemberCount =
static_cast<SwContentType*
>(pUserData)->GetMemberCount();
4550 sEntry = OUString::number(nMemberCount) +
" " +
4561 if (rSelectedPopupEntry ==
"copy")
4566 if (rSelectedPopupEntry ==
"collapseallcategories")
4568 std::unique_ptr<weld::TreeIter> xEntry =
m_xTreeView->make_iterator();
4569 bool bEntry =
m_xTreeView->get_iter_first(*xEntry);
4579 std::map<OString, ContentTypeId> mPopupEntryToContentTypeId
4597 if (mPopupEntryToContentTypeId.count(rSelectedPopupEntry))
4599 ContentTypeId eCntTypeId = mPopupEntryToContentTypeId[rSelectedPopupEntry];
4605 std::unique_ptr<weld::TreeIter> xFirst(
m_xTreeView->make_iterator());
4609 if (rSelectedPopupEntry ==
"sort")
4612 const OUString& rId(
m_xTreeView->get_id(*xFirst));
4614 pCntType = weld::fromId<SwContentType*>(rId);
4616 pCntType =
const_cast<SwContentType*
>(weld::fromId<SwContent*>(rId)->GetParent());
4622 else if (rSelectedPopupEntry ==
"deletechapter" ||
4623 rSelectedPopupEntry ==
"deletetable" ||
4624 rSelectedPopupEntry ==
"deleteframe" ||
4625 rSelectedPopupEntry ==
"deleteimage" ||
4626 rSelectedPopupEntry ==
"deleteoleobject" ||
4627 rSelectedPopupEntry ==
"deletebookmark" ||
4628 rSelectedPopupEntry ==
"deletehyperlink" ||
4629 rSelectedPopupEntry ==
"deletereference" ||
4630 rSelectedPopupEntry ==
"deleteindex" ||
4631 rSelectedPopupEntry ==
"deletecomment" ||
4632 rSelectedPopupEntry ==
"deletedrawingobject" ||
4633 rSelectedPopupEntry ==
"deletefield")
4639 auto nSelectedPopupEntry = rSelectedPopupEntry.toUInt32();
4640 switch (nSelectedPopupEntry)
4642 case TOGGLE_OUTLINE_CONTENT_VISIBILITY:
4643 case HIDE_OUTLINE_CONTENT_VISIBILITY:
4644 case SHOW_OUTLINE_CONTENT_VISIBILITY:
4651 if (nSelectedPopupEntry == TOGGLE_OUTLINE_CONTENT_VISIBILITY)
4669 bool bShow(nSelectedPopupEntry == SHOW_OUTLINE_CONTENT_VISIBILITY);
4674 }
while (++
nPos < nOutlineNodesCount
4692 nSelectedPopupEntry -= 10;
4707 nSelectedPopupEntry -= 100;
4818 if(nSelectedPopupEntry > 300 && nSelectedPopupEntry < 400)
4820 nSelectedPopupEntry -= 300;
4824 nSelectedPopupEntry --;
4825 if(nSelectedPopupEntry == 0)
4832 if(nSelectedPopupEntry)
4836 Display(nSelectedPopupEntry == 1);
4855 nChapters += m_xTreeView->iter_n_children(rEntry);
4893 rpContentT->FillMemberList();
4930 if (m_pConfig->IsNavigateOnSelect())
4932 ContentDoubleClickHdl(*m_xTreeView);
4939 std::unique_ptr<weld::TreeIter> xEntry(m_xTreeView->make_iterator());
4940 if (!m_xTreeView->get_selected(xEntry.get()))
4942 while (m_xTreeView->get_iter_depth(*xEntry))
4943 m_xTreeView->iter_parent(*xEntry);
4944 m_pDialog->SelectNavigateByContentType(m_xTreeView->get_text(*xEntry));
4950 std::unique_ptr<weld::TreeIter> xEntry(
m_xTreeView->make_iterator());
4954 bool bEnable =
false;
4955 std::unique_ptr<weld::TreeIter> xParentEntry(
m_xTreeView->make_iterator(xEntry.get()));
4956 bool bParentEntry =
m_xTreeView->iter_parent(*xParentEntry);
4957 while (bParentEntry && (!lcl_IsContentType(*xParentEntry, *
m_xTreeView)))
4958 bParentEntry =
m_xTreeView->iter_parent(*xParentEntry);
4963 else if (bParentEntry)
4990 if (rEntry.isEmpty())
4993 OUStringBuffer aEntry(rEntry);
4994 for (sal_Int32
i = 0;
i < rEntry.getLength(); ++
i)
4995 if(aEntry[
i] == 10 || aEntry[
i] == 13)
4998 return aEntry.makeStringAndClear();
5006 sal_uInt16 nSlot = 0;
5011 uno::Reference< container::XNameAccess > xNameAccess, xSecond, xThird;
5025 GetDoc()->UnProtectCells( pCnt->
GetName());
5030 OUString sTable =
SwResId(STR_TABLE_NAME);
5035 sTable = aRewriterTableName.