sw/inc/crstate.hxx | 6 +++-- sw/source/core/crsr/crstrvl.cxx | 16 +++++++++++--- sw/source/core/text/frmcrsr.cxx | 16 ++++++++++++++ sw/source/ui/config/optpage.cxx | 7 ++++++ sw/source/ui/dbui/mmlayoutpage.cxx | 2 - sw/source/uibase/inc/optpage.hxx | 1 sw/uiconfig/swriter/ui/optformataidspage.ui | 30 +++++++++++++++++++++------- 7 files changed, 63 insertions(+), 15 deletions(-)
New commits: commit 23cf6dbe4d35d0d9beeaa2193247c6f67a869c66 Author: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> Date: Mon Jun 12 09:31:03 2017 +0200 tdf#108427 Direct cursor: Add option to insert only spaces Change-Id: I1136688ec8af44c533f4dd40a9a4b24ea59992ef Reviewed-on: https://gerrit.libreoffice.org/38685 Reviewed-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> Tested-by: Samuel Mehrbrodt <samuel.mehrbr...@cib.de> diff --git a/sw/inc/crstate.hxx b/sw/inc/crstate.hxx index 8c361dee61fc..71a3a7868dcb 100644 --- a/sw/inc/crstate.hxx +++ b/sw/inc/crstate.hxx @@ -27,7 +27,8 @@ enum SwFillMode { FILL_TAB, ///< default, fill with tabs - FILL_SPACE, ///< fill with spaces and tabs + FILL_TAB_SPACE, ///< fill with spaces and tabs + FILL_SPACE, ///< fill with spaces FILL_MARGIN, ///< only align left, center, right FILL_INDENT ///< by left paragraph indention }; @@ -38,11 +39,12 @@ struct SwFillCursorPos sal_uInt16 nParaCnt; ///< number of paragraphs to insert sal_uInt16 nTabCnt; ///< number of tabs respectively size of indentation sal_uInt16 nSpaceCnt; ///< number of spaces to insert + sal_uInt16 nSpaceOnlyCnt; ///< number of spaces to insert ("only spaces, no tabs" mode) sal_uInt16 nColumnCnt; ///< number of necessary column breaks sal_Int16 eOrient; ///< paragraph alignment SwFillMode eMode; ///< desired fill-up rule SwFillCursorPos( SwFillMode eMd ) : - nParaCnt( 0 ), nTabCnt( 0 ), nSpaceCnt( 0 ), nColumnCnt( 0 ), + nParaCnt( 0 ), nTabCnt( 0 ), nSpaceCnt( 0 ), nSpaceOnlyCnt(0), nColumnCnt( 0 ), eOrient( css::text::HoriOrientation::NONE ), eMode( eMd ) {} }; diff --git a/sw/source/core/crsr/crstrvl.cxx b/sw/source/core/crsr/crstrvl.cxx index 0dd9819023a5..ccd662d67f13 100644 --- a/sw/source/core/crsr/crstrvl.cxx +++ b/sw/source/core/crsr/crstrvl.cxx @@ -1950,13 +1950,21 @@ bool SwCursorShell::SetShadowCursorPos( const Point& rPt, SwFillMode eFillMode ) break; case FILL_TAB: + case FILL_TAB_SPACE: case FILL_SPACE: { OUStringBuffer sInsert; - if (aFPos.nTabCnt) - comphelper::string::padToLength(sInsert, aFPos.nTabCnt, '\t'); - if (aFPos.nSpaceCnt) - comphelper::string::padToLength(sInsert, sInsert.getLength() + aFPos.nSpaceCnt, ' '); + if (aFPos.eMode == FILL_SPACE) + { + comphelper::string::padToLength(sInsert, sInsert.getLength() + aFPos.nSpaceOnlyCnt, ' '); + } + else + { + if (aFPos.nTabCnt) + comphelper::string::padToLength(sInsert, aFPos.nTabCnt, '\t'); + if (aFPos.nSpaceCnt) + comphelper::string::padToLength(sInsert, sInsert.getLength() + aFPos.nSpaceCnt, ' '); + } if (!sInsert.isEmpty()) GetDoc()->getIDocumentContentOperations().InsertString( *m_pCurrentCursor, sInsert.makeStringAndClear()); } diff --git a/sw/source/core/text/frmcrsr.cxx b/sw/source/core/text/frmcrsr.cxx index 4481a5cb129b..dd448aab7b9f 100644 --- a/sw/source/core/text/frmcrsr.cxx +++ b/sw/source/core/text/frmcrsr.cxx @@ -538,6 +538,7 @@ struct SwFillData SwFillCursorPos &Fill() const { return *pCMS->m_pFill; } void SetTab( sal_uInt16 nNew ) { pCMS->m_pFill->nTabCnt = nNew; } void SetSpace( sal_uInt16 nNew ) { pCMS->m_pFill->nSpaceCnt = nNew; } + void SetSpaceOnly( sal_uInt16 nNew ) { pCMS->m_pFill->nSpaceOnlyCnt = nNew; } void SetOrient( const sal_Int16 eNew ){ pCMS->m_pFill->eOrient = eNew; } }; @@ -1508,6 +1509,7 @@ void SwTextFrame::FillCursorPos( SwFillData& rFill ) const SwTwips nLeftTab; SwTwips nRightTab = nLeft; sal_uInt16 nSpaceCnt = 0; + sal_uInt16 nSpaceOnlyCnt = 0; sal_uInt16 nTabCnt = 0; sal_uInt16 nIdx = 0; do @@ -1551,7 +1553,7 @@ void SwTextFrame::FillCursorPos( SwFillData& rFill ) const } while( rFill.X() > nRightTab ); --nTabCnt; - if( FILL_TAB != rFill.Mode() ) + if( FILL_TAB_SPACE == rFill.Mode() ) { if( nSpace > 0 ) { @@ -1602,6 +1604,16 @@ void SwTextFrame::FillCursorPos( SwFillData& rFill ) const } } } + else if( FILL_SPACE == rFill.Mode() ) + { + SwTwips nLeftSpace = nLeft; + while( nLeftSpace < rFill.X() ) + { + nLeftSpace += nSpace; + ++nSpaceOnlyCnt; + } + rRect.Left( nLeftSpace ); + } else { if( rFill.X() - nLeftTab < nRightTab - rFill.X() ) @@ -1624,6 +1636,7 @@ void SwTextFrame::FillCursorPos( SwFillData& rFill ) const } rFill.SetTab( nTabCnt ); rFill.SetSpace( nSpaceCnt ); + rFill.SetSpaceOnly( nSpaceOnlyCnt ); if( bFill ) { if( std::abs( rFill.X() - nCenter ) <= @@ -1632,6 +1645,7 @@ void SwTextFrame::FillCursorPos( SwFillData& rFill ) const rFill.SetOrient( text::HoriOrientation::CENTER ); rFill.SetTab( 0 ); rFill.SetSpace( 0 ); + rFill.SetSpaceOnly( 0 ); rRect.Left( nCenter ); } if( !rFill.bEmpty ) diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx index b78e70fc5936..8c6306eb839b 100644 --- a/sw/source/ui/config/optpage.cxx +++ b/sw/source/ui/config/optpage.cxx @@ -1327,6 +1327,7 @@ SwShdwCursorOptionsTabPage::SwShdwCursorOptionsTabPage( vcl::Window* pParent, get(m_pFillMarginRB, "fillmargin"); get(m_pFillIndentRB, "fillindent"); get(m_pFillTabRB, "filltab"); + get(m_pFillTabAndSpaceRB, "filltabandspace"); get(m_pFillSpaceRB, "fillspace"); get(m_pCursorProtFrame, "crsrprotframe"); @@ -1346,6 +1347,7 @@ SwShdwCursorOptionsTabPage::SwShdwCursorOptionsTabPage( vcl::Window* pParent, m_pFillMarginRB->Check( FILL_MARGIN == eMode ); m_pFillTabRB->Check( FILL_TAB == eMode ); m_pFillSpaceRB->Check( FILL_SPACE == eMode ); + m_pFillTabAndSpaceRB->Check( FILL_TAB_SPACE == eMode ); if(SfxItemState::SET == rSet.GetItemState(SID_HTML_MODE, false, &pItem ) && static_cast<const SfxUInt16Item*>(pItem)->GetValue() & HTMLMODE_ON) @@ -1361,6 +1363,7 @@ SwShdwCursorOptionsTabPage::SwShdwCursorOptionsTabPage( vcl::Window* pParent, m_pFillIndentRB->Hide(); m_pFillTabRB->Hide(); m_pFillSpaceRB->Hide(); + m_pFillTabAndSpaceRB->Hide(); m_pCursorProtFrame->Hide(); m_pCursorInProtCB->Hide(); @@ -1389,6 +1392,7 @@ void SwShdwCursorOptionsTabPage::dispose() m_pFillIndentRB.clear(); m_pFillTabRB.clear(); m_pFillSpaceRB.clear(); + m_pFillTabAndSpaceRB.clear(); m_pCursorProtFrame.clear(); m_pCursorInProtCB.clear(); m_pMathBaselineAlignmentCB.clear(); @@ -1419,6 +1423,8 @@ bool SwShdwCursorOptionsTabPage::FillItemSet( SfxItemSet* rSet ) eMode = FILL_MARGIN; else if( m_pFillTabRB->IsChecked() ) eMode = FILL_TAB; + else if ( m_pFillTabAndSpaceRB->IsChecked() ) + eMode = FILL_TAB_SPACE; else eMode = FILL_SPACE; aOpt.SetMode( eMode ); @@ -1482,6 +1488,7 @@ void SwShdwCursorOptionsTabPage::Reset( const SfxItemSet* rSet ) m_pFillMarginRB->Check( FILL_MARGIN == eMode ); m_pFillTabRB->Check( FILL_TAB == eMode ); m_pFillSpaceRB->Check( FILL_SPACE == eMode ); + m_pFillTabAndSpaceRB->Check( FILL_TAB_SPACE == eMode ); if (m_pWrtShell) { m_pMathBaselineAlignmentCB->Check( m_pWrtShell->GetDoc()->getIDocumentSettingAccess().get( DocumentSettingId::MATH_BASELINE_ALIGNMENT ) ); diff --git a/sw/source/ui/dbui/mmlayoutpage.cxx b/sw/source/ui/dbui/mmlayoutpage.cxx index 721a51b883be..6392e8418a72 100644 --- a/sw/source/ui/dbui/mmlayoutpage.cxx +++ b/sw/source/ui/dbui/mmlayoutpage.cxx @@ -423,7 +423,7 @@ void SwMailMergeLayoutPage::InsertGreeting(SwWrtShell& rShell, SwMailMergeConfig const SwRect& rPageRect = rShell.GetAnyCurRect(CurRectType::Page); const Point aGreetingPos( DEFAULT_LEFT_DISTANCE + rPageRect.Left(), GREETING_TOP_DISTANCE ); - const bool bRet = rShell.SetShadowCursorPos( aGreetingPos, FILL_SPACE ); + const bool bRet = rShell.SetShadowCursorPos( aGreetingPos, FILL_TAB_SPACE ); if(!bRet) { diff --git a/sw/source/uibase/inc/optpage.hxx b/sw/source/uibase/inc/optpage.hxx index 71c2330cf2f2..c770edf18bb2 100644 --- a/sw/source/uibase/inc/optpage.hxx +++ b/sw/source/uibase/inc/optpage.hxx @@ -251,6 +251,7 @@ class SwShdwCursorOptionsTabPage : public SfxTabPage VclPtr<RadioButton> m_pFillMarginRB; VclPtr<RadioButton> m_pFillIndentRB; VclPtr<RadioButton> m_pFillTabRB; + VclPtr<RadioButton> m_pFillTabAndSpaceRB; VclPtr<RadioButton> m_pFillSpaceRB; VclPtr<VclFrame> m_pCursorProtFrame; diff --git a/sw/uiconfig/swriter/ui/optformataidspage.ui b/sw/uiconfig/swriter/ui/optformataidspage.ui index 0af1f6edbf94..84bba183cc1c 100644 --- a/sw/uiconfig/swriter/ui/optformataidspage.ui +++ b/sw/uiconfig/swriter/ui/optformataidspage.ui @@ -177,7 +177,7 @@ <object class="GtkLabel"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="no">¶</property> + <property name="label">¶</property> </object> <packing> <property name="left_attach">1</property> @@ -188,7 +188,7 @@ <object class="GtkLabel"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="no">-</property> + <property name="label">-</property> </object> <packing> <property name="left_attach">1</property> @@ -199,7 +199,7 @@ <object class="GtkLabel"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="no">·</property> + <property name="label">·</property> </object> <packing> <property name="left_attach">1</property> @@ -210,7 +210,7 @@ <object class="GtkLabel"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="no">â</property> + <property name="label">â</property> </object> <packing> <property name="left_attach">1</property> @@ -221,7 +221,7 @@ <object class="GtkLabel"> <property name="visible">True</property> <property name="can_focus">False</property> - <property name="label" translatable="no">âµ</property> + <property name="label">âµ</property> </object> <packing> <property name="left_attach">1</property> @@ -422,7 +422,7 @@ <property name="use_underline">True</property> <property name="xalign">0</property> <property name="draw_indicator">True</property> - <property name="group">fillspace</property> + <property name="group">filltabandspace</property> </object> <packing> <property name="left_attach">0</property> @@ -430,7 +430,7 @@ </packing> </child> <child> - <object class="GtkRadioButton" id="fillspace"> + <object class="GtkRadioButton" id="filltabandspace"> <property name="label" translatable="yes">Tabs a_nd spaces</property> <property name="visible">True</property> <property name="can_focus">True</property> @@ -445,6 +445,22 @@ <property name="top_attach">3</property> </packing> </child> + <child> + <object class="GtkRadioButton" id="fillspace"> + <property name="label" translatable="yes">_Spaces</property> + <property name="visible">True</property> + <property name="can_focus">True</property> + <property name="receives_default">False</property> + <property name="use_underline">True</property> + <property name="xalign">0</property> + <property name="draw_indicator">True</property> + <property name="group">fillmargin</property> + </object> + <packing> + <property name="left_attach">0</property> + <property name="top_attach">4</property> + </packing> + </child> </object> </child> </object>
_______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits