summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-09-17 21:25:00 +0100
committerMichael Stahl <Michael.Stahl@cib.de>2018-09-18 11:12:21 +0200
commitca34dd89e38911f8a1fc7b6ce6afa3b39580fa21 (patch)
tree900ef99d1659daf3ad8b8d5e229071469d0e4be4
parentfde33870d6989efeb59355aad1209a7f50e7ecf6 (diff)
Resolves: tdf#119860 missing block of code to set text positioning
Change-Id: Ia57fc61147179a92569918417692e44e11ad6061 Reviewed-on: https://gerrit.libreoffice.org/60647 Tested-by: Jenkins Reviewed-by: Michael Stahl <Michael.Stahl@cib.de>
-rw-r--r--cui/source/tabpages/textattr.cxx84
1 files changed, 84 insertions, 0 deletions
diff --git a/cui/source/tabpages/textattr.cxx b/cui/source/tabpages/textattr.cxx
index d1ccabc9a9f9..b090e3f60822 100644
--- a/cui/source/tabpages/textattr.cxx
+++ b/cui/source/tabpages/textattr.cxx
@@ -214,6 +214,9 @@ void SvxTextAttrPage::Reset( const SfxItemSet* rAttrs )
SdrTextHorzAdjust eTHA = rAttrs->Get(SDRATTR_TEXT_HORZADJUST).GetValue();
RectPoint eRP = RectPoint::LB;
+ if (m_xTsbFullWidth->get_state() == TRISTATE_INDET)
+ m_xTsbFullWidth->set_state(TRISTATE_FALSE);
+
// Translate item values into local anchor position.
switch (eTVA)
{
@@ -368,6 +371,87 @@ bool SvxTextAttrPage::FillItemSet( SfxItemSet* rAttrs)
rAttrs->Put( makeSdrTextWordWrapItem( TRISTATE_TRUE == eState ) );
}
+ eState = m_xTsbContour->get_state();
+ if( m_xTsbContour->get_state_changed_from_saved() )
+ {
+ rAttrs->Put( makeSdrTextContourFrameItem( TRISTATE_TRUE == eState ) );
+ }
+
+ eState = m_xTsbFitToSize->get_state();
+ if( m_xTsbFitToSize->get_state_changed_from_saved() )
+ {
+ drawing::TextFitToSizeType eFTS;
+ switch( eState )
+ {
+ default: ; //prevent warning
+ OSL_FAIL( "svx::SvxTextAttrPage::FillItemSet(), unhandled state!" );
+ SAL_FALLTHROUGH;
+ case TRISTATE_FALSE: eFTS = drawing::TextFitToSizeType_AUTOFIT; break;
+ case TRISTATE_TRUE: eFTS = drawing::TextFitToSizeType_PROPORTIONAL; break;
+ }
+ rAttrs->Put( SdrTextFitToSizeTypeItem( eFTS ) );
+ }
+
+ // centered
+ RectPoint eRP = m_aCtlPosition.GetActualRP();
+ SdrTextVertAdjust eTVA, eOldTVA;
+ SdrTextHorzAdjust eTHA, eOldTHA;
+
+ switch( eRP )
+ {
+ default:
+ case RectPoint::LT: eTVA = SDRTEXTVERTADJUST_TOP;
+ eTHA = SDRTEXTHORZADJUST_LEFT; break;
+ case RectPoint::LM: eTVA = SDRTEXTVERTADJUST_CENTER;
+ eTHA = SDRTEXTHORZADJUST_LEFT; break;
+ case RectPoint::LB: eTVA = SDRTEXTVERTADJUST_BOTTOM;
+ eTHA = SDRTEXTHORZADJUST_LEFT; break;
+ case RectPoint::MT: eTVA = SDRTEXTVERTADJUST_TOP;
+ eTHA = SDRTEXTHORZADJUST_CENTER; break;
+ case RectPoint::MM: eTVA = SDRTEXTVERTADJUST_CENTER;
+ eTHA = SDRTEXTHORZADJUST_CENTER; break;
+ case RectPoint::MB: eTVA = SDRTEXTVERTADJUST_BOTTOM;
+ eTHA = SDRTEXTHORZADJUST_CENTER; break;
+ case RectPoint::RT: eTVA = SDRTEXTVERTADJUST_TOP;
+ eTHA = SDRTEXTHORZADJUST_RIGHT; break;
+ case RectPoint::RM: eTVA = SDRTEXTVERTADJUST_CENTER;
+ eTHA = SDRTEXTHORZADJUST_RIGHT; break;
+ case RectPoint::RB: eTVA = SDRTEXTVERTADJUST_BOTTOM;
+ eTHA = SDRTEXTHORZADJUST_RIGHT; break;
+ }
+
+ // #103516# Do not change values if adjust controls were disabled.
+ bool bIsDisabled(m_aCtlPosition.IsCompletelyDisabled());
+
+ if(!bIsDisabled)
+ {
+ if( m_xTsbFullWidth->get_state() == TRISTATE_TRUE )
+ {
+ if (IsTextDirectionLeftToRight())
+ eTHA = SDRTEXTHORZADJUST_BLOCK;
+ else
+ eTVA = SDRTEXTVERTADJUST_BLOCK;
+ }
+
+ if ( rOutAttrs.GetItemState( SDRATTR_TEXT_VERTADJUST ) != SfxItemState::DONTCARE )
+ {
+ eOldTVA = rOutAttrs.Get( SDRATTR_TEXT_VERTADJUST ).GetValue();
+ if( eOldTVA != eTVA )
+ rAttrs->Put( SdrTextVertAdjustItem( eTVA ) );
+ }
+ else
+ rAttrs->Put( SdrTextVertAdjustItem( eTVA ) );
+
+ if ( rOutAttrs.GetItemState( SDRATTR_TEXT_HORZADJUST ) != SfxItemState::DONTCARE )
+ {
+ eOldTHA = rOutAttrs.Get( SDRATTR_TEXT_HORZADJUST ).GetValue();
+ if( eOldTHA != eTHA )
+ rAttrs->Put( SdrTextHorzAdjustItem( eTHA ) );
+ }
+ else
+ rAttrs->Put( SdrTextHorzAdjustItem( eTHA ) );
+ }
+
return true;
}