accessibility/inc/standard/vclxaccessiblelist.hxx    |    2 -
 accessibility/source/standard/vclxaccessiblelist.cxx |   25 +++++++++----------
 2 files changed, 13 insertions(+), 14 deletions(-)

New commits:
commit bfa9d01920e7e042a83627d7fa4e78c70bc7ece5
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Mon Sep 4 17:03:47 2023 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Mon Sep 4 21:41:00 2023 +0200

    tdf#157088 a11y: No need to use WeakReference for list children
    
    `VCLXAccessibleList` is the owner of the
    `VCLXAccessibleListItem`s held in that vector,
    so I see no reason to hold them by weak reference,
    which according to the doc in
    `udkapi/com/sun/star/uno/XWeak.idl` is to avoid
    affecting the lifetime of the objects:
    
    > <p>The sense of weak references is to hold a reference to an object
    > without affecting the lifetime of the object. That means that a weak
    > reference may become invalid, at any time, if the referenced object dies.
    > </p>
    
    Quite the contrary, it is actually responsible for the
    lifecycle of the list item a11y objects and should dispose
    them when itself gets disposed, which will be added
    in a subsequent commit.
    
    Change-Id: I57fe3367f1199cd0c24f006f6e25a1e9c930c154
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/156521
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/accessibility/inc/standard/vclxaccessiblelist.hxx 
b/accessibility/inc/standard/vclxaccessiblelist.hxx
index bab8b649fa07..57d43d2c11de 100644
--- a/accessibility/inc/standard/vclxaccessiblelist.hxx
+++ b/accessibility/inc/standard/vclxaccessiblelist.hxx
@@ -25,7 +25,7 @@
 #include <cppuhelper/implbase.hxx>
 #include <toolkit/awt/vclxaccessiblecomponent.hxx>
 
-typedef std::vector< css::uno::WeakReference< css::accessibility::XAccessible 
> >
+typedef std::vector<css::uno::Reference<css::accessibility::XAccessible>>
     ListItems;
 
 namespace accessibility
diff --git a/accessibility/source/standard/vclxaccessiblelist.cxx 
b/accessibility/source/standard/vclxaccessiblelist.cxx
index c38240e3b4e7..57f9b1eabcb3 100644
--- a/accessibility/source/standard/vclxaccessiblelist.cxx
+++ b/accessibility/source/standard/vclxaccessiblelist.cxx
@@ -107,6 +107,7 @@ void SAL_CALL VCLXAccessibleList::disposing()
     VCLXAccessibleComponent::disposing();
 
     // Dispose all items in the list.
+
     m_aAccessibleChildren.clear();
 
     m_pListBoxHelper.reset();
@@ -155,14 +156,14 @@ void VCLXAccessibleList::notifyVisibleStates(bool 
_bSetNew )
     // adjust the index inside the VCLXAccessibleListItem
     for ( ; aIter != m_aAccessibleChildren.end(); )
     {
-        Reference< XAccessible > xHold = *aIter;
-        if (!xHold.is())
+        Reference<XAccessible> xChild = *aIter;
+        if (!xChild.is())
         {
             aIter = m_aAccessibleChildren.erase(aIter);
         }
         else
         {
-            VCLXAccessibleListItem* pItem = 
static_cast<VCLXAccessibleListItem*>(xHold.get());
+            VCLXAccessibleListItem* pItem = 
static_cast<VCLXAccessibleListItem*>(xChild.get());
             const sal_Int32 nTopEntry = m_pListBoxHelper ? 
m_pListBoxHelper->GetTopEntry() : 0;
             const sal_Int32 nPos = static_cast<sal_Int32>(aIter - 
m_aAccessibleChildren.begin());
             bool bVisible = ( nPos>=nTopEntry && nPos<( nTopEntry + 
m_nVisibleLineCount ) );
@@ -205,12 +206,11 @@ void VCLXAccessibleList::UpdateSelection_Impl_Acc(bool 
bHasDropDownList)
         {
             sal_Int32 i=0;
             m_nCurSelectedPos = LISTBOX_ENTRY_NOTFOUND;
-            for ( const auto& rChild : m_aAccessibleChildren )
+            for (const Reference<XAccessible>& rxChild : m_aAccessibleChildren)
             {
-                Reference< XAccessible > xHold = rChild;
-                if ( xHold.is() )
+                if (rxChild.is())
                 {
-                    VCLXAccessibleListItem* pItem = static_cast< 
VCLXAccessibleListItem* >( xHold.get() );
+                    VCLXAccessibleListItem* pItem = static_cast< 
VCLXAccessibleListItem* >(rxChild.get() );
                     // Retrieve the item's index from the list entry.
                     bool bNowSelected = m_pListBoxHelper->IsEntryPosSelected 
(i);
                     if (bNowSelected)
@@ -218,7 +218,7 @@ void VCLXAccessibleList::UpdateSelection_Impl_Acc(bool 
bHasDropDownList)
 
                     if ( bNowSelected && !pItem->IsSelected() )
                     {
-                        xNewAcc = rChild;
+                        xNewAcc = rxChild;
                         aNewValue <<= xNewAcc;
                     }
                     else if ( pItem->IsSelected() )
@@ -663,12 +663,11 @@ void VCLXAccessibleList::UpdateSelection_Impl(sal_Int32)
         {
             sal_Int32 i=0;
             m_nCurSelectedPos = LISTBOX_ENTRY_NOTFOUND;
-            for ( const auto& rChild : m_aAccessibleChildren )
+            for (const Reference<XAccessible>& rxChild : m_aAccessibleChildren 
)
             {
-                Reference< XAccessible > xHold = rChild;
-                if ( xHold.is() )
+                if (rxChild.is())
                 {
-                    VCLXAccessibleListItem* pItem = static_cast< 
VCLXAccessibleListItem* >( xHold.get() );
+                    VCLXAccessibleListItem* pItem = static_cast< 
VCLXAccessibleListItem* >( rxChild.get() );
                     // Retrieve the item's index from the list entry.
                     bool bNowSelected = m_pListBoxHelper->IsEntryPosSelected 
(i);
                     if (bNowSelected)
@@ -676,7 +675,7 @@ void VCLXAccessibleList::UpdateSelection_Impl(sal_Int32)
 
                     if ( bNowSelected && !pItem->IsSelected() )
                     {
-                        xNewAcc = rChild;
+                        xNewAcc = rxChild;
                         aNewValue <<= xNewAcc;
                     }
                     else if ( pItem->IsSelected() )

Reply via email to