diff options
author | Heiko Tietze <tietze.heiko@gmail.com> | 2020-12-01 12:21:10 +0100 |
---|---|---|
committer | Heiko Tietze <heiko.tietze@documentfoundation.org> | 2020-12-09 08:50:45 +0100 |
commit | c220d97e22001db116f6f8204922b25a9e61e26f (patch) | |
tree | de687cb1ba2d8eb5ef664fe90d356e3b2a576524 /sw/source | |
parent | e7ec5cf807fd65dd260e0466a79607edb7675346 (diff) |
Resolves tdf#99646 - Make default type of anchoring optional
Option introduced at Tools > Options > Writer > Formatting Aids
Change-Id: I8d890f84107647821c39669114b991c301727788
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/106970
Tested-by: Jenkins
Reviewed-by: Heiko Tietze <heiko.tietze@documentfoundation.org>
Diffstat (limited to 'sw/source')
-rw-r--r-- | sw/source/ui/config/optpage.cxx | 3 | ||||
-rw-r--r-- | sw/source/uibase/config/cfgitems.cxx | 8 | ||||
-rw-r--r-- | sw/source/uibase/config/usrpref.cxx | 22 | ||||
-rw-r--r-- | sw/source/uibase/config/viewopt.cxx | 23 | ||||
-rw-r--r-- | sw/source/uibase/frmdlg/frmmgr.cxx | 3 | ||||
-rw-r--r-- | sw/source/uibase/inc/cfgitems.hxx | 1 | ||||
-rw-r--r-- | sw/source/uibase/inc/optpage.hxx | 2 |
7 files changed, 53 insertions, 9 deletions
diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx index 69f873cdf2cd..5820f260886e 100644 --- a/sw/source/ui/config/optpage.cxx +++ b/sw/source/ui/config/optpage.cxx @@ -1215,6 +1215,7 @@ SwShdwCursorOptionsTabPage::SwShdwCursorOptionsTabPage(weld::Container* pPage, w , m_xDirectCursorFillMode(m_xBuilder->weld_combo_box("cxDirectCursorFillMode")) , m_xCursorProtFrame(m_xBuilder->weld_frame("crsrprotframe")) , m_xCursorInProtCB(m_xBuilder->weld_check_button("cursorinprot")) + , m_xDefaultAnchorType(m_xBuilder->weld_combo_box("cxDefaultAnchor")) , m_xMathBaselineAlignmentCB(m_xBuilder->weld_check_button("mathbaseline")) { const SfxPoolItem* pItem = nullptr; @@ -1305,6 +1306,7 @@ bool SwShdwCursorOptionsTabPage::FillItemSet( SfxItemSet* rSet ) aDisp.m_bCharHiddenText = m_xCharHiddenCB->get_active(); aDisp.m_bBookmarks = m_xBookmarkCB->get_active(); aDisp.m_bManualBreak = m_xBreakCB->get_active(); + aDisp.m_xDefaultAnchor = m_xDefaultAnchorType->get_active(); bRet |= (!pOldAttr || aDisp != *pOldAttr); if(bRet) @@ -1353,6 +1355,7 @@ void SwShdwCursorOptionsTabPage::Reset( const SfxItemSet* rSet ) m_xCharHiddenCB->set_active( pDocDisplayAttr->m_bCharHiddenText ); m_xBookmarkCB->set_active(pDocDisplayAttr->m_bBookmarks); m_xBreakCB->set_active( pDocDisplayAttr->m_bManualBreak ); + m_xDefaultAnchorType->set_active( pDocDisplayAttr->m_xDefaultAnchor ); } } diff --git a/sw/source/uibase/config/cfgitems.cxx b/sw/source/uibase/config/cfgitems.cxx index fc163193547f..e7d1fc2a9a11 100644 --- a/sw/source/uibase/config/cfgitems.cxx +++ b/sw/source/uibase/config/cfgitems.cxx @@ -34,6 +34,7 @@ SwDocDisplayItem::SwDocDisplayItem() : m_bCharHiddenText = m_bBookmarks = m_bManualBreak = true; + m_xDefaultAnchor = 1; //FLY_TO_CHAR }; // Item for the Settings dialog, page document view @@ -48,6 +49,7 @@ SwDocDisplayItem::SwDocDisplayItem(const SwViewOption& rVOpt ) : m_bCharHiddenText = rVOpt.IsShowHiddenChar(true); m_bBookmarks = rVOpt.IsShowBookmarks(true); m_bManualBreak = rVOpt.IsLineBreak(true); + m_xDefaultAnchor = rVOpt.GetDefaultAnchor(); } SwDocDisplayItem* SwDocDisplayItem::Clone( SfxItemPool* ) const @@ -66,9 +68,10 @@ bool SwDocDisplayItem::operator==( const SfxPoolItem& rAttr ) const m_bSpace == rItem.m_bSpace && m_bNonbreakingSpace == rItem.m_bNonbreakingSpace && m_bSoftHyphen == rItem.m_bSoftHyphen && - m_bCharHiddenText == rItem.m_bCharHiddenText && + m_bCharHiddenText == rItem.m_bCharHiddenText && m_bBookmarks == rItem.m_bBookmarks && - m_bManualBreak == rItem.m_bManualBreak ); + m_bManualBreak == rItem.m_bManualBreak && + m_xDefaultAnchor == rItem.m_xDefaultAnchor); } void SwDocDisplayItem::FillViewOptions( SwViewOption& rVOpt) const @@ -81,6 +84,7 @@ void SwDocDisplayItem::FillViewOptions( SwViewOption& rVOpt) const rVOpt.SetShowHiddenChar(m_bCharHiddenText ); rVOpt.SetShowBookmarks(m_bBookmarks ); rVOpt.SetLineBreak (m_bManualBreak ); + rVOpt.SetDefaultAnchor( m_xDefaultAnchor ); } SwElemItem::SwElemItem() : diff --git a/sw/source/uibase/config/usrpref.cxx b/sw/source/uibase/config/usrpref.cxx index 6a913b8c7b4f..e2d2336d76ac 100644 --- a/sw/source/uibase/config/usrpref.cxx +++ b/sw/source/uibase/config/usrpref.cxx @@ -76,6 +76,7 @@ SwMasterUsrPref::~SwMasterUsrPref() } const auto g_UpdateLinkIndex = 17; +const auto g_DefaultAnchor = 24; Sequence<OUString> SwContentViewConfig::GetPropertyNames() const { @@ -86,8 +87,8 @@ Sequence<OUString> SwContentViewConfig::GetPropertyNames() const "Display/DrawingControl", // 2 "Display/FieldCode", // 3 "Display/Note", // 4 - "Display/ShowContentTips", // 5 - "NonprintingCharacter/MetaCharacters", // 6 + "Display/ShowContentTips", // 5 + "NonprintingCharacter/MetaCharacters", // 6 "NonprintingCharacter/ParagraphEnd", // 7 "NonprintingCharacter/OptionalHyphen", // 8 "NonprintingCharacter/Space", // 9 @@ -104,7 +105,8 @@ Sequence<OUString> SwContentViewConfig::GetPropertyNames() const "Display/ShowInlineTooltips", // 20 "Display/UseHeaderFooterMenu", // 21 "Display/ShowOutlineContentVisibilityButton", // 22 - "Display/ShowChangesInMargin" // 23 + "Display/ShowChangesInMargin", // 23 + "Display/DefaultAnchor" // 24 }; #if defined(__GNUC__) && !defined(__clang__) // clang 8.0.0 says strcmp isn't constexpr @@ -174,8 +176,9 @@ void SwContentViewConfig::ImplCommit() case 21: bVal = m_rParent.IsUseHeaderFooterMenu(); break;// "Display/UseHeaderFooterMenu" case 22: bVal = m_rParent.IsShowOutlineContentVisibilityButton(); break;// "Display/ShowOutlineContentVisibilityButton" case 23: bVal = m_rParent.IsShowChangesInMargin(); break;// "Display/ShowChangesInMargin" + case 24: pValues[nProp] <<= m_rParent.GetDefaultAnchor(); break;// "Display/DefaultAnchor" } - if (nProp != g_UpdateLinkIndex) + if ((nProp != g_UpdateLinkIndex) && (nProp != g_DefaultAnchor)) pValues[nProp] <<= bVal; } PutProperties(aNames, aValues); @@ -189,12 +192,12 @@ void SwContentViewConfig::Load() OSL_ENSURE(aValues.getLength() == aNames.getLength(), "GetProperties failed"); if(aValues.getLength() != aNames.getLength()) return; - for(int nProp = 0; nProp < aNames.getLength(); nProp++) { if(pValues[nProp].hasValue()) { - bool bSet = nProp != g_UpdateLinkIndex && *o3tl::doAccess<bool>(pValues[nProp]); + bool bSet = ((nProp != g_UpdateLinkIndex) && (nProp != g_DefaultAnchor)) + && *o3tl::doAccess<bool>(pValues[nProp]); switch(nProp) { case 0: m_rParent.SetGraphic(bSet); break;// "Display/GraphicObject", @@ -227,6 +230,13 @@ void SwContentViewConfig::Load() case 21: m_rParent.SetUseHeaderFooterMenu(bSet); break;// "Display/UseHeaderFooterMenu" case 22: m_rParent.SetShowOutlineContentVisibilityButton(bSet); break;// "Display/ShowOutlineContententVisibilityButton" case 23: m_rParent.SetShowChangesInMargin(bSet); break;// "Display/ShowChangesInMargin" + case 24: + { + sal_Int32 nSet; + pValues[nProp] >>= nSet; + m_rParent.SetDefaultAnchor(nSet); + } + break; // "Display/DefaultAnchor" } } } diff --git a/sw/source/uibase/config/viewopt.cxx b/sw/source/uibase/config/viewopt.cxx index 07db7f778d77..3e534f1126d9 100644 --- a/sw/source/uibase/config/viewopt.cxx +++ b/sw/source/uibase/config/viewopt.cxx @@ -81,6 +81,7 @@ bool SwViewOption::IsEqualFlags( const SwViewOption &rOpt ) const && mbHideWhitespaceMode == rOpt.mbHideWhitespaceMode && m_bShowPlaceHolderFields == rOpt.m_bShowPlaceHolderFields && m_bIdle == rOpt.m_bIdle + && m_nDefaultAnchor == rOpt.m_nDefaultAnchor #ifdef DBG_UTIL // correspond to the statements in ui/config/cfgvw.src && m_bTest1 == rOpt.IsTest1() @@ -215,6 +216,8 @@ SwViewOption::SwViewOption() : m_bIdle = true; + m_nDefaultAnchor = 1; //FLY_TO_CHAR + #ifdef DBG_UTIL // correspond to the statements in ui/config/cfgvw.src m_bTest1 = m_bTest2 = m_bTest3 = m_bTest4 = @@ -253,6 +256,7 @@ SwViewOption::SwViewOption(const SwViewOption& rVOpt) mbHideWhitespaceMode = rVOpt.mbHideWhitespaceMode; m_bShowPlaceHolderFields = rVOpt.m_bShowPlaceHolderFields; m_bIdle = rVOpt.m_bIdle; + m_nDefaultAnchor = rVOpt.m_nDefaultAnchor; #ifdef DBG_UTIL m_bTest1 = rVOpt.m_bTest1; @@ -294,6 +298,7 @@ SwViewOption& SwViewOption::operator=( const SwViewOption &rVOpt ) mbHideWhitespaceMode = rVOpt.mbHideWhitespaceMode; m_bShowPlaceHolderFields = rVOpt.m_bShowPlaceHolderFields; m_bIdle = rVOpt.m_bIdle; + m_nDefaultAnchor = rVOpt.m_nDefaultAnchor; #ifdef DBG_UTIL m_bTest1 = rVOpt.m_bTest1; @@ -365,6 +370,24 @@ sal_uInt16 GetHtmlMode(const SwDocShell* pShell) return nRet; } +RndStdIds SwViewOption::GetDefaultAnchorType() +{ + switch ( m_nDefaultAnchor ) + { + case 0: + return RndStdIds::FLY_AT_PARA; //0 + break; + case 1: + return RndStdIds::FLY_AT_CHAR; //4 + break; + case 2: + return RndStdIds::FLY_AS_CHAR; //1 + break; + default: + return RndStdIds::FLY_AT_CHAR; //4 + }//switch +} + Color& SwViewOption::GetDocColor() { return s_aDocColor; diff --git a/sw/source/uibase/frmdlg/frmmgr.cxx b/sw/source/uibase/frmdlg/frmmgr.cxx index 35abd6baa560..3428c075c9c2 100644 --- a/sw/source/uibase/frmdlg/frmmgr.cxx +++ b/sw/source/uibase/frmdlg/frmmgr.cxx @@ -90,7 +90,8 @@ SwFlyFrameAttrMgr::SwFlyFrameAttrMgr( bool bNew, SwWrtShell* pSh, Frmmgr_Type nT if (!pName || *pName != SvGlobalName( SO3_SM_CLASSID )) { // Default anchor for new graphics and objects is at-char, except for Math objects. - m_aSet.Put(SwFormatAnchor(RndStdIds::FLY_AT_CHAR)); + SwViewOption aViewOpt(*pSh->GetViewOptions()); + m_aSet.Put(SwFormatAnchor(aViewOpt.GetDefaultAnchorType()));//RndStdIds::FLY_AT_CHAR } } } diff --git a/sw/source/uibase/inc/cfgitems.hxx b/sw/source/uibase/inc/cfgitems.hxx index 271fdf2a4715..a647c01f0925 100644 --- a/sw/source/uibase/inc/cfgitems.hxx +++ b/sw/source/uibase/inc/cfgitems.hxx @@ -51,6 +51,7 @@ class SW_DLLPUBLIC SwDocDisplayItem : public SfxPoolItem bool m_bCharHiddenText :1; bool m_bBookmarks :1; bool m_bManualBreak :1; + sal_Int32 m_xDefaultAnchor; public: SwDocDisplayItem(); diff --git a/sw/source/uibase/inc/optpage.hxx b/sw/source/uibase/inc/optpage.hxx index 2889f5ea6ebf..2a35c1d843a8 100644 --- a/sw/source/uibase/inc/optpage.hxx +++ b/sw/source/uibase/inc/optpage.hxx @@ -241,6 +241,8 @@ class SwShdwCursorOptionsTabPage : public SfxTabPage std::unique_ptr<weld::Frame> m_xCursorProtFrame; std::unique_ptr<weld::CheckButton> m_xCursorInProtCB; + std::unique_ptr<weld::ComboBox> m_xDefaultAnchorType; + std::unique_ptr<weld::CheckButton> m_xMathBaselineAlignmentCB; public: |