summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJustin Luth <justin.luth@collabora.com>2020-12-19 22:06:02 +0300
committerJustin Luth <justin_luth@sil.org>2020-12-21 13:26:51 +0100
commitd7dfae214384f37901b532618e4d3ef117bd0285 (patch)
tree786ca020dc7ac2d15e4c79f98911898b59188375
parentafa3dff9c7b963f1d312ef8c2efcbc8ab7271e62 (diff)
NFC flatten PageBreakWin and minor cleanup
Cleanup: -everything uses the same pCnt, so do that once and share it. -use FindFirstBodyContent to consolidate a lot of ugliness. -make pNd into a reference, since it is used unconditionally. -had to switch to IsInTab since we only have content frames now. Change-Id: I0ce66e98ea915152ef534e7719100da7cd6ca2db Reviewed-on: https://gerrit.libreoffice.org/c/core/+/108071 Tested-by: Justin Luth <justin_luth@sil.org> Reviewed-by: Justin Luth <justin_luth@sil.org>
-rw-r--r--sw/source/uibase/docvw/PageBreakWin.cxx118
1 files changed, 49 insertions, 69 deletions
diff --git a/sw/source/uibase/docvw/PageBreakWin.cxx b/sw/source/uibase/docvw/PageBreakWin.cxx
index 6167369ba219..5b405d329200 100644
--- a/sw/source/uibase/docvw/PageBreakWin.cxx
+++ b/sw/source/uibase/docvw/PageBreakWin.cxx
@@ -225,86 +225,66 @@ IMPL_LINK(SwPageBreakWin, SelectHdl, const OString&, rIdent, void)
{
SwFrameControlPtr pThis = GetEditWin()->GetFrameControlsManager( ).GetControl( FrameControlType::PageBreak, GetFrame() );
- if (rIdent == "edit")
+ SwContentFrame *pCnt = const_cast<SwContentFrame*>(GetPageFrame()->FindFirstBodyContent());
+ if (pCnt && rIdent == "edit")
{
- const SwLayoutFrame* pBodyFrame = static_cast< const SwLayoutFrame* >( GetPageFrame()->Lower() );
- while ( pBodyFrame && !pBodyFrame->IsBodyFrame() )
- pBodyFrame = static_cast< const SwLayoutFrame* >( pBodyFrame->GetNext() );
-
SwEditWin* pEditWin = GetEditWin();
- if ( pBodyFrame )
+ SwWrtShell& rSh = pEditWin->GetView().GetWrtShell();
+ bool bOldLock = rSh.IsViewLocked();
+ rSh.LockView( true );
+
+ SwContentNode& rNd = pCnt->IsTextFrame()
+ ? *static_cast<SwTextFrame*>(pCnt)->GetTextNodeFirst()
+ : *static_cast<SwNoTextFrame*>(pCnt)->GetNode();
+
+ if ( pCnt->IsInTab() )
+ {
+ rSh.Push( );
+ rSh.ClearMark();
+
+ rSh.SetSelection( rNd );
+
+ SfxStringItem aItem(pEditWin->GetView().GetPool().GetWhich(FN_FORMAT_TABLE_DLG), "textflow");
+ pEditWin->GetView().GetViewFrame()->GetDispatcher()->ExecuteList(
+ FN_FORMAT_TABLE_DLG,
+ SfxCallMode::SYNCHRON | SfxCallMode::RECORD,
+ { &aItem });
+
+ rSh.Pop(SwCursorShell::PopMode::DeleteCurrent);
+ }
+ else
{
- SwWrtShell& rSh = pEditWin->GetView().GetWrtShell();
- bool bOldLock = rSh.IsViewLocked();
- rSh.LockView( true );
-
- if ( pBodyFrame->Lower()->IsTabFrame() )
- {
- rSh.Push( );
- rSh.ClearMark();
-
- SwContentFrame *pCnt = const_cast< SwContentFrame* >( pBodyFrame->ContainsContent() );
- SwContentNode* pNd = pCnt->IsTextFrame()
- ? static_cast<SwTextFrame*>(pCnt)->GetTextNodeFirst()
- : static_cast<SwNoTextFrame*>(pCnt)->GetNode();
- rSh.SetSelection( *pNd );
-
- SfxStringItem aItem(pEditWin->GetView().GetPool().GetWhich(FN_FORMAT_TABLE_DLG), "textflow");
- pEditWin->GetView().GetViewFrame()->GetDispatcher()->ExecuteList(
- FN_FORMAT_TABLE_DLG,
- SfxCallMode::SYNCHRON | SfxCallMode::RECORD,
- { &aItem });
-
- rSh.Pop(SwCursorShell::PopMode::DeleteCurrent);
- }
- else
- {
- SwContentFrame *pCnt = const_cast< SwContentFrame* >( pBodyFrame->ContainsContent() );
- SwContentNode* pNd = pCnt->IsTextFrame()
- ? static_cast<SwTextFrame*>(pCnt)->GetTextNodeFirst()
- : static_cast<SwNoTextFrame*>(pCnt)->GetNode();
-
- SwPaM aPaM( *pNd );
- SwPaMItem aPaMItem( pEditWin->GetView().GetPool( ).GetWhich( FN_PARAM_PAM ), &aPaM );
- SfxStringItem aItem( pEditWin->GetView().GetPool( ).GetWhich( SID_PARA_DLG ), "textflow" );
- pEditWin->GetView().GetViewFrame()->GetDispatcher()->ExecuteList(
- SID_PARA_DLG,
- SfxCallMode::SYNCHRON | SfxCallMode::RECORD,
- { &aItem, &aPaMItem });
- }
- rSh.LockView( bOldLock );
- pEditWin->GrabFocus( );
+ SwPaM aPaM( rNd );
+ SwPaMItem aPaMItem( pEditWin->GetView().GetPool( ).GetWhich( FN_PARAM_PAM ), &aPaM );
+ SfxStringItem aItem( pEditWin->GetView().GetPool( ).GetWhich( SID_PARA_DLG ), "textflow" );
+ pEditWin->GetView().GetViewFrame()->GetDispatcher()->ExecuteList(
+ SID_PARA_DLG,
+ SfxCallMode::SYNCHRON | SfxCallMode::RECORD,
+ { &aItem, &aPaMItem });
}
+ rSh.LockView( bOldLock );
+ pEditWin->GrabFocus( );
}
- else if (rIdent == "delete")
+ else if (pCnt && rIdent == "delete")
{
- const SwLayoutFrame* pBodyFrame = static_cast< const SwLayoutFrame* >( GetPageFrame()->Lower() );
- while ( pBodyFrame && !pBodyFrame->IsBodyFrame() )
- pBodyFrame = static_cast< const SwLayoutFrame* >( pBodyFrame->GetNext() );
-
- if ( pBodyFrame )
- {
-
- SwContentFrame *pCnt = const_cast< SwContentFrame* >( pBodyFrame->ContainsContent() );
- SwContentNode* pNd = pCnt->IsTextFrame()
- ? static_cast<SwTextFrame*>(pCnt)->GetTextNodeFirst()
- : static_cast<SwNoTextFrame*>(pCnt)->GetNode();
+ SwContentNode& rNd = pCnt->IsTextFrame()
+ ? *static_cast<SwTextFrame*>(pCnt)->GetTextNodeFirst()
+ : *static_cast<SwNoTextFrame*>(pCnt)->GetNode();
- pNd->GetDoc().GetIDocumentUndoRedo( ).StartUndo( SwUndoId::UI_DELETE_PAGE_BREAK, nullptr );
+ rNd.GetDoc().GetIDocumentUndoRedo( ).StartUndo( SwUndoId::UI_DELETE_PAGE_BREAK, nullptr );
- SfxItemSet aSet(
- GetEditWin()->GetView().GetWrtShell().GetAttrPool(),
- svl::Items<RES_PAGEDESC, RES_BREAK>{});
- aSet.Put( SvxFormatBreakItem( SvxBreak::NONE, RES_BREAK ) );
- aSet.Put( SwFormatPageDesc( nullptr ) );
+ SfxItemSet aSet(
+ GetEditWin()->GetView().GetWrtShell().GetAttrPool(),
+ svl::Items<RES_PAGEDESC, RES_BREAK>{});
+ aSet.Put( SvxFormatBreakItem( SvxBreak::NONE, RES_BREAK ) );
+ aSet.Put( SwFormatPageDesc( nullptr ) );
- SwPaM aPaM( *pNd );
- pNd->GetDoc().getIDocumentContentOperations().InsertItemSet(
- aPaM, aSet, SetAttrMode::DEFAULT, GetPageFrame()->getRootFrame());
+ SwPaM aPaM( rNd );
+ rNd.GetDoc().getIDocumentContentOperations().InsertItemSet(
+ aPaM, aSet, SetAttrMode::DEFAULT, GetPageFrame()->getRootFrame());
- pNd->GetDoc().GetIDocumentUndoRedo( ).EndUndo( SwUndoId::UI_DELETE_PAGE_BREAK, nullptr );
- }
+ rNd.GetDoc().GetIDocumentUndoRedo( ).EndUndo( SwUndoId::UI_DELETE_PAGE_BREAK, nullptr );
}
// Only fade if there is more than this temporary shared pointer: