From 38f6065b0272ae4bc80f5f35866012b4ea0bc38b Mon Sep 17 00:00:00 2001 From: Katarina Behrens Date: Thu, 17 Jul 2014 22:35:46 +0200 Subject: fdo#77319: set spinbox value AFTER adjusting no. of decimal places MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Doing it the other way round truncates the values Change-Id: Ieb14c9d1b9dde496eac24737aced7c8da8ce1346 Reviewed-on: https://gerrit.libreoffice.org/11865 Reviewed-by: Caolán McNamara Tested-by: Caolán McNamara --- chart2/source/controller/dialogs/res_ErrorBar.cxx | 20 ++++++++++++-------- chart2/source/controller/inc/res_ErrorBar.hxx | 2 ++ 2 files changed, 14 insertions(+), 8 deletions(-) diff --git a/chart2/source/controller/dialogs/res_ErrorBar.cxx b/chart2/source/controller/dialogs/res_ErrorBar.cxx index 60b49879521e..81573013d266 100644 --- a/chart2/source/controller/dialogs/res_ErrorBar.cxx +++ b/chart2/source/controller/dialogs/res_ErrorBar.cxx @@ -93,6 +93,8 @@ ErrorBarResources::ErrorBarResources( VclBuilderContainer* pParent, Dialog * pPa m_eErrorBarType( eType ), m_nConstDecimalDigits( 1 ), m_nConstSpinSize( 1 ), + m_fPlusValue(0.0), + m_fMinusValue(0.0), m_pParentDialog( pParentDialog ), m_pCurrentRangeChoosingField( 0 ), m_bHasInternalDataProvider( true ), @@ -271,6 +273,13 @@ void ErrorBarResources::UpdateControlStates() m_pMfNegative->SetDecimalDigits( m_nConstDecimalDigits ); m_pMfNegative->SetSpinSize( m_nConstSpinSize ); } + + sal_Int32 nPlusValue = static_cast< sal_Int32 >( m_fPlusValue * pow(10.0,m_pMfPositive->GetDecimalDigits()) ); + sal_Int32 nMinusValue = static_cast< sal_Int32 >( m_fMinusValue * pow(10.0,m_pMfNegative->GetDecimalDigits()) ); + + m_pMfPositive->SetValue( nPlusValue ); + m_pMfNegative->SetValue( nMinusValue ); + m_pMfPositive->SetCustomUnitText( aCustomUnit ); m_pMfNegative->SetCustomUnitText( aCustomUnit ); @@ -530,24 +539,19 @@ void ErrorBarResources::Reset(const SfxItemSet& rInAttrs) // parameters aState = rInAttrs.GetItemState( SCHATTR_STAT_CONSTPLUS, true, &pPoolItem ); m_bPlusUnique = ( aState != SFX_ITEM_DONTCARE ); - double fPlusValue = 0.0; if( aState == SFX_ITEM_SET ) { - fPlusValue = ((const SvxDoubleItem*) pPoolItem)->GetValue(); - sal_Int32 nPlusValue = static_cast< sal_Int32 >( fPlusValue * pow(10.0,m_pMfPositive->GetDecimalDigits()) ); - m_pMfPositive->SetValue( nPlusValue ); + m_fPlusValue = ((const SvxDoubleItem*) pPoolItem)->GetValue(); } aState = rInAttrs.GetItemState( SCHATTR_STAT_CONSTMINUS, true, &pPoolItem ); m_bMinusUnique = ( aState != SFX_ITEM_DONTCARE ); if( aState == SFX_ITEM_SET ) { - double fMinusValue = ((const SvxDoubleItem*) pPoolItem)->GetValue(); - sal_Int32 nMinusValue = static_cast< sal_Int32 >( fMinusValue * pow(10.0,m_pMfNegative->GetDecimalDigits()) ); - m_pMfNegative->SetValue( nMinusValue ); + m_fMinusValue = ((const SvxDoubleItem*) pPoolItem)->GetValue(); if( m_eErrorKind != CHERROR_RANGE && - fPlusValue == fMinusValue ) + m_fPlusValue == m_fMinusValue ) m_pCbSyncPosNeg->Check(); } diff --git a/chart2/source/controller/inc/res_ErrorBar.hxx b/chart2/source/controller/inc/res_ErrorBar.hxx index 785141844705..95706bc77ead 100644 --- a/chart2/source/controller/inc/res_ErrorBar.hxx +++ b/chart2/source/controller/inc/res_ErrorBar.hxx @@ -114,6 +114,8 @@ private: tErrorBarType m_eErrorBarType; sal_uInt16 m_nConstDecimalDigits; sal_Int64 m_nConstSpinSize; + double m_fPlusValue; + double m_fMinusValue; Dialog * m_pParentDialog; boost::scoped_ptr< RangeSelectionHelper > m_apRangeSelectionHelper; -- cgit v1.2.3