summaryrefslogtreecommitdiff
path: root/sw
diff options
context:
space:
mode:
authorHeiko Tietze <tietze.heiko@gmail.com>2020-12-01 12:21:10 +0100
committerMiklos Vajna <vmiklos@collabora.com>2021-02-24 12:21:27 +0100
commit64e84a6ac9b2bf81a271be9191a524c59cb44a72 (patch)
treebd1c1fc374599462df180a78a47b598ee96de0db /sw
parent6df1f70ee8b092cdbd2d85c84489e4fa3a960bba (diff)
Resolves tdf#99646 - Make default type of anchoring optional
Option introduced at Tools > Options > Writer > Formatting Aids (cherry picked from commit 504f651e8240d17b366cd970ded7110803d28070) Conflicts: officecfg/registry/schema/org/openoffice/Office/Writer.xcs sw/source/ui/config/optpage.cxx sw/source/uibase/config/cfgitems.cxx sw/source/uibase/config/usrpref.cxx sw/source/uibase/inc/cfgitems.hxx sw/uiconfig/swriter/ui/optformataidspage.ui Change-Id: I8d890f84107647821c39669114b991c301727788
Diffstat (limited to 'sw')
-rw-r--r--sw/inc/viewopt.hxx10
-rw-r--r--sw/source/ui/config/optpage.cxx3
-rw-r--r--sw/source/uibase/config/cfgitems.cxx6
-rw-r--r--sw/source/uibase/config/usrpref.cxx21
-rw-r--r--sw/source/uibase/config/viewopt.cxx23
-rw-r--r--sw/source/uibase/frmdlg/frmmgr.cxx3
-rw-r--r--sw/source/uibase/inc/cfgitems.hxx1
-rw-r--r--sw/source/uibase/inc/optpage.hxx2
-rw-r--r--sw/uiconfig/swriter/ui/optformataidspage.ui81
9 files changed, 143 insertions, 7 deletions
diff --git a/sw/inc/viewopt.hxx b/sw/inc/viewopt.hxx
index f5add2b728d1..6a8b21ddf2e1 100644
--- a/sw/inc/viewopt.hxx
+++ b/sw/inc/viewopt.hxx
@@ -25,6 +25,7 @@
#include <tools/gen.hxx>
#include <tools/color.hxx>
+#include <svx/swframetypes.hxx>
#include <sfx2/zoomitem.hxx>
#include "swdllapi.h"
@@ -170,6 +171,7 @@ class SW_DLLPUBLIC SwViewOption
bool mbHideWhitespaceMode : 1; // Hide header, footer, and pagebreak.
bool m_bShowPlaceHolderFields : 1; // Only used in printing!
mutable bool m_bIdle;
+ sal_Int32 m_nDefaultAnchor; // GetDefaultAnchorType() to convert int to RndStdIds
// Scale
sal_uInt16 m_nZoom; // In percent.
@@ -650,6 +652,14 @@ public:
static void SetDocBoundaries(bool bSet) {SetAppearanceFlag(ViewOptFlags::DocBoundaries, bSet);}
static void ApplyColorConfigValues(const svtools::ColorConfig& rConfig);
+
+ // get/set default anchor (0..2); use GetDefaultAnchorType() to convert into RndStdIds::FLY_*
+ sal_Int32 GetDefaultAnchor() const
+ { return m_nDefaultAnchor; }
+ void SetDefaultAnchor( const sal_Int32 aFlag )
+ { m_nDefaultAnchor = aFlag; }
+
+ RndStdIds GetDefaultAnchorType();
};
inline bool SwViewOption::operator==( const SwViewOption &rOpt ) const
diff --git a/sw/source/ui/config/optpage.cxx b/sw/source/ui/config/optpage.cxx
index 7c6140ea3a6c..fcfe6cd1a2e6 100644
--- a/sw/source/ui/config/optpage.cxx
+++ b/sw/source/ui/config/optpage.cxx
@@ -1199,6 +1199,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;
@@ -1289,6 +1290,7 @@ bool SwShdwCursorOptionsTabPage::FillItemSet( SfxItemSet* rSet )
aDisp.bCharHiddenText = m_xCharHiddenCB->get_active();
aDisp.bBookmarks = m_xBookmarkCB->get_active();
aDisp.bManualBreak = m_xBreakCB->get_active();
+ aDisp.m_xDefaultAnchor = m_xDefaultAnchorType->get_active();
bRet |= (!pOldAttr || aDisp != *pOldAttr);
if(bRet)
@@ -1337,6 +1339,7 @@ void SwShdwCursorOptionsTabPage::Reset( const SfxItemSet* rSet )
m_xCharHiddenCB->set_active( pDocDisplayAttr->bCharHiddenText );
m_xBookmarkCB->set_active(pDocDisplayAttr->bBookmarks);
m_xBreakCB->set_active( pDocDisplayAttr->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 41ce1246072d..7d103cd761a8 100644
--- a/sw/source/uibase/config/cfgitems.cxx
+++ b/sw/source/uibase/config/cfgitems.cxx
@@ -34,6 +34,7 @@ SwDocDisplayItem::SwDocDisplayItem() :
bCharHiddenText =
bBookmarks =
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 ) :
bCharHiddenText = rVOpt.IsShowHiddenChar(true);
bBookmarks = rVOpt.IsShowBookmarks(true);
bManualBreak = rVOpt.IsLineBreak(true);
+ m_xDefaultAnchor = rVOpt.GetDefaultAnchor();
}
SwDocDisplayItem* SwDocDisplayItem::Clone( SfxItemPool* ) const
@@ -68,7 +70,8 @@ bool SwDocDisplayItem::operator==( const SfxPoolItem& rAttr ) const
bSoftHyphen == rItem.bSoftHyphen &&
bCharHiddenText == rItem.bCharHiddenText &&
bBookmarks == rItem.bBookmarks &&
- bManualBreak == rItem.bManualBreak );
+ bManualBreak == rItem.bManualBreak &&
+ m_xDefaultAnchor == rItem.m_xDefaultAnchor);
}
void SwDocDisplayItem::FillViewOptions( SwViewOption& rVOpt) const
@@ -81,6 +84,7 @@ void SwDocDisplayItem::FillViewOptions( SwViewOption& rVOpt) const
rVOpt.SetShowHiddenChar(bCharHiddenText );
rVOpt.SetShowBookmarks(bBookmarks );
rVOpt.SetLineBreak (bManualBreak );
+ rVOpt.SetDefaultAnchor(m_xDefaultAnchor);
}
SwElemItem::SwElemItem() :
diff --git a/sw/source/uibase/config/usrpref.cxx b/sw/source/uibase/config/usrpref.cxx
index 77790b82c220..388bc895dd12 100644
--- a/sw/source/uibase/config/usrpref.cxx
+++ b/sw/source/uibase/config/usrpref.cxx
@@ -76,6 +76,7 @@ SwMasterUsrPref::~SwMasterUsrPref()
}
static const auto g_UpdateLinkIndex = 17;
+static const auto g_DefaultAnchor = 22;
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
@@ -102,7 +103,8 @@ Sequence<OUString> SwContentViewConfig::GetPropertyNames() const
"Update/Field", // 18
"Update/Chart", // 19
"Display/ShowInlineTooltips", // 20
- "Display/UseHeaderFooterMenu" // 21
+ "Display/UseHeaderFooterMenu", // 21
+ "Display/DefaultAnchor" // 22
};
#if defined(__GNUC__) && !defined(__clang__)
// clang 8.0.0 says strcmp isn't constexpr
@@ -170,8 +172,9 @@ void SwContentViewConfig::ImplCommit()
case 19: bVal = rParent.IsUpdateCharts(); break;// "Update/Chart"
case 20: bVal = rParent.IsShowInlineTooltips(); break;// "Display/ShowInlineTooltips"
case 21: bVal = rParent.IsUseHeaderFooterMenu(); break;// "Display/UseHeaderFooterMenu"
+ case 22: pValues[nProp] <<= rParent.GetDefaultAnchor(); break;// "Display/DefaultAnchor"
}
- if (nProp != g_UpdateLinkIndex)
+ if ((nProp != g_UpdateLinkIndex) && (nProp != g_DefaultAnchor))
pValues[nProp] <<= bVal;
}
PutProperties(aNames, aValues);
@@ -189,7 +192,8 @@ void SwContentViewConfig::Load()
{
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: rParent.SetGraphic(bSet); break;// "Display/GraphicObject",
@@ -220,6 +224,13 @@ void SwContentViewConfig::Load()
case 19: rParent.SetUpdateCharts(bSet); break;// "Update/Chart"
case 20: rParent.SetShowInlineTooltips(bSet); break;// "Display/ShowInlineTooltips"
case 21: rParent.SetUseHeaderFooterMenu(bSet); break;// "Display/UseHeaderFooterMenu"
+ case 22:
+ {
+ sal_Int32 nSet;
+ pValues[nProp] >>= nSet;
+ rParent.SetDefaultAnchor(nSet);
+ }
+ break; // "Display/DefaultAnchor"
}
}
}
diff --git a/sw/source/uibase/config/viewopt.cxx b/sw/source/uibase/config/viewopt.cxx
index 194c89bbac51..384090485f07 100644
--- a/sw/source/uibase/config/viewopt.cxx
+++ b/sw/source/uibase/config/viewopt.cxx
@@ -80,6 +80,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()
@@ -207,6 +208,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 =
@@ -245,6 +248,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;
@@ -286,6 +290,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;
@@ -357,6 +362,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 926a949e2f98..ff72e7ae3f4d 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 bf50b8f105f0..d18d90e25ae1 100644
--- a/sw/source/uibase/inc/cfgitems.hxx
+++ b/sw/source/uibase/inc/cfgitems.hxx
@@ -52,6 +52,7 @@ class SW_DLLPUBLIC SwDocDisplayItem : public SfxPoolItem
bool bCharHiddenText :1;
bool bBookmarks :1;
bool 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 73062bb3b730..bb7bd2c682aa 100644
--- a/sw/source/uibase/inc/optpage.hxx
+++ b/sw/source/uibase/inc/optpage.hxx
@@ -238,6 +238,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:
diff --git a/sw/uiconfig/swriter/ui/optformataidspage.ui b/sw/uiconfig/swriter/ui/optformataidspage.ui
index d95f1f0ca331..a83fdb8cdeba 100644
--- a/sw/uiconfig/swriter/ui/optformataidspage.ui
+++ b/sw/uiconfig/swriter/ui/optformataidspage.ui
@@ -243,6 +243,7 @@
<packing>
<property name="left_attach">0</property>
<property name="top_attach">1</property>
+ <property name="height">2</property>
</packing>
</child>
<child>
@@ -447,6 +448,86 @@
<property name="top_attach">0</property>
</packing>
</child>
+ <child>
+ <object class="GtkFrame" id="frmImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label_xalign">0</property>
+ <property name="shadow_type">none</property>
+ <child>
+ <object class="GtkAlignment" id="alignment3">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="top_padding">6</property>
+ <property name="left_padding">12</property>
+ <child>
+ <object class="GtkGrid" id="grid4">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="row_spacing">6</property>
+ <child>
+ <object class="GtkBox" id="bxFillMode1">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="spacing">6</property>
+ <child>
+ <object class="GtkLabel" id="lbDefaultAnchor">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="optformataidspage|anchor">_Anchor:</property>
+ <property name="use_underline">True</property>
+ <property name="mnemonic_widget">cxDefaultAnchor</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkComboBoxText" id="cxDefaultAnchor">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="active_id">2</property>
+ <items>
+ <item id="0" translatable="yes" context="optformataidspage|cxDefaultAnchor1">To Paragraph</item>
+ <item id="1" translatable="yes" context="optformataidspage|cxDefaultAnchor2">To Character</item>
+ <item id="2" translatable="yes" context="optformataidspage|cxDefaultAnchor3">As Character</item>
+ </items>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">1</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">0</property>
+ <property name="top_attach">0</property>
+ </packing>
+ </child>
+ </object>
+ </child>
+ </object>
+ </child>
+ <child type="label">
+ <object class="GtkLabel" id="lbImage">
+ <property name="visible">True</property>
+ <property name="can_focus">False</property>
+ <property name="label" translatable="yes" context="optformataidspage|lbImage">Image</property>
+ <attributes>
+ <attribute name="weight" value="bold"/>
+ </attributes>
+ </object>
+ </child>
+ </object>
+ <packing>
+ <property name="left_attach">1</property>
+ <property name="top_attach">2</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>