From f91ffe03e035cff1204de230ec78fc0aa1bdbb36 Mon Sep 17 00:00:00 2001 From: Caolán McNamara Date: Mon, 12 Jul 2021 12:19:22 +0100 Subject: tdf#143291 the "none" item selected is distinct from nothing selected Change-Id: I2e012df85a5c28f462a6c643d7a9a88f8775e870 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/118729 Tested-by: Jenkins Reviewed-by: Adolfo Jayme Barrientos --- sd/source/ui/animations/SlideTransitionPane.cxx | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'sd') diff --git a/sd/source/ui/animations/SlideTransitionPane.cxx b/sd/source/ui/animations/SlideTransitionPane.cxx index 0fc198a9c316..b3c3d4b44863 100644 --- a/sd/source/ui/animations/SlideTransitionPane.cxx +++ b/sd/source/ui/animations/SlideTransitionPane.cxx @@ -411,6 +411,8 @@ css::ui::LayoutSize SlideTransitionPane::GetHeightForWidth(const sal_Int32 /*nWi return css::ui::LayoutSize(nMinimumHeight, -1, nMinimumHeight); } +constexpr sal_uInt16 nNoneId = std::numeric_limits::max(); + void SlideTransitionPane::Initialize(SdDrawDocument* pDoc) { mxFT_VARIANT = m_xBuilder->weld_label("variant_label"); @@ -445,7 +447,7 @@ void SlideTransitionPane::Initialize(SdDrawDocument* pDoc) // dummy list box of slide transitions for startup. mxVS_TRANSITION_ICONS->InsertItem( - 0, Image( StockImage::Yes, "sd/cmd/transition-none.png" ), + nNoneId, Image( StockImage::Yes, "sd/cmd/transition-none.png" ), SdResId( STR_SLIDETRANSITION_NONE ), VALUESET_APPEND, /* show legend */ true ); mxVS_TRANSITION_ICONS->Recalculate(); @@ -566,14 +568,14 @@ void SlideTransitionPane::updateControls() if( aEffect.mbEffectAmbiguous ) { SAL_WARN( "sd.transitions", "Unusual, ambiguous transition effect" ); - mxVS_TRANSITION_ICONS->SetNoSelection(); + mxVS_TRANSITION_ICONS->SelectItem(nNoneId); } else { // ToDo: That 0 is "no transition" is documented nowhere except in the // CTOR of sdpage if( aEffect.mnType == 0 ) - mxVS_TRANSITION_ICONS->SetNoSelection(); + mxVS_TRANSITION_ICONS->SelectItem(nNoneId); else updateVariants( getPresetOffset( aEffect ) ); } @@ -757,9 +759,11 @@ impl::TransitionEffect SlideTransitionPane::getTransitionEffectFromControls() co impl::TransitionEffect aResult; aResult.setAllAmbiguous(); + bool bNoneSelected = mxVS_TRANSITION_ICONS->IsNoSelection() || mxVS_TRANSITION_ICONS->GetSelectedItemId() == nNoneId; + // check first (aResult might be overwritten) if( mxVS_TRANSITION_ICONSWin->get_sensitive() && - !mxVS_TRANSITION_ICONS->IsNoSelection() && + !bNoneSelected && mxVS_TRANSITION_ICONS->GetSelectedItemId() > 0 ) { const sd::TransitionPresetList& rPresetList = sd::TransitionPreset::getTransitionPresetList(); @@ -800,7 +804,7 @@ impl::TransitionEffect SlideTransitionPane::getTransitionEffectFromControls() co } aResult.mbEffectAmbiguous = false; } - else if (mxVS_TRANSITION_ICONS->IsNoSelection()) + else if (bNoneSelected) { aResult.mbEffectAmbiguous = false; } @@ -1007,7 +1011,7 @@ void SlideTransitionPane::updateVariants( size_t nPresetOffset ) { const sd::TransitionPresetList& rPresetList = sd::TransitionPreset::getTransitionPresetList(); mxLB_VARIANT->clear(); - mxVS_TRANSITION_ICONS->SetNoSelection(); + mxVS_TRANSITION_ICONS->SelectItem(nNoneId); if( nPresetOffset >= rPresetList.size() ) { -- cgit