summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--icon-themes/breeze/links.txt4
-rw-r--r--icon-themes/breeze_dark/links.txt4
-rw-r--r--icon-themes/colibre/links.txt4
-rw-r--r--icon-themes/colibre_dark/links.txt4
-rw-r--r--icon-themes/elementary/links.txt4
-rw-r--r--icon-themes/sifr/links.txt4
-rw-r--r--icon-themes/sifr_dark/links.txt4
-rw-r--r--icon-themes/sukapura/links.txt4
-rw-r--r--icon-themes/sukapura_dark/links.txt4
-rw-r--r--officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu5
-rw-r--r--svx/source/sidebar/paragraph/ParaPropertyPanel.cxx232
-rw-r--r--svx/source/sidebar/paragraph/ParaPropertyPanel.hxx41
-rw-r--r--svx/source/sidebar/text/TextPropertyPanel.cxx6
-rw-r--r--svx/source/sidebar/text/TextPropertyPanel.hxx2
-rw-r--r--svx/uiconfig/ui/sidebarparagraph.ui374
-rw-r--r--svx/uiconfig/ui/sidebartextpanel.ui34
-rw-r--r--sw/sdi/_textsh.sdi4
-rw-r--r--sw/source/uibase/shells/txtattr.cxx13
18 files changed, 742 insertions, 5 deletions
diff --git a/icon-themes/breeze/links.txt b/icon-themes/breeze/links.txt
index 03d969ae0e0d..e317c127e92a 100644
--- a/icon-themes/breeze/links.txt
+++ b/icon-themes/breeze/links.txt
@@ -1736,6 +1736,10 @@ cmd/32/hyphenation.png cmd/32/hyphenate.png
cmd/lc_hyphenation.png cmd/lc_hyphenate.png
cmd/sc_hyphenation.png cmd/sc_hyphenate.png
+cmd/32/nobreak.png cmd/32/cancel.png
+cmd/lc_nobreak.png cmd/lc_cancel.png
+cmd/sc_nobreak.png cmd/sc_cancel.png
+
# Currency
cmd/32/numberformatcurrency.png cmd/32/currencyfield.png
cmd/32/numberformatcurrencysimple.png cmd/32/currencyfield.png
diff --git a/icon-themes/breeze_dark/links.txt b/icon-themes/breeze_dark/links.txt
index 748bc16ab2d2..d1b89e079757 100644
--- a/icon-themes/breeze_dark/links.txt
+++ b/icon-themes/breeze_dark/links.txt
@@ -1736,6 +1736,10 @@ cmd/32/hyphenation.png cmd/32/hyphenate.png
cmd/lc_hyphenation.png cmd/lc_hyphenate.png
cmd/sc_hyphenation.png cmd/sc_hyphenate.png
+cmd/32/nobreak.png cmd/32/cancel.png
+cmd/lc_nobreak.png cmd/lc_cancel.png
+cmd/sc_nobreak.png cmd/sc_cancel.png
+
# Currency
cmd/32/numberformatcurrency.png cmd/32/currencyfield.png
cmd/32/numberformatcurrencysimple.png cmd/32/currencyfield.png
diff --git a/icon-themes/colibre/links.txt b/icon-themes/colibre/links.txt
index f7fa0cc05107..69cbb9555f8b 100644
--- a/icon-themes/colibre/links.txt
+++ b/icon-themes/colibre/links.txt
@@ -1537,6 +1537,10 @@ cmd/32/hyphenation.png cmd/32/hyphenate.png
cmd/lc_hyphenation.png cmd/lc_hyphenate.png
cmd/sc_hyphenation.png cmd/sc_hyphenate.png
+cmd/32/nobreak.png cmd/32/cancel.png
+cmd/lc_nobreak.png cmd/lc_cancel.png
+cmd/sc_nobreak.png cmd/sc_cancel.png
+
# Currency
cmd/32/numberformatcurrencysimple.png cmd/32/numberformatcurrency.png
cmd/lc_numberformatcurrencysimple.png cmd/lc_numberformatcurrency.png
diff --git a/icon-themes/colibre_dark/links.txt b/icon-themes/colibre_dark/links.txt
index ede4f262cddb..ae2531694054 100644
--- a/icon-themes/colibre_dark/links.txt
+++ b/icon-themes/colibre_dark/links.txt
@@ -1536,6 +1536,10 @@ cmd/32/hyphenation.png cmd/32/hyphenate.png
cmd/lc_hyphenation.png cmd/lc_hyphenate.png
cmd/sc_hyphenation.png cmd/sc_hyphenate.png
+cmd/32/nobreak.png cmd/32/cancel.png
+cmd/lc_nobreak.png cmd/lc_cancel.png
+cmd/sc_nobreak.png cmd/sc_cancel.png
+
# Currency
cmd/32/numberformatcurrencysimple.png cmd/32/numberformatcurrency.png
cmd/lc_numberformatcurrencysimple.png cmd/lc_numberformatcurrency.png
diff --git a/icon-themes/elementary/links.txt b/icon-themes/elementary/links.txt
index cc35e834f5e9..393f100f1a36 100644
--- a/icon-themes/elementary/links.txt
+++ b/icon-themes/elementary/links.txt
@@ -1552,6 +1552,10 @@ cmd/32/hyphenation.png cmd/32/hyphenate.png
cmd/lc_hyphenation.png cmd/lc_hyphenate.png
cmd/sc_hyphenation.png cmd/sc_hyphenate.png
+cmd/32/nobreak.png cmd/32/cancel.png
+cmd/lc_nobreak.png cmd/lc_cancel.png
+cmd/sc_nobreak.png cmd/sc_cancel.png
+
# Currency
cmd/32/insertcurrencyfield.png cmd/32/currencyfield.png
cmd/32/numberformatcurrency.png cmd/32/currencyfield.png
diff --git a/icon-themes/sifr/links.txt b/icon-themes/sifr/links.txt
index ae5e9021ca37..f78e9ed531bb 100644
--- a/icon-themes/sifr/links.txt
+++ b/icon-themes/sifr/links.txt
@@ -1632,6 +1632,10 @@ cmd/lc_hyphenation.png cmd/lc_hyphenate.png
cmd/sc_hyphenation.png cmd/sc_hyphenate.png
+cmd/32/nobreak.png cmd/32/cancel.png
+cmd/lc_nobreak.png cmd/lc_cancel.png
+cmd/sc_nobreak.png cmd/sc_cancel.png
+
# Currency
cmd/32/numberformatcurrency.png cmd/32/currencyfield.png
cmd/32/numberformatcurrencysimple.png cmd/32/currencyfield.png
diff --git a/icon-themes/sifr_dark/links.txt b/icon-themes/sifr_dark/links.txt
index 5733722da4cb..d2d938e1a5c2 100644
--- a/icon-themes/sifr_dark/links.txt
+++ b/icon-themes/sifr_dark/links.txt
@@ -1631,6 +1631,10 @@ cmd/lc_hyphenation.png cmd/lc_hyphenate.png
cmd/sc_hyphenation.png cmd/sc_hyphenate.png
+cmd/32/nobreak.png cmd/32/cancel.png
+cmd/lc_nobreak.png cmd/lc_cancel.png
+cmd/sc_nobreak.png cmd/sc_cancel.png
+
# Currency
cmd/32/numberformatcurrency.png cmd/32/currencyfield.png
cmd/32/numberformatcurrencysimple.png cmd/32/currencyfield.png
diff --git a/icon-themes/sukapura/links.txt b/icon-themes/sukapura/links.txt
index 5bcf699978bd..945eaf721b5c 100644
--- a/icon-themes/sukapura/links.txt
+++ b/icon-themes/sukapura/links.txt
@@ -1581,6 +1581,10 @@ cmd/32/hyphenation.png cmd/32/hyphenate.png
cmd/lc_hyphenation.png cmd/lc_hyphenate.png
cmd/sc_hyphenation.png cmd/sc_hyphenate.png
+cmd/32/nobreak.png cmd/32/cancel.png
+cmd/lc_nobreak.png cmd/lc_cancel.png
+cmd/sc_nobreak.png cmd/sc_cancel.png
+
# Currency
cmd/32/numberformatcurrency.png cmd/32/currencyfield.png
cmd/32/numberformatcurrencysimple.png cmd/32/currencyfield.png
diff --git a/icon-themes/sukapura_dark/links.txt b/icon-themes/sukapura_dark/links.txt
index 9552ccb3dbf5..4f0cb444b4fe 100644
--- a/icon-themes/sukapura_dark/links.txt
+++ b/icon-themes/sukapura_dark/links.txt
@@ -1580,6 +1580,10 @@ cmd/32/hyphenation.png cmd/32/hyphenate.png
cmd/lc_hyphenation.png cmd/lc_hyphenate.png
cmd/sc_hyphenation.png cmd/sc_hyphenate.png
+cmd/32/nobreak.png cmd/32/cancel.png
+cmd/lc_nobreak.png cmd/lc_cancel.png
+cmd/sc_nobreak.png cmd/sc_cancel.png
+
# Currency
cmd/32/numberformatcurrency.png cmd/32/currencyfield.png
cmd/32/numberformatcurrencysimple.png cmd/32/currencyfield.png
diff --git a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
index 9ae5f1021926..2919ae37eb18 100644
--- a/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
+++ b/officecfg/registry/data/org/openoffice/Office/UI/WriterCommands.xcu
@@ -3046,6 +3046,9 @@
<prop oor:name="Label" oor:type="xs:string">
<value xml:lang="en-US">~Hyphenation...</value>
</prop>
+ <prop oor:name="TooltipLabel" oor:type="xs:string">
+ <value xml:lang="en-US">Insert Soft Hyphen...</value>
+ </prop>
<prop oor:name="Properties" oor:type="xs:int">
<value>9</value>
</prop>
@@ -3055,7 +3058,7 @@
<value xml:lang="en-US">No Break</value>
</prop>
<prop oor:name="Properties" oor:type="xs:int">
- <value>8</value>
+ <value>9</value>
</prop>
</node>
<node oor:name=".uno:VScroll" oor:op="replace">
diff --git a/svx/source/sidebar/paragraph/ParaPropertyPanel.cxx b/svx/source/sidebar/paragraph/ParaPropertyPanel.cxx
index c6f6b90d5bec..1b92f136fd29 100644
--- a/svx/source/sidebar/paragraph/ParaPropertyPanel.cxx
+++ b/svx/source/sidebar/paragraph/ParaPropertyPanel.cxx
@@ -78,6 +78,8 @@ void ParaPropertyPanel::HandleContextChange (
mxTBxVertAlign->show();
mxTBxBackColor->hide();
mxTBxNumBullet->hide();
+ set_hyphenation_base_visible(false);
+ set_hyphenation_other_visible(false);
ReSize();
break;
@@ -89,6 +91,8 @@ void ParaPropertyPanel::HandleContextChange (
mxTBxVertAlign->show();
mxTBxBackColor->hide();
mxTBxNumBullet->hide();
+ set_hyphenation_base_visible(false);
+ set_hyphenation_other_visible(false);
ReSize();
break;
@@ -97,6 +101,8 @@ void ParaPropertyPanel::HandleContextChange (
mxTBxVertAlign->hide();
mxTBxBackColor->show();
mxTBxNumBullet->show();
+ set_hyphenation_base_visible(true);
+ set_hyphenation_other_visible(mxTBxHyphenation->get_item_active("Hyphenate"));
ReSize();
break;
@@ -104,6 +110,14 @@ void ParaPropertyPanel::HandleContextChange (
mxTBxVertAlign->show();
mxTBxBackColor->show();
mxTBxNumBullet->show();
+ set_hyphenation_base_visible(true);
+ // close the optional controls (when the controls were hidden later,
+ // remained a big empty space before the Table panel)
+ // TODO: if the hyphenation is enabled in the table, and the hyphenation
+ // has exactly the same settings, as outside of the table, the controls
+ // remain hidden. Workaround: disable and enable hyphenation again.
+ // Enable it automatically by mouse hovering hyphenation sidebar toolbar?
+ set_hyphenation_other_visible(false);
ReSize();
break;
@@ -111,6 +125,7 @@ void ParaPropertyPanel::HandleContextChange (
mxTBxVertAlign->hide();
mxTBxBackColor->hide();
mxTBxNumBullet->hide();
+ set_hyphenation_base_visible(true);
ReSize();
break;
@@ -120,6 +135,8 @@ void ParaPropertyPanel::HandleContextChange (
case CombinedEnumContext(Application::Calc, Context::Sparkline):
case CombinedEnumContext(Application::DrawImpress, Context::Text):
case CombinedEnumContext(Application::DrawImpress, Context::OutlineText):
+ set_hyphenation_base_visible(false);
+ set_hyphenation_other_visible(false);
break;
default:
@@ -152,6 +169,65 @@ void ParaPropertyPanel::InitToolBoxSpacing()
m_eULSpaceUnit = maULSpaceControl.GetCoreMetric();
}
+void ParaPropertyPanel::set_hyphenation_base_visible( bool bVisible )
+{
+ // hide all hyphenation control for non-Writer applications
+ // TODO: add automatic hyphenation for these, too
+ mxHyphenationLabel->set_visible(bVisible);
+ mxTBxHyphenation->set_item_visible("Hyphenate", bVisible);
+}
+
+void ParaPropertyPanel::set_hyphenation_other_visible( bool bVisible )
+{
+ mxTBxHyphenation->set_item_visible("HyphenateCaps", bVisible);
+ mxTBxHyphenation->set_item_visible("HyphenateLastWord", bVisible);
+ mxTBxHyphenation->set_item_visible("HyphenateLastFullLine", bVisible);
+ mxTBxHyphenation->set_item_visible("HyphenateColumn", bVisible);
+ mxTBxHyphenation->set_item_visible("HyphenatePage", bVisible);
+ mxTBxHyphenation->set_item_visible("HyphenateSpread", bVisible);
+ mxAtLineEndLabel->set_visible(bVisible);
+ mxAtLineBeginLabel->set_visible(bVisible);
+ mxConsecutiveLabel->set_visible(bVisible);
+ mxCompoundLabel->set_visible(bVisible);
+ mxWordLengthLabel->set_visible(bVisible);
+ mxZoneLabel->set_visible(bVisible);
+ mxAtLineEnd->get_widget().set_visible(bVisible);
+ mxAtLineBegin->get_widget().set_visible(bVisible);
+ mxConsecutive->get_widget().set_visible(bVisible);
+ mxCompound->get_widget().set_visible(bVisible);
+ mxWordLength->get_widget().set_visible(bVisible);
+ mxZone->get_widget().set_visible(bVisible);
+}
+
+void ParaPropertyPanel::InitToolBoxHyphenation()
+{
+ // hide most of the controls of hyphenation
+ set_hyphenation_other_visible(false);
+ Link<weld::MetricSpinButton&,void> aLink = LINK( this, ParaPropertyPanel, HyphenationHdl_Impl );
+ mxAtLineEnd->connect_value_changed(aLink);
+ mxAtLineBegin->connect_value_changed(aLink);
+ mxConsecutive->connect_value_changed(aLink);
+ mxCompound->connect_value_changed(aLink);
+ mxWordLength->connect_value_changed(aLink);
+ mxZone->connect_value_changed(aLink);
+ m_eHyphenZoneUnit = m_aZoneControl.GetCoreMetric();
+ Link<weld::Toggleable&,void> aLinkToggled = LINK( this, ParaPropertyPanel, HyphenationToggleButtonHdl_Impl );
+ if ( mxHyphenateCapsBtn )
+ mxHyphenateCapsBtn->connect_toggled(aLinkToggled);
+ if ( mxHyphenateLastWordBtn )
+ mxHyphenateLastWordBtn->connect_toggled(aLinkToggled);
+ if ( mxHyphenateLastFullLineBtn )
+ mxHyphenateLastFullLineBtn->connect_toggled(aLinkToggled);
+ if ( mxHyphenateColumnBtn )
+ mxHyphenateColumnBtn->connect_toggled(aLinkToggled);
+ if ( mxHyphenatePageBtn )
+ mxHyphenatePageBtn->connect_toggled(aLinkToggled);
+ if ( mxHyphenateSpreadBtn )
+ mxHyphenateSpreadBtn->connect_toggled(aLinkToggled);
+ if ( mxHyphenateBtn )
+ mxHyphenateBtn->connect_toggled(aLinkToggled);
+}
+
void ParaPropertyPanel::initial()
{
limitMetricWidths();
@@ -159,6 +235,7 @@ void ParaPropertyPanel::initial()
//toolbox
InitToolBoxIndent();
InitToolBoxSpacing();
+ InitToolBoxHyphenation();
}
// for Paragraph Indent
@@ -185,6 +262,85 @@ IMPL_LINK_NOARG( ParaPropertyPanel, ULSpaceHdl_Impl, weld::MetricSpinButton&, vo
SID_ATTR_PARA_ULSPACE, SfxCallMode::RECORD, { &aMargin });
}
+void ParaPropertyPanel::fill_hyphenzone(SvxHyphenZoneItem & rHyphen)
+{
+ rHyphen.SetHyphen(mxTBxHyphenation->get_item_active("Hyphenate"));
+ rHyphen.GetMinLead() = static_cast<sal_uInt8>(mxAtLineEnd->get_value(FieldUnit::NONE));
+ rHyphen.GetMinTrail() = static_cast<sal_uInt8>(mxAtLineBegin->get_value(FieldUnit::NONE));
+ rHyphen.GetMinWordLength() = static_cast<sal_uInt8>(mxWordLength->get_value(FieldUnit::NONE));
+ rHyphen.GetMaxHyphens() = static_cast<sal_uInt8>(mxConsecutive->get_value(FieldUnit::NONE));
+ rHyphen.GetCompoundMinLead() = static_cast<sal_uInt8>(mxCompound->get_value(FieldUnit::NONE));
+ rHyphen.GetTextHyphenZone() = static_cast<sal_uInt16>(mxZone->GetCoreValue(m_eHyphenZoneUnit));
+ rHyphen.SetNoCapsHyphenation(!mxTBxHyphenation->get_item_active("HyphenateCaps"));
+ rHyphen.SetNoLastWordHyphenation(!mxTBxHyphenation->get_item_active("HyphenateLastWord"));
+ rHyphen.SetKeep(!mxTBxHyphenation->get_item_active("HyphenateSpread"));
+ rHyphen.GetKeepType() = !rHyphen.IsKeep()
+ ? 3
+ : mxTBxHyphenation->get_item_active("HyphenatePage")
+ ? 1
+ : mxTBxHyphenation->get_item_active("HyphenateColumn")
+ ? 2
+ : mxTBxHyphenation->get_item_active("HyphenateLastFullLine")
+ ? 3
+ : 4;
+}
+
+// for hyphenation
+IMPL_LINK_NOARG( ParaPropertyPanel, HyphenationHdl_Impl, weld::MetricSpinButton&, void)
+{
+ SvxHyphenZoneItem aHyphen( false, 69 /*RES_PARATR_HYPHENZONE*/);
+ fill_hyphenzone(aHyphen);
+ GetBindings()->GetDispatcher()->ExecuteList(
+ SID_ATTR_PARA_HYPHENZONE, SfxCallMode::RECORD, { &aHyphen });
+}
+
+// for hyphenation toggle buttons
+IMPL_LINK( ParaPropertyPanel, HyphenationToggleButtonHdl_Impl, weld::Toggleable&, rBtn, void)
+{
+ if ( mbUpdatingHyphenateButtons )
+ return;
+
+ // skip connect_toggled() events triggered by set_item_active(), which resulted stuck buttons
+ mbUpdatingHyphenateButtons = true;
+
+ SvxHyphenZoneItem aHyphen( false, 69 /*RES_PARATR_HYPHENZONE*/);
+ sal_Int16 nButton = 0;
+ bool bEnabled = false;
+ // get the correct getKeepType(), if clicked on one of the Hyphenate Across icons
+ if( &rBtn == mxHyphenateSpreadBtn.get() )
+ {
+ nButton = 4;
+ bEnabled = mxTBxHyphenation->get_item_active("HyphenateSpread");
+ }
+ else if( &rBtn == mxHyphenatePageBtn.get() )
+ {
+ nButton = 3;
+ bEnabled = mxTBxHyphenation->get_item_active("HyphenatePage");
+ }
+ else if( &rBtn == mxHyphenateColumnBtn.get() )
+ {
+ nButton = 2;
+ bEnabled = mxTBxHyphenation->get_item_active("HyphenateColumn");
+ }
+ else if( &rBtn == mxHyphenateLastFullLineBtn.get() )
+ {
+ nButton = 1;
+ bEnabled = mxTBxHyphenation->get_item_active("HyphenateLastFullLine");
+ }
+ if (nButton > 0)
+ {
+ mxTBxHyphenation->set_item_active("HyphenateSpread", nButton == 4 && bEnabled);
+ mxTBxHyphenation->set_item_active("HyphenatePage", nButton > 3 || (nButton == 3 && bEnabled));
+ mxTBxHyphenation->set_item_active("HyphenateColumn", nButton > 2 || (nButton == 2 && bEnabled));
+ mxTBxHyphenation->set_item_active("HyphenateLastFullLine", nButton > 1 || bEnabled);
+ }
+ fill_hyphenzone(aHyphen);
+ GetBindings()->GetDispatcher()->ExecuteList(
+ SID_ATTR_PARA_HYPHENZONE, SfxCallMode::RECORD, { &aHyphen });
+
+ mbUpdatingHyphenateButtons = false;
+}
+
// for Paragraph State change
void ParaPropertyPanel::NotifyItemUpdate(
sal_uInt16 nSID,
@@ -217,6 +373,10 @@ void ParaPropertyPanel::NotifyItemUpdate(
case SID_ATTR_PARA_ULSPACE:
StateChangedULImpl( eState, pState );
break;
+
+ case SID_ATTR_PARA_HYPHENZONE:
+ StateChangedHyphenationImpl( eState, pState );
+ break;
}
}
@@ -357,6 +517,36 @@ void ParaPropertyPanel::StateChangedULImpl( SfxItemState eState, const SfxPoolIt
limitMetricWidths();
}
+void ParaPropertyPanel::StateChangedHyphenationImpl( SfxItemState eState, const SfxPoolItem* pState )
+{
+ mxZone->set_max( mxZone->normalize( MAX_DURCH ), MapToFieldUnit(m_eHyphenZoneUnit) );
+
+ if( pState && eState >= SfxItemState::DEFAULT )
+ {
+ const SvxHyphenZoneItem* pOldItem = static_cast<const SvxHyphenZoneItem*>(pState);
+ maZone = pOldItem->GetTextHyphenZone();
+ maZone = OutputDevice::LogicToLogic(maZone, m_eHyphenZoneUnit, MapUnit::MapTwip);
+ sal_Int64 nVal = o3tl::convert(maZone, o3tl::Length::twip, o3tl::Length::cm);
+ nVal = mxZone->normalize( nVal );
+ mxZone->set_value( nVal, FieldUnit::CM );
+ mxAtLineEnd->set_value(pOldItem->GetMinLead(), FieldUnit::CHAR);
+ mxAtLineBegin->set_value(pOldItem->GetMinTrail(), FieldUnit::CHAR);
+ auto nMaxHyphens = pOldItem->GetMaxHyphens();
+ mxConsecutive->set_value(nMaxHyphens, FieldUnit::NONE);
+ mxCompound->set_value(pOldItem->GetCompoundMinLead(), FieldUnit::CHAR);
+ mxWordLength->set_value(pOldItem->GetMinWordLength(), FieldUnit::CHAR);
+ bool bHyph = pOldItem->IsHyphen();
+ mxTBxHyphenation->set_item_active("Hyphenate", bHyph);
+ mxTBxHyphenation->set_item_active("HyphenateCaps", !pOldItem->IsNoCapsHyphenation());
+ mxTBxHyphenation->set_item_active("HyphenateLastWord", !pOldItem->IsNoLastWordHyphenation());
+ mxTBxHyphenation->set_item_active("HyphenateLastFullLine", !pOldItem->IsKeep() || pOldItem->GetKeepType() < 4);
+ mxTBxHyphenation->set_item_active("HyphenateColumn", !pOldItem->IsKeep() || pOldItem->GetKeepType() < 3);
+ mxTBxHyphenation->set_item_active("HyphenatePage", !pOldItem->IsKeep() || pOldItem->GetKeepType() < 2);
+ mxTBxHyphenation->set_item_active("HyphenateSpread", !pOldItem->IsKeep() || pOldItem->GetKeepType() < 1);
+ set_hyphenation_other_visible( bHyph );
+ }
+}
+
FieldUnit ParaPropertyPanel::GetCurrentUnit( SfxItemState eState, const SfxPoolItem* pState )
{
FieldUnit eUnit = FieldUnit::NONE;
@@ -409,22 +599,54 @@ ParaPropertyPanel::ParaPropertyPanel(weld::Widget* pParent,
mxLineSpacingDispatch(new ToolbarUnoDispatcher(*mxTBxLineSpacing, *m_xBuilder, rxFrame)),
mxTBxIndent(m_xBuilder->weld_toolbar(u"indent"_ustr)),
mxIndentDispatch(new ToolbarUnoDispatcher(*mxTBxIndent, *m_xBuilder, rxFrame)),
+ //Hyphenation
+ mxTBxHyphenation(m_xBuilder->weld_toolbar(u"hyphenation"_ustr)),
+ mxHyphenationDispatch(new ToolbarUnoDispatcher(*mxTBxHyphenation, *m_xBuilder, rxFrame)),
//Paragraph spacing
mxTopDist(m_xBuilder->weld_metric_spin_button(u"aboveparaspacing"_ustr, FieldUnit::CM)),
mxBottomDist(m_xBuilder->weld_metric_spin_button(u"belowparaspacing"_ustr, FieldUnit::CM)),
mxLeftIndent(m_xBuilder->weld_metric_spin_button(u"beforetextindent"_ustr, FieldUnit::CM)),
mxRightIndent(m_xBuilder->weld_metric_spin_button(u"aftertextindent"_ustr, FieldUnit::CM)),
mxFLineIndent(m_xBuilder->weld_metric_spin_button(u"firstlineindent"_ustr, FieldUnit::CM)),
+ mxHyphenationLabel(m_xBuilder->weld_label(u"hyphenationlabel"_ustr)),
+ mxAtLineEndLabel(m_xBuilder->weld_label(u"lineend_label"_ustr)),
+ mxAtLineBeginLabel(m_xBuilder->weld_label(u"linebegin_label"_ustr)),
+ mxConsecutiveLabel(m_xBuilder->weld_label(u"consecutive_label"_ustr)),
+ mxCompoundLabel(m_xBuilder->weld_label(u"compound_label"_ustr)),
+ mxWordLengthLabel(m_xBuilder->weld_label(u"wordlength_label"_ustr)),
+ mxZoneLabel(m_xBuilder->weld_label(u"zone_label"_ustr)),
+ mxAtLineEnd(m_xBuilder->weld_metric_spin_button(u"lineend"_ustr, FieldUnit::CHAR)),
+ mxAtLineBegin(m_xBuilder->weld_metric_spin_button(u"linebegin"_ustr, FieldUnit::CHAR)),
+ mxConsecutive(m_xBuilder->weld_metric_spin_button(u"consecutive"_ustr, FieldUnit::NONE)),
+ mxCompound(m_xBuilder->weld_metric_spin_button(u"compound"_ustr, FieldUnit::CHAR)),
+ mxWordLength(m_xBuilder->weld_metric_spin_button(u"wordlength"_ustr, FieldUnit::CHAR)),
+ mxZone(m_xBuilder->weld_metric_spin_button(u"zone"_ustr, FieldUnit::CM)),
+ mbUpdatingHyphenateButtons(false),
+ mxHyphenateCapsBtn(m_xBuilder->weld_toggle_button(u"HyphenateCaps"_ustr)),
+ mxHyphenateLastWordBtn(m_xBuilder->weld_toggle_button(u"HyphenateLastWord"_ustr)),
+ mxHyphenateLastFullLineBtn(m_xBuilder->weld_toggle_button(u"HyphenateLastFullLine"_ustr)),
+ mxHyphenateColumnBtn(m_xBuilder->weld_toggle_button(u"HyphenateColumn"_ustr)),
+ mxHyphenatePageBtn(m_xBuilder->weld_toggle_button(u"HyphenatePage"_ustr)),
+ mxHyphenateSpreadBtn(m_xBuilder->weld_toggle_button(u"HyphenateSpread"_ustr)),
+ mxHyphenateBtn(m_xBuilder->weld_toggle_button(u"Hyphenate"_ustr)),
maTxtLeft (0),
maUpper (0),
maLower (0),
+ maZone (0),
m_eMetricUnit(FieldUnit::NONE),
m_last_eMetricUnit(FieldUnit::NONE),
m_eLRSpaceUnit(),
m_eULSpaceUnit(),
+ m_eHyphenZoneUnit(),
maLRSpaceControl (SID_ATTR_PARA_LRSPACE,*pBindings,*this),
maULSpaceControl (SID_ATTR_PARA_ULSPACE, *pBindings,*this),
m_aMetricCtl (SID_ATTR_METRIC, *pBindings,*this),
+ m_aAtLineEndControl (SID_ATTR_PARA_HYPHENZONE, *pBindings,*this),
+ m_aAtLineBeginControl (SID_ATTR_PARA_HYPHENZONE, *pBindings,*this),
+ m_aConsecutiveControl (SID_ATTR_PARA_HYPHENZONE, *pBindings,*this),
+ m_aCompoundControl (SID_ATTR_PARA_HYPHENZONE, *pBindings,*this),
+ m_aWordLengthControl (SID_ATTR_PARA_HYPHENZONE, *pBindings,*this),
+ m_aZoneControl (SID_ATTR_PARA_HYPHENZONE, *pBindings,*this),
mpBindings(pBindings),
mxSidebar(std::move(xSidebar))
{
@@ -434,7 +656,6 @@ ParaPropertyPanel::ParaPropertyPanel(weld::Widget* pParent,
// subsequent panels, e.g. the TableEditPanel panel can have up to 5
// entries in each of its column and remain in alignment with this panel
padWidthForSidebar(*mxTBxIndent, rxFrame);
-
initial();
m_aMetricCtl.RequestUpdate();
}
@@ -474,6 +695,9 @@ ParaPropertyPanel::~ParaPropertyPanel()
mxIndentDispatch.reset();
mxTBxIndent.reset();
+ mxHyphenationDispatch.reset();
+ mxTBxHyphenation.reset();
+
mxTopDist.reset();
mxBottomDist.reset();
mxLeftIndent.reset();
@@ -483,6 +707,12 @@ ParaPropertyPanel::~ParaPropertyPanel()
maLRSpaceControl.dispose();
maULSpaceControl.dispose();
m_aMetricCtl.dispose();
+ m_aAtLineEndControl.dispose();
+ m_aAtLineBeginControl.dispose();
+ m_aConsecutiveControl.dispose();
+ m_aCompoundControl.dispose();
+ m_aWordLengthControl.dispose();
+ m_aZoneControl.dispose();
}
} // end of namespace svx::sidebar
diff --git a/svx/source/sidebar/paragraph/ParaPropertyPanel.hxx b/svx/source/sidebar/paragraph/ParaPropertyPanel.hxx
index 04bbf9065375..1dad57b4bb29 100644
--- a/svx/source/sidebar/paragraph/ParaPropertyPanel.hxx
+++ b/svx/source/sidebar/paragraph/ParaPropertyPanel.hxx
@@ -18,6 +18,7 @@
*/
#pragma once
+#include <editeng/hyphenzoneitem.hxx>
#include <sfx2/sidebar/ControllerItem.hxx>
#include <sfx2/sidebar/IContextChangeReceiver.hxx>
#include <sfx2/sidebar/PanelLayout.hxx>
@@ -91,6 +92,8 @@ private:
std::unique_ptr<ToolbarUnoDispatcher> mxLineSpacingDispatch;
std::unique_ptr<weld::Toolbar> mxTBxIndent;
std::unique_ptr<ToolbarUnoDispatcher> mxIndentDispatch;
+ std::unique_ptr<weld::Toolbar> mxTBxHyphenation;
+ std::unique_ptr<ToolbarUnoDispatcher> mxHyphenationDispatch;
//Paragraph spacing
std::optional<SvxRelativeField> mxTopDist;
@@ -99,19 +102,50 @@ private:
std::optional<SvxRelativeField> mxRightIndent;
std::optional<SvxRelativeField> mxFLineIndent;
+ // Hyphenation
+ std::unique_ptr<weld::Label> mxHyphenationLabel;
+ std::unique_ptr<weld::Label> mxAtLineEndLabel;
+ std::unique_ptr<weld::Label> mxAtLineBeginLabel;
+ std::unique_ptr<weld::Label> mxConsecutiveLabel;
+ std::unique_ptr<weld::Label> mxCompoundLabel;
+ std::unique_ptr<weld::Label> mxWordLengthLabel;
+ std::unique_ptr<weld::Label> mxZoneLabel;
+ std::optional<SvxRelativeField> mxAtLineEnd;
+ std::optional<SvxRelativeField> mxAtLineBegin;
+ std::optional<SvxRelativeField> mxConsecutive;
+ std::optional<SvxRelativeField> mxCompound;
+ std::optional<SvxRelativeField> mxWordLength;
+ std::optional<SvxRelativeField> mxZone;
+ bool mbUpdatingHyphenateButtons;
+ std::unique_ptr<weld::ToggleButton> mxHyphenateCapsBtn;
+ std::unique_ptr<weld::ToggleButton> mxHyphenateLastWordBtn;
+ std::unique_ptr<weld::ToggleButton> mxHyphenateLastFullLineBtn;
+ std::unique_ptr<weld::ToggleButton> mxHyphenateColumnBtn;
+ std::unique_ptr<weld::ToggleButton> mxHyphenatePageBtn;
+ std::unique_ptr<weld::ToggleButton> mxHyphenateSpreadBtn;
+ std::unique_ptr<weld::ToggleButton> mxHyphenateBtn;
+
// Data Member
tools::Long maTxtLeft;
tools::Long maUpper;
tools::Long maLower;
+ tools::Long maZone;
FieldUnit m_eMetricUnit;
FieldUnit m_last_eMetricUnit;
MapUnit m_eLRSpaceUnit;
MapUnit m_eULSpaceUnit;
+ MapUnit m_eHyphenZoneUnit;
// Control Items
::sfx2::sidebar::ControllerItem maLRSpaceControl;
::sfx2::sidebar::ControllerItem maULSpaceControl;
::sfx2::sidebar::ControllerItem m_aMetricCtl;
+ ::sfx2::sidebar::ControllerItem m_aAtLineEndControl;
+ ::sfx2::sidebar::ControllerItem m_aAtLineBeginControl;
+ ::sfx2::sidebar::ControllerItem m_aConsecutiveControl;
+ ::sfx2::sidebar::ControllerItem m_aCompoundControl;
+ ::sfx2::sidebar::ControllerItem m_aWordLengthControl;
+ ::sfx2::sidebar::ControllerItem m_aZoneControl;
vcl::EnumContext maContext;
SfxBindings* mpBindings;
@@ -119,14 +153,21 @@ private:
DECL_LINK(ModifyIndentHdl_Impl, weld::MetricSpinButton&, void);
DECL_LINK(ULSpaceHdl_Impl, weld::MetricSpinButton&, void);
+ DECL_LINK(HyphenationHdl_Impl, weld::MetricSpinButton&, void);
+ DECL_LINK(HyphenationToggleButtonHdl_Impl, weld::Toggleable&, void);
void StateChangedIndentImpl( SfxItemState eState, const SfxPoolItem* pState );
void StateChangedULImpl( SfxItemState eState, const SfxPoolItem* pState );
+ void StateChangedHyphenationImpl( SfxItemState eState, const SfxPoolItem* pState );
void initial();
+ void set_hyphenation_base_visible(bool bVisible);
+ void set_hyphenation_other_visible(bool bVisible);
+ void fill_hyphenzone(SvxHyphenZoneItem& rHyphen);
void ReSize();
void InitToolBoxIndent();
void InitToolBoxSpacing();
+ void InitToolBoxHyphenation();
void limitMetricWidths();
};
diff --git a/svx/source/sidebar/text/TextPropertyPanel.cxx b/svx/source/sidebar/text/TextPropertyPanel.cxx
index db5d565e3aca..664772dbca0b 100644
--- a/svx/source/sidebar/text/TextPropertyPanel.cxx
+++ b/svx/source/sidebar/text/TextPropertyPanel.cxx
@@ -57,6 +57,8 @@ TextPropertyPanel::TextPropertyPanel(weld::Widget* pParent, const css::uno::Refe
, mxResetBarDispatch(new ToolbarUnoDispatcher(*mxResetBar, *m_xBuilder, rxFrame))
, mxDefaultBar(m_xBuilder->weld_toolbar(u"defaultattr"_ustr))
, mxDefaultBarDispatch(new ToolbarUnoDispatcher(*mxDefaultBar, *m_xBuilder, rxFrame))
+ , mxHyphenationBar(m_xBuilder->weld_toolbar(u"hyphenation"_ustr))
+ , mxHyphenationBarDispatch(new ToolbarUnoDispatcher(*mxHyphenationBar, *m_xBuilder, rxFrame))
, mxPositionBar(m_xBuilder->weld_toolbar(u"position"_ustr))
, mxPositionBarDispatch(new ToolbarUnoDispatcher(*mxPositionBar, *m_xBuilder, rxFrame))
, mxSpacingBar(m_xBuilder->weld_toolbar(u"spacingbar"_ustr))
@@ -74,6 +76,7 @@ TextPropertyPanel::~TextPropertyPanel()
{
mxResetBarDispatch.reset();
mxDefaultBarDispatch.reset();
+ mxHyphenationBarDispatch.reset();
mxPositionBarDispatch.reset();
mxSpacingBarDispatch.reset();
mxToolBoxFontColorDispatch.reset();
@@ -85,6 +88,7 @@ TextPropertyPanel::~TextPropertyPanel()
mxResetBar.reset();
mxDefaultBar.reset();
+ mxHyphenationBar.reset();
mxPositionBar.reset();
mxSpacingBar.reset();
mxToolBoxFontColor.reset();
@@ -142,6 +146,8 @@ void TextPropertyPanel::HandleContextChange (
mxToolBoxBackgroundColor->set_visible(bWriterText || bDrawText);
mxResetBar->set_visible(bWriterText || bCalcText);
mxDefaultBar->set_visible(bDrawText);
+ mxHyphenationBar->set_visible(bWriterText);
+ mxSpacingBar->set_item_visible(".uno:NoBreak", bWriterText);
}
} // end of namespace svx::sidebar
diff --git a/svx/source/sidebar/text/TextPropertyPanel.hxx b/svx/source/sidebar/text/TextPropertyPanel.hxx
index c383ef1bd891..9178b32a530d 100644
--- a/svx/source/sidebar/text/TextPropertyPanel.hxx
+++ b/svx/source/sidebar/text/TextPropertyPanel.hxx
@@ -61,6 +61,8 @@ private:
std::unique_ptr<ToolbarUnoDispatcher> mxResetBarDispatch;
std::unique_ptr<weld::Toolbar> mxDefaultBar;
std::unique_ptr<ToolbarUnoDispatcher> mxDefaultBarDispatch;
+ std::unique_ptr<weld::Toolbar> mxHyphenationBar;
+ std::unique_ptr<ToolbarUnoDispatcher> mxHyphenationBarDispatch;
std::unique_ptr<weld::Toolbar> mxPositionBar;
std::unique_ptr<ToolbarUnoDispatcher> mxPositionBarDispatch;
std::unique_ptr<weld::Toolbar> mxSpacingBar;
diff --git a/svx/uiconfig/ui/sidebarparagraph.ui b/svx/uiconfig/ui/sidebarparagraph.ui
index 8691368ae974..b6f022f47b63 100644
--- a/svx/uiconfig/ui/sidebarparagraph.ui
+++ b/svx/uiconfig/ui/sidebarparagraph.ui
@@ -27,6 +27,44 @@
<property name="step-increment">1</property>
<property name="page-increment">10</property>
</object>
+ <object class="GtkAdjustment" id="adjustment6">
+ <property name="lower">1</property>
+ <property name="upper">9</property>
+ <property name="value">2</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment7">
+ <property name="lower">2</property>
+ <property name="upper">9</property>
+ <property name="value">2</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment8">
+ <property name="upper">99</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment9">
+ <property name="lower">2</property>
+ <property name="upper">9</property>
+ <property name="value">2</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment10">
+ <property name="lower">4</property>
+ <property name="upper">99</property>
+ <property name="value">4</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
+ <object class="GtkAdjustment" id="adjustment11">
+ <property name="upper">55.88</property>
+ <property name="step-increment">1</property>
+ <property name="page-increment">10</property>
+ </object>
<!-- n-columns=1 n-rows=1 -->
<object class="GtkGrid" id="ParaPropertyPanel">
<property name="visible">True</property>
@@ -38,7 +76,7 @@
<property name="can-focus">False</property>
<property name="hexpand">True</property>
<property name="border-width">6</property>
- <property name="row-spacing">3</property>
+ <property name="row-spacing">1</property>
<property name="column-spacing">6</property>
<property name="column-homogeneous">True</property>
<child>
@@ -614,6 +652,340 @@
</packing>
</child>
<child>
+ <object class="GtkBox" id="box4">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">vertical</property>
+ <property name="spacing">3</property>
+ <child>
+ <object class="GtkBox" id="box5">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="orientation">horizontal</property>
+ <property name="spacing">3</property>
+ <child>
+ <object class="GtkToolbar" id="hyphenation">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes" context="sidebarparagraph|hyphenation|tooltip_text">Hyphenation</property>
+ <property name="toolbar-style">icons</property>
+ <property name="show-arrow">False</property>
+ <property name="icon_size">2</property>
+ <child>
+ <object class="GtkToggleToolButton" id="HyphenateCaps">
+ <property name="visible">True</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="use-underline">True</property>
+ <property name="icon-name">cmd/sc_changecasetoupper.png</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|hyphenation|caps">Hyphenate CAPS</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="HyphenateLastWord">
+ <property name="visible">True</property>
+ <property name="use-underline">True</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="icon-name">cmd/sc_textbodyparastyle.png</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|hyphenation|lastword">Hyphenate Last Paragraph Word</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="HyphenateLastFullLine">
+ <property name="visible">True</property>
+ <property name="use-underline">True</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="icon-name">cmd/sc_insertfooter.png</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|hyphenation|lastfullline">Hyphenate Last Full Paragraph Line</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="HyphenateColumn">
+ <property name="visible">True</property>
+ <property name="use-underline">True</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="icon-name">cmd/sc_formatcolumns.png</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|hyphenation|column">Hyphenate Across Column</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="HyphenatePage">
+ <property name="visible">False</property>
+ <property name="use-underline">True</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="icon-name">cmd/sc_showtwopages.png</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|hyphenation|page">Hyphenate Across Page</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="HyphenateSpread">
+ <property name="visible">False</property>
+ <property name="use-underline">True</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="icon-name">cmd/sc_showmultiplepages.png</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|hyphenation|spread">Hyphenate Across Spread</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkToggleToolButton" id="Hyphenate">
+ <property name="visible">True</property>
+ <property name="use-underline">True</property>
+ <property name="margin-start">1</property>
+ <property name="margin-end">1</property>
+ <property name="icon-name">cmd/sc_hyphenation.png</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|hyphenation|hyphenation">Hyphenation</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="hyphenationlabel">
+ <property name="visible">True</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|hyphenationlabel">_Hyphenation:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">hyphenation</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>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">3</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">4</property>
+ <property name="width">2</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="lineend_label">
+ <property name="visible">False</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|lineend_label">At line end:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">lineend</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="linebegin_label">
+ <property name="visible">False</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|linebegin_label">At line begin:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">linebegin</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">5</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="compound_label">
+ <property name="visible">False</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|linebegin_label">Compound constituent:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">compound</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="consecutive_label">
+ <property name="visible">False</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|lineend_label">Consecutive lines:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">consecutive</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">7</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="wordlength_label">
+ <property name="visible">False</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|linebegin_label">Word length:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">wordlength</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">9</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkLabel" id="zone_label">
+ <property name="visible">False</property>
+ <property name="can-focus">False</property>
+ <property name="hexpand">True</property>
+ <property name="label" translatable="yes" context="sidebarparagraph|lineend_label">Hyphenation zone:</property>
+ <property name="use-underline">True</property>
+ <property name="mnemonic-widget">zone</property>
+ <property name="xalign">0</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">9</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="lineend">
+ <property name="visible">False</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes" context="sidebarparagraph|lineend|tooltip_text">Characters at Line End</property>
+ <property name="hexpand">True</property>
+ <property name="text">0</property>
+ <property name="truncate-multiline">True</property>
+ <property name="adjustment">adjustment6</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="linebegin">
+ <property name="visible">False</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes" context="sidebarparagraph|linebegin|tooltip_text">Characters at Line Begin</property>
+ <property name="hexpand">True</property>
+ <property name="text">0</property>
+ <property name="truncate-multiline">True</property>
+ <property name="adjustment">adjustment7</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">6</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="compound">
+ <property name="visible">False</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes" context="sidebarparagraph|lineend|tooltip_text">Compound Constituent Characters at Line End</property>
+ <property name="hexpand">True</property>
+ <property name="text">0</property>
+ <property name="truncate-multiline">True</property>
+ <property name="adjustment">adjustment9</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="consecutive">
+ <property name="visible">False</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes" context="sidebarparagraph|linebegin|tooltip_text">Maximum Consecutive Hyphenated Lines</property>
+ <property name="hexpand">True</property>
+ <property name="text">0</property>
+ <property name="truncate-multiline">True</property>
+ <property name="adjustment">adjustment8</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">8</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="wordlength">
+ <property name="visible">False</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes" context="sidebarparagraph|lineend|tooltip_text">Minimum Word Length</property>
+ <property name="hexpand">True</property>
+ <property name="text">0</property>
+ <property name="truncate-multiline">True</property>
+ <property name="adjustment">adjustment10</property>
+ </object>
+ <packing>
+ <property name="left-attach">0</property>
+ <property name="top-attach">10</property>
+ </packing>
+ </child>
+ <child>
+ <object class="GtkSpinButton" id="zone">
+ <property name="visible">False</property>
+ <property name="can-focus">True</property>
+ <property name="tooltip-text" translatable="yes" context="sidebarparagraph|linebegin|tooltip_text">Line Break Between Words</property>
+ <property name="activates-default">True</property>
+ <property name="truncate-multiline">True</property>
+ <property name="adjustment">adjustment11</property>
+ </object>
+ <packing>
+ <property name="left-attach">1</property>
+ <property name="top-attach">10</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkToolbar" id="numberbullet">
<property name="visible">True</property>
<property name="can-focus">True</property>
diff --git a/svx/uiconfig/ui/sidebartextpanel.ui b/svx/uiconfig/ui/sidebartextpanel.ui
index b53b9e2e36c8..5669bfb41fec 100644
--- a/svx/uiconfig/ui/sidebartextpanel.ui
+++ b/svx/uiconfig/ui/sidebartextpanel.ui
@@ -233,6 +233,16 @@
<property name="homogeneous">False</property>
</packing>
</child>
+ <child>
+ <object class="GtkToolButton" id=".uno:NoBreak">
+ <property name="visible">True</property>
+ <property name="use-underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
</object>
<packing>
<property name="expand">False</property>
@@ -253,6 +263,30 @@
<property name="halign">end</property>
<property name="spacing">6</property>
<child>
+ <object class="GtkToolbar" id="hyphenation">
+ <property name="visible">True</property>
+ <property name="can-focus">True</property>
+ <property name="toolbar-style">icons</property>
+ <property name="show-arrow">False</property>
+ <property name="icon_size">2</property>
+ <child>
+ <object class="GtkToolButton" id=".uno:Hyphenate">
+ <property name="visible">True</property>
+ <property name="use-underline">True</property>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="homogeneous">False</property>
+ </packing>
+ </child>
+ </object>
+ <packing>
+ <property name="expand">False</property>
+ <property name="fill">True</property>
+ <property name="position">0</property>
+ </packing>
+ </child>
+ <child>
<object class="GtkToolbar" id="position">
<property name="visible">True</property>
<property name="can-focus">True</property>
diff --git a/sw/sdi/_textsh.sdi b/sw/sdi/_textsh.sdi
index 4d982bf76d8f..9f5e604ec297 100644
--- a/sw/sdi/_textsh.sdi
+++ b/sw/sdi/_textsh.sdi
@@ -1412,8 +1412,8 @@ interface BaseText
]
SID_ATTR_PARA_HYPHENZONE // status(final|play)
[
- ExecMethod = ExecTextCtrl;
- StateMethod = GetTextCtrlState;
+ ExecMethod = ExecParaAttr ;
+ StateMethod = GetAttrState ;
DisableFlags="SfxDisableFlags::SwOnProtectedCursor";
]
FN_NO_BREAK // status(final|play)
diff --git a/sw/source/uibase/shells/txtattr.cxx b/sw/source/uibase/shells/txtattr.cxx
index 119f4618a120..d1749af5f859 100644
--- a/sw/source/uibase/shells/txtattr.cxx
+++ b/sw/source/uibase/shells/txtattr.cxx
@@ -326,6 +326,7 @@ void SwTextShell::ExecParaAttr(SfxRequest &rReq)
// Get both attributes immediately isn't more expensive!!
SfxItemSetFixed
<RES_PARATR_LINESPACING, RES_PARATR_ADJUST,
+ RES_PARATR_HYPHENZONE, RES_PARATR_HYPHENZONE,
RES_FRAMEDIR, RES_FRAMEDIR> aSet( GetPool() );
sal_uInt16 nSlot = rReq.GetSlot();
@@ -441,6 +442,18 @@ SET_LINESPACE:
}
}
break;
+ case SID_ATTR_PARA_HYPHENZONE:
+ {
+ SfxItemSetFixed<RES_PARATR_HYPHENZONE, RES_PARATR_HYPHENZONE> aHyphSet( GetPool() );
+ GetShell().GetCurAttr(aHyphSet);
+ SfxItemState eState = aHyphSet.GetItemState(RES_PARATR_HYPHENZONE, false);
+ if ( eState >= SfxItemState::DEFAULT )
+ {
+ SvxHyphenZoneItem aHyphen( pArgs->Get( RES_PARATR_HYPHENZONE ) );
+ aSet.Put( aHyphen );
+ }
+ }
+ break;
default:
OSL_FAIL("wrong dispatcher");