include/svtools/valueset.hxx | 8 - svtools/source/control/valueacc.cxx | 26 ++-- svtools/source/control/valueimp.hxx | 6 - svtools/source/control/valueset.cxx | 188 +++++++++++++++++------------------- 4 files changed, 113 insertions(+), 115 deletions(-)
New commits: commit 30aa33e6a6b9fb230af96f619db27fcaf31ef914 Author: Noel Grandin <noel.gran...@collabora.co.uk> AuthorDate: Fri May 28 14:02:25 2021 +0200 Commit: Noel Grandin <noel.gran...@collabora.co.uk> CommitDate: Sat May 29 13:37:01 2021 +0200 flatten ValueSet item array and change mrParent to mpParent in ValueSetItem because references preclude copy construction and assignment Change-Id: Iabb0c6ccfa4eed645cf6ee75d7ff83f9c4ec5a1d Reviewed-on: https://gerrit.libreoffice.org/c/core/+/116372 Tested-by: Jenkins Reviewed-by: Noel Grandin <noel.gran...@collabora.co.uk> diff --git a/include/svtools/valueset.hxx b/include/svtools/valueset.hxx index 084008c79e2e..55399b24f711 100644 --- a/include/svtools/valueset.hxx +++ b/include/svtools/valueset.hxx @@ -175,8 +175,6 @@ to be set (before Show) with SetStyle(). *************************************************************************/ -typedef std::vector<std::unique_ptr<ValueSetItem>> ValueItemList; - #define WB_ITEMBORDER (WinBits(0x00010000)) #define WB_DOUBLEBORDER (WinBits(0x00020000)) #define WB_NAMEFIELD (WinBits(0x00040000)) @@ -193,7 +191,7 @@ class SVT_DLLPUBLIC ValueSet : public weld::CustomWidgetController private: ScopedVclPtr<VirtualDevice> maVirDev; css::uno::Reference<css::accessibility::XAccessible> mxAccessible; - ValueItemList mItemList; + std::vector<ValueSetItem> mItemList; std::unique_ptr<ValueSetItem> mpNoneItem; std::unique_ptr<weld::ScrolledWindow> mxScrolledWindow; tools::Rectangle maNoneItemRect; @@ -236,7 +234,7 @@ private: friend class ValueSetAcc; SVT_DLLPRIVATE void ImplDeleteItems(); - SVT_DLLPRIVATE void ImplFormatItem(vcl::RenderContext const & rRenderContext, ValueSetItem* pItem, tools::Rectangle aRect); + SVT_DLLPRIVATE void ImplFormatItem(vcl::RenderContext const & rRenderContext, ValueSetItem& rItem, tools::Rectangle aRect); SVT_DLLPRIVATE void ImplDrawItemText(vcl::RenderContext& rRenderContext, const OUString& rStr); SVT_DLLPRIVATE void ImplDrawSelect(vcl::RenderContext& rRenderContext, sal_uInt16 nItemId, const bool bFocus, const bool bDrawSel); SVT_DLLPRIVATE void ImplDrawSelect(vcl::RenderContext& rRenderContext); @@ -246,7 +244,7 @@ private: SVT_DLLPRIVATE ValueSetItem* ImplGetItem( size_t nPos ); SVT_DLLPRIVATE ValueSetItem* ImplGetFirstItem(); SVT_DLLPRIVATE sal_uInt16 ImplGetVisibleItemCount() const; - SVT_DLLPRIVATE void ImplInsertItem( std::unique_ptr<ValueSetItem> pItem, const size_t nPos ); + SVT_DLLPRIVATE void ImplInsertItem( const ValueSetItem& rItem, const size_t nPos ); SVT_DLLPRIVATE tools::Rectangle ImplGetItemRect( size_t nPos ) const; SVT_DLLPRIVATE void ImplFireAccessibleEvent( short nEventId, const css::uno::Any& rOldValue, const css::uno::Any& rNewValue ); SVT_DLLPRIVATE bool ImplHasAccessibleListeners(); diff --git a/svtools/source/control/valueacc.cxx b/svtools/source/control/valueacc.cxx index a6364d784064..1fe72be58cc8 100644 --- a/svtools/source/control/valueacc.cxx +++ b/svtools/source/control/valueacc.cxx @@ -35,7 +35,7 @@ using namespace ::com::sun::star; ValueSetItem::ValueSetItem( ValueSet& rParent ) - : mrParent(rParent) + : mpParent(&rParent) , mnId(0) , meType(VALUESETITEM_NONE) , mbVisible(true) @@ -122,7 +122,7 @@ uno::Reference< accessibility::XAccessible > SAL_CALL ValueItemAcc::getAccessibl uno::Reference< accessibility::XAccessible > xRet; if( mpParent ) - xRet = mpParent->mrParent.mxAccessible; + xRet = mpParent->mpParent->mxAccessible; return xRet; } @@ -139,7 +139,7 @@ sal_Int32 SAL_CALL ValueItemAcc::getAccessibleIndexInParent() { bool bDone = false; - sal_uInt16 nCount = mpParent->mrParent.ImplGetVisibleItemCount(); + sal_uInt16 nCount = mpParent->mpParent->ImplGetVisibleItemCount(); ValueSetItem* pItem; for (sal_uInt16 i=0; i<nCount && !bDone; i++) { @@ -147,7 +147,7 @@ sal_Int32 SAL_CALL ValueItemAcc::getAccessibleIndexInParent() // just in case the number of children changes in the meantime. try { - pItem = mpParent->mrParent.ImplGetItem(i); + pItem = mpParent->mpParent->ImplGetItem(i); } catch (const lang::IndexOutOfBoundsException&) { @@ -165,9 +165,9 @@ sal_Int32 SAL_CALL ValueItemAcc::getAccessibleIndexInParent() } //if this valueset contain a none field(common value is default), then we should increase the real index and set the noitem index value equal 0. - if ( mpParent && ( (mpParent->mrParent.GetStyle() & WB_NONEFIELD) != 0 ) ) + if ( mpParent && ( (mpParent->mpParent->GetStyle() & WB_NONEFIELD) != 0 ) ) { - ValueSetItem* pFirstItem = mpParent->mrParent.ImplGetItem (VALUESET_ITEM_NONEITEM); + ValueSetItem* pFirstItem = mpParent->mpParent->ImplGetItem (VALUESET_ITEM_NONEITEM); if( pFirstItem && pFirstItem ->GetAccessible(mbIsTransientChildrenDisabled).get() == this ) nIndexInParent = 0; else @@ -230,7 +230,7 @@ uno::Reference< accessibility::XAccessibleStateSet > SAL_CALL ValueItemAcc::getA // pStateSet->AddState( accessibility::AccessibleStateType::FOCUSABLE ); // SELECTED - if( mpParent->mrParent.GetSelectedItemId() == mpParent->mnId ) + if( mpParent->mpParent->GetSelectedItemId() == mpParent->mnId ) { pStateSet->AddState( accessibility::AccessibleStateType::SELECTED ); // pStateSet->AddState( accessibility::AccessibleStateType::FOCUSED ); @@ -319,8 +319,8 @@ awt::Rectangle SAL_CALL ValueItemAcc::getBounds() if( mpParent ) { - tools::Rectangle aRect( mpParent->mrParent.GetItemRect(mpParent->mnId) ); - tools::Rectangle aParentRect( Point(), mpParent->mrParent.GetOutputSizePixel() ); + tools::Rectangle aRect( mpParent->mpParent->GetItemRect(mpParent->mnId) ); + tools::Rectangle aParentRect( Point(), mpParent->mpParent->GetOutputSizePixel() ); aRect.Intersection( aParentRect ); @@ -351,8 +351,8 @@ awt::Point SAL_CALL ValueItemAcc::getLocationOnScreen() if( mpParent ) { - const Point aPos = mpParent->mrParent.GetItemRect(mpParent->mnId).TopLeft(); - const Point aScreenPos(mpParent->mrParent.GetDrawingArea()->get_accessible_location_on_screen()); + const Point aPos = mpParent->mpParent->GetItemRect(mpParent->mnId).TopLeft(); + const Point aScreenPos(mpParent->mpParent->GetDrawingArea()->get_accessible_location_on_screen()); aRet.X = aPos.X() + aScreenPos.X(); aRet.Y = aPos.Y() + aScreenPos.Y(); @@ -729,8 +729,8 @@ uno::Reference< accessibility::XAccessible > SAL_CALL ValueSetAcc::getAccessible if( VALUESET_ITEM_NONEITEM != nItemPos ) { - ValueSetItem *const pItem = mpParent->mItemList[nItemPos].get(); - xRet = pItem->GetAccessible( false/*bIsTransientChildrenDisabled*/ ); + ValueSetItem & rItem = mpParent->mItemList[nItemPos]; + xRet = rItem.GetAccessible( false/*bIsTransientChildrenDisabled*/ ); } } diff --git a/svtools/source/control/valueimp.hxx b/svtools/source/control/valueimp.hxx index b980cb1f5c90..367debaf75e9 100644 --- a/svtools/source/control/valueimp.hxx +++ b/svtools/source/control/valueimp.hxx @@ -50,7 +50,7 @@ class ValueSet; struct ValueSetItem { - ValueSet& mrParent; + ValueSet* mpParent; sal_uInt16 mnId; sal_uInt8 meType; bool mbVisible; @@ -62,6 +62,10 @@ struct ValueSetItem explicit ValueSetItem( ValueSet& rParent ); ~ValueSetItem(); + ValueSetItem( const ValueSetItem& ) = default; + ValueSetItem( ValueSetItem&& ) = default; + ValueSetItem& operator=( const ValueSetItem& ) = default; + ValueSetItem& operator=( ValueSetItem&& ) = default; css::uno::Reference< css::accessibility::XAccessible > GetAccessible( bool bIsTransientChildrenDisabled ); diff --git a/svtools/source/control/valueset.cxx b/svtools/source/control/valueset.cxx index 9e14b49dbe46..a2e3159f1e9b 100644 --- a/svtools/source/control/valueset.cxx +++ b/svtools/source/control/valueset.cxx @@ -138,17 +138,15 @@ void ValueSet::ImplDeleteItems() for ( size_t i = 0; i < n; ++i ) { - ValueSetItem* pItem = mItemList[i].get(); - if ( pItem->mbVisible && ImplHasAccessibleListeners() ) + ValueSetItem& rItem = mItemList[i]; + if ( rItem.mbVisible && ImplHasAccessibleListeners() ) { Any aOldAny; Any aNewAny; - aOldAny <<= pItem->GetAccessible( false/*bIsTransientChildrenDisabled*/ ); + aOldAny <<= rItem.GetAccessible( false/*bIsTransientChildrenDisabled*/ ); ImplFireAccessibleEvent(AccessibleEventId::CHILD, aOldAny, aNewAny); } - - mItemList[i].reset(); } mItemList.clear(); @@ -206,12 +204,12 @@ ValueSetItem* ValueSet::ImplGetItem( size_t nPos ) if (nPos == VALUESET_ITEM_NONEITEM) return mpNoneItem.get(); else - return (nPos < mItemList.size()) ? mItemList[nPos].get() : nullptr; + return (nPos < mItemList.size()) ? &mItemList[nPos] : nullptr; } ValueSetItem* ValueSet::ImplGetFirstItem() { - return !mItemList.empty() ? mItemList[0].get() : nullptr; + return !mItemList.empty() ? mItemList.data() : nullptr; } sal_uInt16 ValueSet::ImplGetVisibleItemCount() const @@ -221,7 +219,7 @@ sal_uInt16 ValueSet::ImplGetVisibleItemCount() const for ( size_t n = 0; n < nItemCount; ++n ) { - if ( mItemList[n]->mbVisible ) + if ( mItemList[n].mbVisible ) ++nRet; } @@ -614,7 +612,7 @@ size_t ValueSet::GetItemCount() const size_t ValueSet::GetItemPos( sal_uInt16 nItemId ) const { for ( size_t i = 0, n = mItemList.size(); i < n; ++i ) { - if ( mItemList[i]->mnId == nItemId ) { + if ( mItemList[i].mnId == nItemId ) { return i; } } @@ -623,7 +621,7 @@ size_t ValueSet::GetItemPos( sal_uInt16 nItemId ) const sal_uInt16 ValueSet::GetItemId( size_t nPos ) const { - return ( nPos < mItemList.size() ) ? mItemList[nPos]->mnId : 0 ; + return ( nPos < mItemList.size() ) ? mItemList[nPos].mnId : 0 ; } sal_uInt16 ValueSet::GetItemId( const Point& rPos ) const @@ -639,7 +637,7 @@ tools::Rectangle ValueSet::GetItemRect( sal_uInt16 nItemId ) const { const size_t nPos = GetItemPos( nItemId ); - if ( nPos!=VALUESET_ITEM_NOTFOUND && mItemList[nPos]->mbVisible ) + if ( nPos!=VALUESET_ITEM_NOTFOUND && mItemList[nPos].mbVisible ) return ImplGetItemRect( nPos ); return tools::Rectangle(); @@ -812,7 +810,7 @@ void ValueSet::SelectItem( sal_uInt16 nItemId ) if( nPos != VALUESET_ITEM_NOTFOUND ) { ValueItemAcc* pItemAcc = ValueItemAcc::getImplementation( - mItemList[nPos]->GetAccessible( false/*bIsTransientChildrenDisabled*/ ) ); + mItemList[nPos].GetAccessible( false/*bIsTransientChildrenDisabled*/ ) ); if( pItemAcc ) { @@ -829,7 +827,7 @@ void ValueSet::SelectItem( sal_uInt16 nItemId ) ValueSetItem* pItem; if( nPos != VALUESET_ITEM_NOTFOUND ) - pItem = mItemList[nPos].get(); + pItem = &mItemList[nPos]; else pItem = mpNoneItem.get(); @@ -1027,7 +1025,7 @@ void ValueSet::Format(vcl::RenderContext const & rRenderContext) for (size_t i = 0; i < nItemCount; i++) { - mItemList[i]->mbVisible = false; + mItemList[i].mbVisible = false; } if (mxScrolledWindow && mxScrolledWindow->get_vpolicy() != VclPolicyType::NEVER) @@ -1105,7 +1103,7 @@ void ValueSet::Format(vcl::RenderContext const & rRenderContext) maNoneItemRect.SetRight( maNoneItemRect.Left() + aWinSize.Width() - x - 1 ); maNoneItemRect.SetBottom( y + nNoneHeight - 1 ); - ImplFormatItem(rRenderContext, mpNoneItem.get(), maNoneItemRect); + ImplFormatItem(rRenderContext, *mpNoneItem, maNoneItemRect); y += nNoneHeight + nNoneSpace; } @@ -1130,21 +1128,21 @@ void ValueSet::Format(vcl::RenderContext const & rRenderContext) } for (size_t i = 0; i < nItemCount; i++) { - ValueSetItem* pItem = mItemList[i].get(); + ValueSetItem& rItem = mItemList[i]; if (i >= nFirstItem && i < nLastItem) { - if (!pItem->mbVisible && ImplHasAccessibleListeners()) + if (!rItem.mbVisible && ImplHasAccessibleListeners()) { Any aOldAny; Any aNewAny; - aNewAny <<= pItem->GetAccessible(false/*bIsTransientChildrenDisabled*/); + aNewAny <<= rItem.GetAccessible(false/*bIsTransientChildrenDisabled*/); ImplFireAccessibleEvent(AccessibleEventId::CHILD, aOldAny, aNewAny); } - pItem->mbVisible = true; - ImplFormatItem(rRenderContext, pItem, tools::Rectangle(Point(x, y), Size(mnItemWidth, mnItemHeight))); + rItem.mbVisible = true; + ImplFormatItem(rRenderContext, rItem, tools::Rectangle(Point(x, y), Size(mnItemWidth, mnItemHeight))); if (!((i + 1) % mnCols)) { @@ -1156,16 +1154,16 @@ void ValueSet::Format(vcl::RenderContext const & rRenderContext) } else { - if (pItem->mbVisible && ImplHasAccessibleListeners()) + if (rItem.mbVisible && ImplHasAccessibleListeners()) { Any aOldAny; Any aNewAny; - aOldAny <<= pItem->GetAccessible(false/*bIsTransientChildrenDisabled*/); + aOldAny <<= rItem.GetAccessible(false/*bIsTransientChildrenDisabled*/); ImplFireAccessibleEvent(AccessibleEventId::CHILD, aOldAny, aNewAny); } - pItem->mbVisible = false; + rItem.mbVisible = false; } } @@ -1219,7 +1217,7 @@ void ValueSet::ImplDrawSelect(vcl::RenderContext& rRenderContext, sal_uInt16 nIt if (nItemId) { const size_t nPos = GetItemPos( nItemId ); - pItem = mItemList[ nPos ].get(); + pItem = &mItemList[ nPos ]; aRect = ImplGetItemRect( nPos ); } else if (mpNoneItem) @@ -1332,7 +1330,7 @@ void ValueSet::ImplDrawSelect(vcl::RenderContext& rRenderContext, sal_uInt16 nIt ImplDrawItemText(rRenderContext, pItem->maText); } -void ValueSet::ImplFormatItem(vcl::RenderContext const & rRenderContext, ValueSetItem* pItem, tools::Rectangle aRect) +void ValueSet::ImplFormatItem(vcl::RenderContext const & rRenderContext, ValueSetItem& rItem, tools::Rectangle aRect) { WinBits nStyle = GetStyle(); if (nStyle & WB_ITEMBORDER) @@ -1358,15 +1356,15 @@ void ValueSet::ImplFormatItem(vcl::RenderContext const & rRenderContext, ValueSe } } - if (pItem == mpNoneItem.get()) - pItem->maText = GetText(); + if (&rItem == mpNoneItem.get()) + rItem.maText = GetText(); if ((aRect.GetHeight() <= 0) || (aRect.GetWidth() <= 0)) return; const StyleSettings& rStyleSettings = rRenderContext.GetSettings().GetStyleSettings(); - if (pItem == mpNoneItem.get()) + if (&rItem == mpNoneItem.get()) { maVirDev->SetFont(rRenderContext.GetFont()); maVirDev->SetTextColor((nStyle & WB_MENUSTYLEVALUESET) ? rStyleSettings.GetMenuTextColor() : rStyleSettings.GetWindowTextColor()); @@ -1374,19 +1372,19 @@ void ValueSet::ImplFormatItem(vcl::RenderContext const & rRenderContext, ValueSe maVirDev->SetFillColor((nStyle & WB_MENUSTYLEVALUESET) ? rStyleSettings.GetMenuColor() : rStyleSettings.GetWindowColor()); maVirDev->DrawRect(aRect); Point aTxtPos(aRect.Left() + 2, aRect.Top()); - tools::Long nTxtWidth = rRenderContext.GetTextWidth(pItem->maText); + tools::Long nTxtWidth = rRenderContext.GetTextWidth(rItem.maText); if ((aTxtPos.X() + nTxtWidth) > aRect.Right()) { maVirDev->SetClipRegion(vcl::Region(aRect)); - maVirDev->DrawText(aTxtPos, pItem->maText); + maVirDev->DrawText(aTxtPos, rItem.maText); maVirDev->SetClipRegion(); } else - maVirDev->DrawText(aTxtPos, pItem->maText); + maVirDev->DrawText(aTxtPos, rItem.maText); } - else if (pItem->meType == VALUESETITEM_COLOR) + else if (rItem.meType == VALUESETITEM_COLOR) { - maVirDev->SetFillColor(pItem->maColor); + maVirDev->SetFillColor(rItem.maColor); maVirDev->DrawRect(aRect); } else @@ -1401,19 +1399,19 @@ void ValueSet::ImplFormatItem(vcl::RenderContext const & rRenderContext, ValueSe maVirDev->SetFillColor(rStyleSettings.GetFaceColor()); maVirDev->DrawRect(aRect); - if (pItem->meType == VALUESETITEM_USERDRAW) + if (rItem.meType == VALUESETITEM_USERDRAW) { - UserDrawEvent aUDEvt(maVirDev.get(), aRect, pItem->mnId); + UserDrawEvent aUDEvt(maVirDev.get(), aRect, rItem.mnId); UserDraw(aUDEvt); } else { - Size aImageSize = pItem->maImage.GetSizePixel(); + Size aImageSize = rItem.maImage.GetSizePixel(); Size aRectSize = aRect.GetSize(); Point aPos(aRect.Left(), aRect.Top()); aPos.AdjustX((aRectSize.Width() - aImageSize.Width()) / 2 ); - if (pItem->meType != VALUESETITEM_IMAGE_AND_TEXT) + if (rItem.meType != VALUESETITEM_IMAGE_AND_TEXT) aPos.AdjustY((aRectSize.Height() - aImageSize.Height()) / 2 ); DrawImageFlags nImageStyle = DrawImageFlags::NONE; @@ -1424,19 +1422,19 @@ void ValueSet::ImplFormatItem(vcl::RenderContext const & rRenderContext, ValueSe aImageSize.Height() > aRectSize.Height()) { maVirDev->SetClipRegion(vcl::Region(aRect)); - maVirDev->DrawImage(aPos, pItem->maImage, nImageStyle); + maVirDev->DrawImage(aPos, rItem.maImage, nImageStyle); maVirDev->SetClipRegion(); } else - maVirDev->DrawImage(aPos, pItem->maImage, nImageStyle); + maVirDev->DrawImage(aPos, rItem.maImage, nImageStyle); - if (pItem->meType == VALUESETITEM_IMAGE_AND_TEXT) + if (rItem.meType == VALUESETITEM_IMAGE_AND_TEXT) { maVirDev->SetFont(rRenderContext.GetFont()); maVirDev->SetTextColor((nStyle & WB_MENUSTYLEVALUESET) ? rStyleSettings.GetMenuTextColor() : rStyleSettings.GetWindowTextColor()); maVirDev->SetTextFillColor(); - tools::Long nTxtWidth = maVirDev->GetTextWidth(pItem->maText); + tools::Long nTxtWidth = maVirDev->GetTextWidth(rItem.maText); if (nTxtWidth > aRect.GetWidth()) maVirDev->SetClipRegion(vcl::Region(aRect)); @@ -1444,7 +1442,7 @@ void ValueSet::ImplFormatItem(vcl::RenderContext const & rRenderContext, ValueSe maVirDev->DrawText(Point(aRect.Left() + (aRect.GetWidth() - nTxtWidth) / 2, aRect.Bottom() - maVirDev->GetTextHeight()), - pItem->maText); + rItem.maText); if (nTxtWidth > aRect.GetWidth()) maVirDev->SetClipRegion(); @@ -1522,9 +1520,9 @@ void ValueSet::SetItemImage( sal_uInt16 nItemId, const Image& rImage ) if ( nPos == VALUESET_ITEM_NOTFOUND ) return; - ValueSetItem* pItem = mItemList[nPos].get(); - pItem->meType = VALUESETITEM_IMAGE; - pItem->maImage = rImage; + ValueSetItem& rItem = mItemList[nPos]; + rItem.meType = VALUESETITEM_IMAGE; + rItem.maImage = rImage; if ( !mbFormat && IsReallyVisible() && IsUpdateMode() ) { @@ -1542,9 +1540,9 @@ void ValueSet::SetItemColor( sal_uInt16 nItemId, const Color& rColor ) if ( nPos == VALUESET_ITEM_NOTFOUND ) return; - ValueSetItem* pItem = mItemList[nPos].get(); - pItem->meType = VALUESETITEM_COLOR; - pItem->maColor = rColor; + ValueSetItem& rItem = mItemList[nPos]; + rItem.meType = VALUESETITEM_COLOR; + rItem.maColor = rColor; if ( !mbFormat && IsReallyVisible() && IsUpdateMode() ) { @@ -1560,7 +1558,7 @@ Color ValueSet::GetItemColor( sal_uInt16 nItemId ) const size_t nPos = GetItemPos( nItemId ); if ( nPos != VALUESET_ITEM_NOTFOUND ) - return mItemList[nPos]->maColor; + return mItemList[nPos].maColor; else return Color(); } @@ -1638,54 +1636,54 @@ Size ValueSet::CalcWindowSizePixel( const Size& rItemSize, sal_uInt16 nDesireCol void ValueSet::InsertItem( sal_uInt16 nItemId, const Image& rImage ) { - std::unique_ptr<ValueSetItem> pItem(new ValueSetItem( *this )); - pItem->mnId = nItemId; - pItem->meType = VALUESETITEM_IMAGE; - pItem->maImage = rImage; - ImplInsertItem( std::move(pItem), VALUESET_APPEND ); + ValueSetItem aItem(*this); + aItem.mnId = nItemId; + aItem.meType = VALUESETITEM_IMAGE; + aItem.maImage = rImage; + ImplInsertItem( aItem, VALUESET_APPEND ); } void ValueSet::InsertItem( sal_uInt16 nItemId, const Image& rImage, const OUString& rText, size_t nPos, bool bShowLegend ) { - std::unique_ptr<ValueSetItem> pItem(new ValueSetItem( *this )); - pItem->mnId = nItemId; - pItem->meType = bShowLegend ? VALUESETITEM_IMAGE_AND_TEXT : VALUESETITEM_IMAGE; - pItem->maImage = rImage; - pItem->maText = rText; - ImplInsertItem( std::move(pItem), nPos ); + ValueSetItem aItem( *this ); + aItem.mnId = nItemId; + aItem.meType = bShowLegend ? VALUESETITEM_IMAGE_AND_TEXT : VALUESETITEM_IMAGE; + aItem.maImage = rImage; + aItem.maText = rText; + ImplInsertItem( aItem, nPos ); } void ValueSet::InsertItem( sal_uInt16 nItemId, size_t nPos ) { - std::unique_ptr<ValueSetItem> pItem(new ValueSetItem( *this )); - pItem->mnId = nItemId; - pItem->meType = VALUESETITEM_USERDRAW; - ImplInsertItem( std::move(pItem), nPos ); + ValueSetItem aItem(*this ); + aItem.mnId = nItemId; + aItem.meType = VALUESETITEM_USERDRAW; + ImplInsertItem( aItem, nPos ); } void ValueSet::InsertItem( sal_uInt16 nItemId, const Color& rColor, const OUString& rText ) { - std::unique_ptr<ValueSetItem> pItem(new ValueSetItem( *this )); - pItem->mnId = nItemId; - pItem->meType = VALUESETITEM_COLOR; - pItem->maColor = rColor; - pItem->maText = rText; - ImplInsertItem( std::move(pItem), VALUESET_APPEND ); + ValueSetItem aItem( *this ); + aItem.mnId = nItemId; + aItem.meType = VALUESETITEM_COLOR; + aItem.maColor = rColor; + aItem.maText = rText; + ImplInsertItem( aItem, VALUESET_APPEND ); } -void ValueSet::ImplInsertItem( std::unique_ptr<ValueSetItem> pItem, const size_t nPos ) +void ValueSet::ImplInsertItem( const ValueSetItem& rItem, const size_t nPos ) { - DBG_ASSERT( pItem->mnId, "ValueSet::InsertItem(): ItemId == 0" ); - DBG_ASSERT( GetItemPos( pItem->mnId ) == VALUESET_ITEM_NOTFOUND, + DBG_ASSERT( rItem.mnId, "ValueSet::InsertItem(): ItemId == 0" ); + DBG_ASSERT( GetItemPos( rItem.mnId ) == VALUESET_ITEM_NOTFOUND, "ValueSet::InsertItem(): ItemId already exists" ); if ( nPos < mItemList.size() ) { - mItemList.insert( mItemList.begin() + nPos, std::move(pItem) ); + mItemList.insert( mItemList.begin() + nPos, rItem ); } else { - mItemList.push_back( std::move(pItem) ); + mItemList.push_back( rItem ); } QueueReformat(); @@ -1761,7 +1759,7 @@ void ValueSet::InsertItem( sal_uInt16 nItemId, const OUString& rText, size_t nPo pItem->mnId = nItemId; pItem->meType = VALUESETITEM_USERDRAW; pItem->maText = rText; - ImplInsertItem( std::move(pItem), nPos ); + ImplInsertItem( *pItem, nPos ); } void ValueSet::SetItemHeight( tools::Long nNewItemHeight ) @@ -1791,7 +1789,7 @@ OUString ValueSet::GetItemText(sal_uInt16 nItemId) const const size_t nPos = GetItemPos(nItemId); if ( nPos != VALUESET_ITEM_NOTFOUND ) - return mItemList[nPos]->maText; + return mItemList[nPos].maText; return OUString(); } @@ -1817,10 +1815,10 @@ void ValueSet::SetItemData( sal_uInt16 nItemId, void* pData ) if ( nPos == VALUESET_ITEM_NOTFOUND ) return; - ValueSetItem* pItem = mItemList[nPos].get(); - pItem->mpData = pData; + ValueSetItem& rItem = mItemList[nPos]; + rItem.mpData = pData; - if ( pItem->meType == VALUESETITEM_USERDRAW ) + if ( rItem.meType == VALUESETITEM_USERDRAW ) { if ( !mbFormat && IsReallyVisible() && IsUpdateMode() ) { @@ -1837,7 +1835,7 @@ void* ValueSet::GetItemData( sal_uInt16 nItemId ) const size_t nPos = GetItemPos( nItemId ); if ( nPos != VALUESET_ITEM_NOTFOUND ) - return mItemList[nPos]->mpData; + return mItemList[nPos].mpData; else return nullptr; } @@ -1849,17 +1847,15 @@ void ValueSet::SetItemText(sal_uInt16 nItemId, const OUString& rText) if ( nPos == VALUESET_ITEM_NOTFOUND ) return; - ValueSetItem* pItem = mItemList[nPos].get(); + ValueSetItem& rItem = mItemList[nPos]; // Remember old and new name for accessibility event. Any aOldName; Any aNewName; - OUString sString (pItem->maText); - aOldName <<= sString; - sString = rText; - aNewName <<= sString; + aOldName <<= rItem.maText; + aNewName <<= rText; - pItem->maText = rText; + rItem.maText = rText; if (!mbFormat && IsReallyVisible() && IsUpdateMode()) { @@ -1874,7 +1870,7 @@ void ValueSet::SetItemText(sal_uInt16 nItemId, const OUString& rText) if (ImplHasAccessibleListeners()) { - Reference<XAccessible> xAccessible(pItem->GetAccessible( false/*bIsTransientChildrenDisabled*/)); + Reference<XAccessible> xAccessible(rItem.GetAccessible( false/*bIsTransientChildrenDisabled*/)); ValueItemAcc* pValueItemAcc = static_cast<ValueItemAcc*>(xAccessible.get()); pValueItemAcc->FireAccessibleEvent(AccessibleEventId::NAME_CHANGED, aOldName, aNewName); } @@ -1884,25 +1880,25 @@ Size ValueSet::GetLargestItemSize() { Size aLargestItem; - for (const std::unique_ptr<ValueSetItem>& pItem : mItemList) + for (const ValueSetItem& rItem : mItemList) { - if (!pItem->mbVisible) + if (!rItem.mbVisible) continue; - if (pItem->meType != VALUESETITEM_IMAGE && - pItem->meType != VALUESETITEM_IMAGE_AND_TEXT) + if (rItem.meType != VALUESETITEM_IMAGE && + rItem.meType != VALUESETITEM_IMAGE_AND_TEXT) { // handle determining an optimal size for this case continue; } - Size aSize = pItem->maImage.GetSizePixel(); - if (pItem->meType == VALUESETITEM_IMAGE_AND_TEXT) + Size aSize = rItem.maImage.GetSizePixel(); + if (rItem.meType == VALUESETITEM_IMAGE_AND_TEXT) { aSize.AdjustHeight(3 * NAME_LINE_HEIGHT + maVirDev->GetTextHeight() ); aSize.setWidth( std::max(aSize.Width(), - maVirDev->GetTextWidth(pItem->maText) + NAME_OFFSET) ); + maVirDev->GetTextWidth(rItem.maText) + NAME_OFFSET) ); } aLargestItem.setWidth( std::max(aLargestItem.Width(), aSize.Width()) ); @@ -1926,7 +1922,7 @@ Image ValueSet::GetItemImage(sal_uInt16 nItemId) const size_t nPos = GetItemPos( nItemId ); if ( nPos != VALUESET_ITEM_NOTFOUND ) - return mItemList[nPos]->maImage; + return mItemList[nPos].maImage; else return Image(); } _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/libreoffice-commits