diff options
author | Rishabh Kumar <kris.kr296@gmail.com> | 2016-07-17 21:39:52 +0530 |
---|---|---|
committer | Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de> | 2016-07-19 18:25:14 +0000 |
commit | 1d602088136828cdf1114901587beeec95afea2c (patch) | |
tree | 2bab8051c23b5b44ccf46ec6ea364074f23bfe3c /cui/source | |
parent | da4c58551ce1bdad3467b8f9bc1da5df78757b61 (diff) |
Fix regression : Automatic gradient steps in gradient tab
Adds a checkbox for enabling/disabling automatic gradient steps.
Change-Id: I223279ec0f23f20f3ff544072cc7fd8662946296
Reviewed-on: https://gerrit.libreoffice.org/27269
Reviewed-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Tested-by: Samuel Mehrbrodt <Samuel.Mehrbrodt@cib.de>
Diffstat (limited to 'cui/source')
-rw-r--r-- | cui/source/inc/cuitabarea.hxx | 2 | ||||
-rw-r--r-- | cui/source/tabpages/tpgradnt.cxx | 52 |
2 files changed, 47 insertions, 7 deletions
diff --git a/cui/source/inc/cuitabarea.hxx b/cui/source/inc/cuitabarea.hxx index 38b85eb4722c..2fa662d93db9 100644 --- a/cui/source/inc/cuitabarea.hxx +++ b/cui/source/inc/cuitabarea.hxx @@ -401,6 +401,7 @@ private: VclPtr<GradientLB> m_pLbGradients; VclPtr<SvxPresetListBox> m_pGradientLB; VclPtr<NumericField> m_pMtrIncrement; + VclPtr<CheckBox> m_pCbIncrement; VclPtr<Slider> m_pSliderIncrement; VclPtr<SvxXRectPreview> m_pCtlPreview; VclPtr<PushButton> m_pBtnAdd; @@ -430,6 +431,7 @@ private: DECL_LINK_TYPED( ClickDeleteHdl_Impl, SvxPresetListBox*, void ); DECL_LINK_TYPED( ModifiedEditHdl_Impl, Edit&, void ); DECL_LINK_TYPED( ModifiedListBoxHdl_Impl, ListBox&, void ); + DECL_LINK_TYPED( ChangeAutoStepHdl_Impl, CheckBox&, void ); DECL_LINK_TYPED( ModifiedSliderHdl_Impl, Slider*, void ); void ModifiedHdl_Impl(void*); diff --git a/cui/source/tabpages/tpgradnt.cxx b/cui/source/tabpages/tpgradnt.cxx index 71c71b53662f..0f3d0f5b0d47 100644 --- a/cui/source/tabpages/tpgradnt.cxx +++ b/cui/source/tabpages/tpgradnt.cxx @@ -66,6 +66,7 @@ SvxGradientTabPage::SvxGradientTabPage m_aXFillAttr ( rInAttrs.GetPool() ), m_rXFSet ( m_aXFillAttr.GetItemSet() ) { + get(m_pCbIncrement, "autoincrement"); get(m_pMtrIncrement, "incrementmtr"); get(m_pSliderIncrement,"incrementslider"); get(m_pLbGradientType, "gradienttypelb"); @@ -113,8 +114,9 @@ SvxGradientTabPage::SvxGradientTabPage Link<Edit&,void> aLink = LINK( this, SvxGradientTabPage, ModifiedEditHdl_Impl ); Link<ListBox&,void> aLink2 = LINK( this, SvxGradientTabPage, ModifiedListBoxHdl_Impl ); m_pLbGradientType->SetSelectHdl( aLink2 ); + m_pCbIncrement->SetToggleHdl( LINK( this, SvxGradientTabPage, ChangeAutoStepHdl_Impl ) ); m_pMtrIncrement->SetModifyHdl( aLink ); - m_pSliderIncrement->SetSlideHdl( LINK( this, SvxGradientTabPage, ModifiedSliderHdl_Impl ) ); + m_pSliderIncrement->SetSlideHdl( LINK( this, SvxGradientTabPage, ModifiedSliderHdl_Impl ) ); m_pMtrCenterX->SetModifyHdl( aLink ); m_pMtrCenterY->SetModifyHdl( aLink ); m_pMtrAngle->SetModifyHdl( aLink ); @@ -138,6 +140,7 @@ SvxGradientTabPage::~SvxGradientTabPage() void SvxGradientTabPage::dispose() { + m_pCbIncrement.clear(); m_pMtrIncrement.clear(); m_pSliderIncrement.clear(); m_pLbGradientType.clear(); @@ -329,7 +332,6 @@ bool SvxGradientTabPage::FillItemSet( SfxItemSet* rSet ) std::unique_ptr<XGradient> pXGradient; OUString aString; size_t nPos = m_pGradientLB->GetSelectItemPos(); - sal_uInt16 nValue = m_pMtrIncrement->GetValue(); if( nPos != VALUESET_ITEM_NOTFOUND ) { pXGradient.reset(new XGradient( m_pGradientList->GetGradient( static_cast<sal_uInt16>(nPos) )->GetGradient() )); @@ -348,6 +350,11 @@ bool SvxGradientTabPage::FillItemSet( SfxItemSet* rSet ) (sal_uInt16) m_pMtrColorFrom->GetValue(), (sal_uInt16) m_pMtrColorTo->GetValue() )); } + + sal_uInt16 nValue = 0; + if( !m_pCbIncrement->IsChecked() ) + nValue = m_pMtrIncrement->GetValue(); + assert( pXGradient && "XGradient could not be created" ); rSet->Put( XFillStyleItem( drawing::FillStyle_GRADIENT ) ); rSet->Put( XFillGradientItem( aString, *pXGradient ) ); @@ -359,6 +366,8 @@ bool SvxGradientTabPage::FillItemSet( SfxItemSet* rSet ) void SvxGradientTabPage::Reset( const SfxItemSet* ) { + m_pMtrIncrement->SetValue(DEFAULT_GRADIENTSTEP); + m_pSliderIncrement->SetThumbPos(DEFAULT_GRADIENTSTEP); ChangeGradientHdl_Impl(); // determine state of the buttons @@ -380,14 +389,32 @@ IMPL_LINK_TYPED( SvxGradientTabPage, ModifiedListBoxHdl_Impl, ListBox&, rListBox { ModifiedHdl_Impl(&rListBox); } + IMPL_LINK_TYPED( SvxGradientTabPage, ModifiedEditHdl_Impl, Edit&, rBox, void ) { ModifiedHdl_Impl(&rBox); } + IMPL_LINK_TYPED( SvxGradientTabPage, ModifiedSliderHdl_Impl, Slider*, rSlider, void ) { ModifiedHdl_Impl(rSlider); } + +IMPL_LINK_NOARG_TYPED( SvxGradientTabPage, ChangeAutoStepHdl_Impl, CheckBox&, void ) +{ + if(m_pCbIncrement->IsChecked()) + { + m_pSliderIncrement->Disable(); + m_pMtrIncrement->Disable(); + } + else + { + m_pSliderIncrement->Enable(); + m_pMtrIncrement->Enable(); + } + ModifiedHdl_Impl(m_pMtrIncrement); +} + void SvxGradientTabPage::ModifiedHdl_Impl( void* pControl ) { if( pControl == m_pMtrBorder ) @@ -415,7 +442,9 @@ void SvxGradientTabPage::ModifiedHdl_Impl( void* pControl ) if( pControl == m_pLbGradientType || pControl == this ) SetControlState_Impl( eXGS ); - sal_uInt16 nValue = (sal_uInt16)m_pMtrIncrement->GetValue(); + sal_uInt16 nValue = 0; + if(!m_pCbIncrement->IsChecked()) + nValue = (sal_uInt16)m_pMtrIncrement->GetValue(); m_rXFSet.Put( XGradientStepCountItem( nValue ) ); // displaying in XOutDev @@ -644,10 +673,19 @@ void SvxGradientTabPage::ChangeGradientHdl_Impl() css::awt::GradientStyle eXGS = pGradient->GetGradientStyle(); sal_uInt16 nValue = static_cast<const XGradientStepCountItem&>( m_rOutAttrs.Get( XATTR_GRADIENTSTEPCOUNT ) ).GetValue(); if(nValue == 0) - nValue = DEFAULT_GRADIENTSTEP; - - m_pMtrIncrement->SetValue( nValue ); - m_pSliderIncrement->SetThumbPos( nValue ); + { + m_pCbIncrement->SetState(TRISTATE_TRUE); + m_pMtrIncrement->Disable(); + m_pSliderIncrement->Disable(); + } + else + { + m_pCbIncrement->SetState(TRISTATE_FALSE); + m_pMtrIncrement->Enable(); + m_pMtrIncrement->SetValue( nValue ); + m_pSliderIncrement->Enable(); + m_pSliderIncrement->SetThumbPos( nValue ); + } m_pLbGradientType->SelectEntryPos( sal::static_int_cast< sal_Int32 >( eXGS ) ); // if the entry is not in the listbox, |