diff options
author | Caolán McNamara <caolanm@redhat.com> | 2020-05-14 13:42:52 +0100 |
---|---|---|
committer | Xisco Faulí <xiscofauli@libreoffice.org> | 2020-05-19 20:34:39 +0200 |
commit | f53a6e025e58f723d15ac601b3759b5929c83627 (patch) | |
tree | 771abc367981738650e02afb0f69eca2207f4734 /svx | |
parent | 595fcef52915f0ac54ea704b0f9dee85b43efa56 (diff) |
tdf#132169 we always get the value in MapUnit::Map100thMM
but must set it in the core metric of the target application
since...
commit f7c751439d4616f43509301d71af92b13b576a84
Date: Thu Nov 7 15:53:49 2019 +0100
jsdialog: consume .uno:LineWidth double value
added parameters for online, but with parameters its no longer considered a
simple slot and for non-simple slots the auto-conversion of values to/from
twips isn't done.
there's probably a much and older deeper bug here, but lets get this
known broken line width working
Change-Id: I8683431f02d2d14936411d35ba070944b9b80e1f
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/94203
Tested-by: Jenkins
Reviewed-by: Xisco Faulí <xiscofauli@libreoffice.org>
Diffstat (limited to 'svx')
-rw-r--r-- | svx/source/tbxctrls/itemwin.cxx | 14 | ||||
-rw-r--r-- | svx/source/tbxctrls/linectrl.cxx | 12 |
2 files changed, 16 insertions, 10 deletions
diff --git a/svx/source/tbxctrls/itemwin.cxx b/svx/source/tbxctrls/itemwin.cxx index 4d8b89b36a15..17d1d2482239 100644 --- a/svx/source/tbxctrls/itemwin.cxx +++ b/svx/source/tbxctrls/itemwin.cxx @@ -283,7 +283,7 @@ SvxMetricField::SvxMetricField( vcl::Window* pParent, const Reference< XFrame >& rFrame ) : MetricField(pParent, WB_BORDER | WB_SPIN | WB_REPEAT) , aCurTxt() - , ePoolUnit(MapUnit::MapCM) + , eDestPoolUnit(MapUnit::Map100thMM) , mxFrame(rFrame) { Size aSize( CalcMinimumSize() ); @@ -306,8 +306,10 @@ void SvxMetricField::Update( const XLineWidthItem* pItem ) { if ( pItem ) { - if ( pItem->GetValue() != GetCoreValue( *this, ePoolUnit ) ) - SetMetricValue( *this, pItem->GetValue(), ePoolUnit ); + // tdf#132169 we always get the value in MapUnit::Map100thMM but have + // to set it in the core metric of the target application + if (pItem->GetValue() != GetCoreValue(*this, MapUnit::Map100thMM)) + SetMetricValue(*this, pItem->GetValue(), MapUnit::Map100thMM); } else SetText( "" ); @@ -317,7 +319,7 @@ void SvxMetricField::Update( const XLineWidthItem* pItem ) void SvxMetricField::Modify() { MetricField::Modify(); - long nTmp = GetCoreValue( *this, ePoolUnit ); + long nTmp = GetCoreValue( *this, eDestPoolUnit ); XLineWidthItem aLineWidthItem( nTmp ); Any a; @@ -341,9 +343,9 @@ void SvxMetricField::ReleaseFocus_Impl() } } -void SvxMetricField::SetCoreUnit( MapUnit eUnit ) +void SvxMetricField::SetDestCoreUnit( MapUnit eUnit ) { - ePoolUnit = eUnit; + eDestPoolUnit = eUnit; } void SvxMetricField::RefreshDlgUnit() diff --git a/svx/source/tbxctrls/linectrl.cxx b/svx/source/tbxctrls/linectrl.cxx index 0704b88006dc..dfe0be2dd57c 100644 --- a/svx/source/tbxctrls/linectrl.cxx +++ b/svx/source/tbxctrls/linectrl.cxx @@ -225,10 +225,7 @@ void SvxLineWidthToolBoxControl::StateChanged( { DBG_ASSERT( dynamic_cast<const XLineWidthItem*>( pState) != nullptr, "wrong ItemType" ); - // Core-Unit handed over to MetricField - // Should not happen in CreateItemWin ()! - // CD!!! GetCoreMetric(); - pFld->SetCoreUnit( MapUnit::Map100thMM ); + pFld->SetDestCoreUnit(GetCoreMetric()); pFld->Update( static_cast<const XLineWidthItem*>(pState) ); } @@ -238,6 +235,13 @@ void SvxLineWidthToolBoxControl::StateChanged( } } +MapUnit SvxLineWidthToolBoxControl::GetCoreMetric() +{ + SfxObjectShell* pSh = SfxObjectShell::Current(); + SfxItemPool& rPool = pSh ? pSh->GetPool() : SfxGetpApp()->GetPool(); + sal_uInt16 nWhich = rPool.GetWhich(SID_ATTR_LINE_WIDTH); + return rPool.GetMetric(nWhich); +} VclPtr<vcl::Window> SvxLineWidthToolBoxControl::CreateItemWindow( vcl::Window *pParent ) { |