[Libreoffice-commits] core.git: sw/inc sw/source
Jim Raykowski (via logerrit)
logerrit at kemper.freedesktop.org
Mon Jan 20 11:18:41 UTC 2020
sw/inc/strings.hrc | 7 +
sw/source/uibase/utlui/content.cxx | 136 ++++++++++++++++++++++---------------
2 files changed, 90 insertions(+), 53 deletions(-)
New commits:
commit 062309078740e2d3ce2d6257d93055dce57a485b
Author: Jim Raykowski <raykowj at gmail..com>
AuthorDate: Sun Jan 19 00:04:04 2020 -0900
Commit: Jim Raykowski <raykowj at gmail.com>
CommitDate: Mon Jan 20 12:18:11 2020 +0100
tdf#128814 Make Writer Navigator context menus content specific
Remove content type submenus and place submenu items in root menu
Display Outline Level in Outline context menu only.
Add Delete/Promote/Demote Chapter and Promote/Demote Level to Outline
context menu.
Add Rename... to Drawing Objects context menu.
Change-Id: I39327d0ed02ab1ee88361e2d6a140ad118e069d9
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/87053
Reviewed-by: Heiko Tietze <heiko.tietze at documentfoundation.org>
Tested-by: Heiko Tietze <heiko.tietze at documentfoundation.org>
diff --git a/sw/inc/strings.hrc b/sw/inc/strings.hrc
index 13bb0760b394..561014a460a2 100644
--- a/sw/inc/strings.hrc
+++ b/sw/inc/strings.hrc
@@ -640,6 +640,11 @@
#define STR_OUTLINE_LEVEL NC_("STR_OUTLINE_LEVEL", "Outline Level")
#define STR_DRAGMODE NC_("STR_DRAGMODE", "Drag Mode")
#define STR_SEND_OUTLINE_TO_CLIPBOARD_ENTRY NC_("STR_SEND_OUTLINE_TO_CLIPBOARD_ENTRY", "Send Outline to Clipboard")
+#define STR_DELETE_CHAPTER NC_("STR_DELETE_CHAPTER", "Delete Chapter")
+#define STR_DEMOTE_CHAPTER NC_("STR_DEMOTE_CHAPTER", "Demote Chapter")
+#define STR_PROMOTE_CHAPTER NC_("STR_PROMOTE_CHAPTER", "Promote Chapter")
+#define STR_DEMOTE_LEVEL NC_("STR_DEMOTE_LEVEL", "Demote Level")
+#define STR_PROMOTE_LEVEL NC_("STR_PROMOTE_LEVEL", "Promote Level")
#define STR_EXPANDALL NC_("STR_EXPANDALL", "Expand All")
#define STR_COLLAPSEALL NC_("STR_COLLAPSEALL", "Collapse All")
#define STR_HYPERLINK NC_("STR_HYPERLINK", "Insert as Hyperlink")
@@ -669,7 +674,7 @@
#define STR_REMOVE_TBL_PROTECTION NC_("STR_REMOVE_TBL_PROTECTION", "~Unprotect")
#define STR_INVISIBLE NC_("STR_INVISIBLE", "hidden")
#define STR_BROKEN_LINK NC_("STR_BROKEN_LINK", "File not found: ")
-#define STR_RENAME NC_("STR_RENAME", "~Rename")
+#define STR_RENAME NC_("STR_RENAME", "~Rename...")
#define STR_READONLY_IDX NC_("STR_READONLY_IDX", "Read-~only")
#define STR_POSTIT_SHOW NC_("STR_POSTIT_SHOW", "Show All")
#define STR_POSTIT_HIDE NC_("STR_POSTIT_HIDE", "Hide All")
diff --git a/sw/source/uibase/utlui/content.cxx b/sw/source/uibase/utlui/content.cxx
index 38710bab0dc8..21c3d1e6ff07 100644
--- a/sw/source/uibase/utlui/content.cxx
+++ b/sw/source/uibase/utlui/content.cxx
@@ -298,7 +298,6 @@ void SwContentType::Init(bool* pbInvalidateWindow)
}
}
}
- m_bDelete = false;
}
break;
@@ -466,6 +465,7 @@ void SwContentType::Init(bool* pbInvalidateWindow)
case ContentTypeId::DRAWOBJECT:
{
m_sTypeToken.clear();
+ m_bEdit = true;
m_nMemberCount = 0;
SwDrawModel* pModel = m_pWrtShell->getIDocumentDrawModelAccess().GetDrawModel();
if(pModel)
@@ -1217,12 +1217,12 @@ static void lcl_InsertExpandCollapseAllItem(SwContentTree* pContentTree, SvTreeL
VclPtr<PopupMenu> SwContentTree::CreateContextMenu()
{
+ bool bOutline(false);
+
auto pPop = VclPtr<PopupMenu>::Create();
VclPtrInstance<PopupMenu> pSubPop1;
VclPtrInstance<PopupMenu> pSubPop2;
VclPtrInstance<PopupMenu> pSubPop3;
- VclPtrInstance<PopupMenu> pSubPop4; // Edit
- bool bSubPop4 = false;
for(int i = 1; i <= MAXLEVEL; ++i)
{
@@ -1269,10 +1269,6 @@ VclPtr<PopupMenu> SwContentTree::CreateContextMenu()
else if (State::HIDDEN == m_eState)
pSubPop3->CheckItem( nId );
- pPop->InsertItem( 1, m_aContextStrings[IDX_STR_OUTLINE_LEVEL]);
- pPop->InsertItem(2, m_aContextStrings[IDX_STR_DRAGMODE]);
- pPop->InsertItem(3, m_aContextStrings[IDX_STR_DISPLAY]);
- // Now edit
SvTreeListEntry* pEntry = nullptr;
// Edit only if the shown content is coming from the current view.
if ((State::ACTIVE == m_eState || m_pActiveShell == pActiveView->GetWrtShellPtr())
@@ -1294,70 +1290,69 @@ VclPtr<PopupMenu> SwContentTree::CreateContextMenu()
ContentTypeId::GRAPHIC == nContentType ||
ContentTypeId::OLE == nContentType ||
ContentTypeId::BOOKMARK == nContentType ||
- ContentTypeId::REGION == nContentType||
- ContentTypeId::INDEX == nContentType);
+ ContentTypeId::REGION == nContentType ||
+ ContentTypeId::INDEX == nContentType ||
+ ContentTypeId::DRAWOBJECT == nContentType);
if(!bReadonly && (bEditable || bDeletable))
{
if(ContentTypeId::INDEX == nContentType)
{
- bSubPop4 = true;
- pSubPop4->InsertItem(401, m_sRemoveIdx);
- pSubPop4->InsertItem(402, m_sUpdateIdx);
+ pPop->InsertItem(401, m_sRemoveIdx);
+ pPop->InsertItem(402, m_sUpdateIdx);
const SwTOXBase* pBase = static_cast<SwTOXBaseContent*>(pEntry->GetUserData())->GetTOXBase();
if(!pBase->IsTOXBaseInReadonly())
- pSubPop4->InsertItem(403, m_aContextStrings[IDX_STR_EDIT_ENTRY]);
- pSubPop4->InsertItem(405, m_sReadonlyIdx);
+ pPop->InsertItem(403, m_aContextStrings[IDX_STR_EDIT_ENTRY]);
+ pPop->InsertItem(405, m_sReadonlyIdx);
- pSubPop4->CheckItem( 405, SwEditShell::IsTOXBaseReadonly(*pBase));
- pSubPop4->InsertItem(501, m_aContextStrings[IDX_STR_DELETE_ENTRY]);
+ pPop->CheckItem( 405, SwEditShell::IsTOXBaseReadonly(*pBase));
+ pPop->InsertItem(501, m_aContextStrings[IDX_STR_DELETE_ENTRY]);
}
else if(ContentTypeId::TABLE == nContentType)
{
- bSubPop4 = true;
- pSubPop4->InsertItem(403, m_aContextStrings[IDX_STR_EDIT_ENTRY]);
- pSubPop4->InsertItem(404, m_sUnprotTable);
+ pPop->InsertItem(403, m_aContextStrings[IDX_STR_EDIT_ENTRY]);
+ pPop->InsertItem(404, m_sUnprotTable);
bool bFull = false;
OUString sTableName = static_cast<SwContent*>(pEntry->GetUserData())->GetName();
bool bProt = m_pActiveShell->HasTableAnyProtection( &sTableName, &bFull );
- pSubPop4->EnableItem(403, !bFull );
- pSubPop4->EnableItem(404, bProt );
- pSubPop4->InsertItem(501, m_aContextStrings[IDX_STR_DELETE_ENTRY]);
+ pPop->EnableItem(403, !bFull );
+ pPop->EnableItem(404, bProt );
+ pPop->InsertItem(501, m_aContextStrings[IDX_STR_DELETE_ENTRY]);
+ }
+ else if(ContentTypeId::OUTLINE == nContentType)
+ {
+ bOutline = true;
+ lcl_InsertExpandCollapseAllItem(this, pEntry, pPop);
+ pPop->InsertSeparator();
+ pPop->InsertItem(501, SwResId(STR_DELETE_CHAPTER));
+ pPop->InsertItem(801, SwResId(STR_PROMOTE_CHAPTER));
+ pPop->InsertItem(802, SwResId(STR_DEMOTE_CHAPTER));
+ pPop->InsertItem(803, SwResId(STR_PROMOTE_LEVEL));
+ pPop->InsertItem(804, SwResId(STR_DEMOTE_LEVEL));
+ }
+ else if(ContentTypeId::DRAWOBJECT == nContentType)
+ {
+ pPop->InsertItem(501, SwResId(STR_DELETE_ENTRY));
}
else
{
-
if(bEditable && bDeletable)
{
- pSubPop4->InsertItem(403, m_aContextStrings[IDX_STR_EDIT_ENTRY]);
- pSubPop4->InsertItem(501, m_aContextStrings[IDX_STR_DELETE_ENTRY]);
- bSubPop4 = true;
+ pPop->InsertItem(403, m_aContextStrings[IDX_STR_EDIT_ENTRY]);
+ pPop->InsertItem(501, m_aContextStrings[IDX_STR_DELETE_ENTRY]);
}
else if(bEditable)
pPop->InsertItem(403, m_aContextStrings[IDX_STR_EDIT_ENTRY]);
else if(bDeletable)
{
- pSubPop4->InsertItem(501, m_aContextStrings[IDX_STR_DELETE_ENTRY]);
+ pPop->InsertItem(501, m_aContextStrings[IDX_STR_DELETE_ENTRY]);
}
}
//Rename object
if(bRenamable)
- {
- if(bSubPop4)
- pSubPop4->InsertItem(502, m_sRename);
- else
- pPop->InsertItem(502, m_sRename);
- }
-
- if(bSubPop4)
- {
- pPop->InsertItem(4, pContType->GetSingleName());
- pPop->SetPopupMenu(4, pSubPop4);
- }
+ pPop->InsertItem(502, m_sRename);
}
- else if(ContentTypeId::OUTLINE == nContentType)
- lcl_InsertExpandCollapseAllItem(this, pEntry, pPop);
}
else if( pEntry )
{
@@ -1365,26 +1360,32 @@ VclPtr<PopupMenu> SwContentTree::CreateContextMenu()
SwContentType* pType = static_cast<SwContentType*>(pEntry->GetUserData());
if(ContentTypeId::OUTLINE == pType->GetType())
{
+ bOutline = true;
lcl_InsertExpandCollapseAllItem(this, pEntry, pPop);
pPop->InsertSeparator();
pPop->InsertItem(700, m_aContextStrings[IDX_STR_SEND_OUTLINE_TO_CLIPBOARD_ENTRY]);
}
if ( (pType->GetType() == ContentTypeId::POSTIT) && (!m_pActiveShell->GetView().GetDocShell()->IsReadOnly()) && ( pType->GetMemberCount() > 0) )
{
- bSubPop4 = true;
- pSubPop4->InsertItem(600, m_sPostItShow );
- pSubPop4->InsertItem(601, m_sPostItHide );
- pSubPop4->InsertItem(602, m_sPostItDelete );
- pPop->InsertItem(4, pType->GetSingleName());
- pPop->SetPopupMenu(4, pSubPop4);
+ pPop->InsertItem(600, m_sPostItShow );
+ pPop->InsertItem(601, m_sPostItHide );
+ pPop->InsertItem(602, m_sPostItDelete );
}
}
- pPop->SetPopupMenu( 1, pSubPop1 );
- pPop->SetPopupMenu( 2, pSubPop2 );
- pPop->SetPopupMenu( 3, pSubPop3 );
- if (!bSubPop4)
- pSubPop4.disposeAndClear();
+ pPop->InsertSeparator();
+ if (bOutline)
+ {
+ pPop->InsertItem(1, m_aContextStrings[IDX_STR_OUTLINE_LEVEL]);
+ pPop->SetPopupMenu(1, pSubPop1);
+ }
+ else
+ pSubPop1.disposeAndClear();
+ pPop->InsertItem(2, m_aContextStrings[IDX_STR_DRAGMODE]);
+ pPop->SetPopupMenu(2, pSubPop2);
+ pPop->InsertItem(3, m_aContextStrings[IDX_STR_DISPLAY]);
+ pPop->SetPopupMenu(3, pSubPop3);
+
return pPop;
}
@@ -3308,6 +3309,18 @@ void SwContentTree::ExecuteContextMenuAction( sal_uInt16 nSelectedPopupEntry )
case 800:
KeyInput(KeyEvent(0, KEY_MOD1|KEY_MULTIPLY));
break;
+ case 801:
+ ExecCommand("up", true);
+ break;
+ case 802:
+ ExecCommand("down", true);
+ break;
+ case 803:
+ ExecCommand("promote", true);
+ break;
+ case 804:
+ ExecCommand("demote", true);
+ break;
//Display
default:
if(nSelectedPopupEntry > 300 && nSelectedPopupEntry < 400)
@@ -3604,9 +3617,28 @@ void SwContentTree::EditEntry(SvTreeListEntry const * pEntry, EditEntryMode nMod
}
}
break;
+ case ContentTypeId::OUTLINE :
+ if(EditEntryMode::DELETE == nMode)
+ {
+ SwOutlineNodes::size_type nActPos = static_cast<SwOutlineContent*>(pCnt)->GetOutlinePos();
+ SwWrtShell* pShell = m_pActiveShell;
+ pShell->StartAllAction();
+ pShell->StartUndo();
+ pShell->Push();
+ pShell->MakeOutlineSel(nActPos, nActPos, true);
+ pShell->SetTextFormatColl(nullptr);
+ pShell->Delete();
+ pShell->ClearMark();
+ pShell->Pop(SwCursorShell::PopMode::DeleteCurrent);
+ pShell->EndUndo();
+ pShell->EndAllAction();
+ }
+ break;
case ContentTypeId::DRAWOBJECT :
if(EditEntryMode::DELETE == nMode)
nSlot = SID_DELETE;
+ else if(nMode == EditEntryMode::RENAME)
+ nSlot = FN_NAME_SHAPE;
break;
default: break;
}
More information about the Libreoffice-commits
mailing list