diff options
Diffstat (limited to 'cui/source/tabpages/tpgradnt.cxx')
-rw-r--r-- | cui/source/tabpages/tpgradnt.cxx | 56 |
1 files changed, 47 insertions, 9 deletions
diff --git a/cui/source/tabpages/tpgradnt.cxx b/cui/source/tabpages/tpgradnt.cxx index 7aac0c7fc14c..e28e17791d56 100644 --- a/cui/source/tabpages/tpgradnt.cxx +++ b/cui/source/tabpages/tpgradnt.cxx @@ -28,7 +28,6 @@ #include <cuires.hrc> #include "helpid.hrc" -#include <svx/colorbox.hxx> #include "svx/xattr.hxx" #include <svx/xtable.hxx> #include <svx/xpool.hxx> @@ -125,10 +124,9 @@ SvxGradientTabPage::SvxGradientTabPage m_pMtrBorder->SetModifyHdl( aLink ); m_pSliderBorder->SetSlideHdl( LINK( this, SvxGradientTabPage, ModifiedSliderHdl_Impl ) ); m_pMtrColorFrom->SetModifyHdl( aLink ); - Link<SvxColorListBox&,void> aLink3 = LINK( this, SvxGradientTabPage, ModifiedColorListBoxHdl_Impl ); - m_pLbColorFrom->SetSelectHdl( aLink3 ); + m_pLbColorFrom->SetSelectHdl( aLink2 ); m_pMtrColorTo->SetModifyHdl( aLink ); - m_pLbColorTo->SetSelectHdl( aLink3 ); + m_pLbColorTo->SetSelectHdl( aLink2 ); // #i76307# always paint the preview in LTR, because this is what the document does m_pCtlPreview->EnableRTL( false ); @@ -165,13 +163,21 @@ void SvxGradientTabPage::dispose() SfxTabPage::dispose(); } + void SvxGradientTabPage::Construct() { + m_pLbColorFrom->Fill( m_pColorList ); + m_pLbColorTo->CopyEntries( *m_pLbColorFrom ); + m_pGradientLB->FillPresetListBox( *m_pGradientList ); } + void SvxGradientTabPage::ActivatePage( const SfxItemSet& rSet ) { + sal_Int32 nPos; + sal_Int32 nCount; + if( m_pColorList.is() ) { // ColorList @@ -183,6 +189,30 @@ void SvxGradientTabPage::ActivatePage( const SfxItemSet& rSet ) if (pArea) m_pColorList = pArea->GetNewColorList(); + // LbColorFrom + nPos = m_pLbColorFrom->GetSelectEntryPos(); + m_pLbColorFrom->Clear(); + m_pLbColorFrom->Fill( m_pColorList ); + nCount = m_pLbColorFrom->GetEntryCount(); + if( nCount == 0 ) + ; // this case should not occur + else if( nCount <= nPos ) + m_pLbColorFrom->SelectEntryPos( 0 ); + else + m_pLbColorFrom->SelectEntryPos( nPos ); + + // LbColorTo + nPos = m_pLbColorTo->GetSelectEntryPos(); + m_pLbColorTo->Clear(); + m_pLbColorTo->CopyEntries( *m_pLbColorFrom ); + nCount = m_pLbColorTo->GetEntryCount(); + if( nCount == 0 ) + ; // this case should not occur + else if( nCount <= nPos ) + m_pLbColorTo->SelectEntryPos( 0 ); + else + m_pLbColorTo->SelectEntryPos( nPos ); + ModifiedHdl_Impl( this ); } @@ -280,12 +310,8 @@ VclPtr<SfxTabPage> SvxGradientTabPage::Create( vcl::Window* pWindow, return VclPtr<SvxGradientTabPage>::Create( pWindow, *rOutAttrs ); } -IMPL_LINK( SvxGradientTabPage, ModifiedListBoxHdl_Impl, ListBox&, rListBox, void ) -{ - ModifiedHdl_Impl(&rListBox); -} -IMPL_LINK( SvxGradientTabPage, ModifiedColorListBoxHdl_Impl, SvxColorListBox&, rListBox, void ) +IMPL_LINK( SvxGradientTabPage, ModifiedListBoxHdl_Impl, ListBox&, rListBox, void ) { ModifiedHdl_Impl(&rListBox); } @@ -591,9 +617,21 @@ void SvxGradientTabPage::ChangeGradientHdl_Impl() m_pLbColorFrom->SetNoSelection(); m_pLbColorFrom->SelectEntry( pGradient->GetStartColor() ); + if ( m_pLbColorFrom->GetSelectEntryCount() == 0 ) + { + m_pLbColorFrom->InsertEntry( pGradient->GetStartColor(), + OUString() ); + m_pLbColorFrom->SelectEntry( pGradient->GetStartColor() ); + } m_pLbColorTo->SetNoSelection(); m_pLbColorTo->SelectEntry( pGradient->GetEndColor() ); + if ( m_pLbColorTo->GetSelectEntryCount() == 0 ) + { + m_pLbColorTo->InsertEntry( pGradient->GetEndColor(), OUString() ); + m_pLbColorTo->SelectEntry( pGradient->GetEndColor() ); + } + m_pMtrAngle->SetValue( pGradient->GetAngle() / 10 ); // should be changed in resource m_pMtrBorder->SetValue( pGradient->GetBorder() ); m_pSliderBorder->SetThumbPos( pGradient->GetBorder() ); |