sc/source/ui/view/formatsh.cxx | 36 +++++++++++++++++++++--------------- 1 file changed, 21 insertions(+), 15 deletions(-)
New commits: commit 39854837073158555ee26bee9254d1e5ac36a215 Author: Eike Rathke <[email protected]> Date: Fri Dec 8 20:32:30 2017 +0100 Slightly change state method logic, tdf#86085 follow-up It is unnecessary to obtain the SvNumberformat, we already have the type information of the selection, so use that if the item state is not DONTCARE. Also, SfxRequest::Done() needs to be called in the excute method to flag the slot execution as not cancelled. Change-Id: I2fbb8df9b8233fc45552540b996bc6b45a16cbc2 diff --git a/sc/source/ui/view/formatsh.cxx b/sc/source/ui/view/formatsh.cxx index 3ffb0c2db725..5cd763ef286d 100644 --- a/sc/source/ui/view/formatsh.cxx +++ b/sc/source/ui/view/formatsh.cxx @@ -1148,7 +1148,7 @@ void ScFormatShell::ExecuteNumFormat( SfxRequest& rReq ) pDoc->GetNumberFormat(pViewData->GetCurX(), pViewData->GetCurY(), pViewData->GetTabNo(), nCurrentNumberFormat); const SvNumberformat* pEntry = pFormatter->GetEntry(nCurrentNumberFormat); - if(pEntry) + if (pEntry) eLanguage = pEntry->GetLanguage(); pFormatter->GetFormatSpecialInfo(nCurrentNumberFormat, bThousand, bNegRed, nPrecision, nLeadZeroes); @@ -1164,6 +1164,7 @@ void ScFormatShell::ExecuteNumFormat( SfxRequest& rReq ) aSet.Put(SfxBoolItem(nSlot, bThousand)); rBindings.Invalidate(nSlot); + rReq.Done(); } break; case SID_NUMBER_FORMAT: @@ -2524,23 +2525,28 @@ void ScFormatShell::GetNumFormatState( SfxItemSet& rSet ) { case SID_NUMBER_THOUSANDS: { - const SvNumberformat* pFormatEntry = pFormatter->GetEntry( nNumberFormat ); - if ( SfxItemState::DONTCARE != rAttrSet.GetItemState( ATTR_VALUE_FORMAT ) && - pFormatEntry && ( pFormatEntry->GetType() & - ( css::util::NumberFormat::NUMBER | - css::util::NumberFormat::PERCENT | - css::util::NumberFormat::CURRENCY | - css::util::NumberFormat::FRACTION ) ) ) + bool bEnable = (SfxItemState::DONTCARE != rAttrSet.GetItemState( ATTR_VALUE_FORMAT )); + if (bEnable) { - bool bThousand( false ); - bool bNegRed( false ); - sal_uInt16 nPrecision( 0 ); - sal_uInt16 nLeadZeroes( 0 ); - pFormatter->GetFormatSpecialInfo( nNumberFormat, bThousand, bNegRed, nPrecision, nLeadZeroes ); - rSet.Put( SfxBoolItem( nWhich, bThousand ) ); + bEnable = ((nType != css::util::NumberFormat::ALL) && (nType & + (css::util::NumberFormat::NUMBER | + css::util::NumberFormat::PERCENT | + css::util::NumberFormat::CURRENCY | + css::util::NumberFormat::FRACTION))); + if (bEnable) + { + bool bThousand( false ); + bool bNegRed( false ); + sal_uInt16 nPrecision( 0 ); + sal_uInt16 nLeadZeroes( 0 ); + pFormatter->GetFormatSpecialInfo( nNumberFormat, bThousand, bNegRed, nPrecision, nLeadZeroes); + rSet.Put( SfxBoolItem( nWhich, bThousand)); + } } - else + if (!bEnable) + { rSet.DisableItem( nWhich ); + } } break; case SID_NUMBER_FORMAT: _______________________________________________ Libreoffice-commits mailing list [email protected] https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits
