accessibility/source/extended/AccessibleGridControlTable.cxx |    4 -
 sc/source/ui/Accessibility/AccessibleCsvControl.cxx          |    4 -
 svtools/source/brwbox/brwbox1.cxx                            |   42 +++++------
 svtools/source/table/tablecontrol_impl.cxx                   |    8 +-
 4 files changed, 30 insertions(+), 28 deletions(-)

New commits:
commit 5a9340bceeee0e20817ecf23dc1e12653751ca1d
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Mon Mar 28 15:24:23 2022 +0200
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Tue Mar 29 06:51:02 2022 +0200

    a11y: Use new table model change types for row/col ins/del
    
    This ports most existing uses of the now deprecated
    `AccessibleTableModelChangeType::INSERT` and
    `AccessibleTableModelChangeType::DELETE` to emit
    events of the the four new table model change types
    added in
    Change-Id I30821a5acafa4f3d1dafdfc219f3b4568d9a6e89,
    "a11y: Add new table model change types for row/col insertion/del"
    instead, which among others fixes the a11y events that are sent
    on the platform level for gtk3 and macOS,
    s. commit message of the mentioned change for more details.
    
    From all I can see, `AccessibleGridControlTable::commitEvent`
    is just meant to handle removal of rows, not columns,
    so add a corresponding assert there.
    (See how only row-related a11y events are emitted
    in `svtools/source/table/tablecontrol_impl.cxx`,
    and the "columns aren't selectable" comment for
    `AccessibleGridControlTable::isAccessibleColumnSelected`.
    Given that the full range of rows would previously
    have been sent in the `AccessibleTableModelChangeType::DELETE`
    event for column removal, this should still have worked in
    practice, since this would have cleared the whole vector,
    and elements would have been inserted on demand as needed
    again later. However, if that should ever be needed in
    the future, it should be handled more explicitly.)
    
    The handling of sending events when rows or columns
    are inserted or deleted in a Calc spreadsheet is more
    fundamentally broken and will be handled in a separate
    commit.
    
    Change-Id: Icfd5e326143e8e90cc513e430bfabbba39e7bdc6
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/132218
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/accessibility/source/extended/AccessibleGridControlTable.cxx 
b/accessibility/source/extended/AccessibleGridControlTable.cxx
index 3c635e910d72..00788cdf2d31 100644
--- a/accessibility/source/extended/AccessibleGridControlTable.cxx
+++ b/accessibility/source/extended/AccessibleGridControlTable.cxx
@@ -312,7 +312,9 @@ void AccessibleGridControlTable::commitEvent(sal_Int16 
nEventId, const css::uno:
         AccessibleTableModelChange aChange;
         if (rNewValue >>= aChange)
         {
-            if (aChange.Type == AccessibleTableModelChangeType::DELETE)
+            assert(aChange.Type != 
AccessibleTableModelChangeType::COLUMNS_REMOVED);
+
+            if (aChange.Type == AccessibleTableModelChangeType::ROWS_REMOVED)
             {
                 int nColCount = m_aTable.GetColumnCount();
                 // check valid index - entries are inserted lazily
diff --git a/sc/source/ui/Accessibility/AccessibleCsvControl.cxx 
b/sc/source/ui/Accessibility/AccessibleCsvControl.cxx
index 7db93dbe6d25..e9a4a1deef65 100644
--- a/sc/source/ui/Accessibility/AccessibleCsvControl.cxx
+++ b/sc/source/ui/Accessibility/AccessibleCsvControl.cxx
@@ -1163,7 +1163,7 @@ void ScAccessibleCsvGrid::SendInsertColumnEvent( 
sal_uInt32 nFirstColumn, sal_uI
     if( nFirstColumn <= nLastColumn )
     {
         AccessibleTableModelChange aModelChange(
-            AccessibleTableModelChangeType::INSERT, 0, implGetRowCount() - 1,
+            AccessibleTableModelChangeType::COLUMNS_INSERTED, -1, -1,
             lcl_GetApiColumn( nFirstColumn ), lcl_GetApiColumn( nLastColumn ) 
);
         Any aOldAny, aNewAny;
         aNewAny <<= aModelChange;
@@ -1176,7 +1176,7 @@ void ScAccessibleCsvGrid::SendRemoveColumnEvent( 
sal_uInt32 nFirstColumn, sal_uI
     if( nFirstColumn <= nLastColumn )
     {
         AccessibleTableModelChange aModelChange(
-            AccessibleTableModelChangeType::DELETE, 0, implGetRowCount() - 1,
+            AccessibleTableModelChangeType::COLUMNS_REMOVED, -1, -1,
             lcl_GetApiColumn( nFirstColumn ), lcl_GetApiColumn( nLastColumn ) 
);
         Any aOldAny, aNewAny;
         aNewAny <<= aModelChange;
diff --git a/svtools/source/brwbox/brwbox1.cxx 
b/svtools/source/brwbox/brwbox1.cxx
index 64efb0e7023f..18a5f772613f 100644
--- a/svtools/source/brwbox/brwbox1.cxx
+++ b/svtools/source/brwbox/brwbox1.cxx
@@ -495,9 +495,9 @@ void BrowseBox::SetColumnPos( sal_uInt16 nColumnId, 
sal_uInt16 nPos )
     commitTableEvent(
         TABLE_MODEL_CHANGED,
         makeAny( AccessibleTableModelChange(
-                    DELETE,
-                    0,
-                    GetRowCount(),
+                    COLUMNS_REMOVED,
+                    -1,
+                    -1,
                     nOldPos,
                     nOldPos
                 )
@@ -508,9 +508,9 @@ void BrowseBox::SetColumnPos( sal_uInt16 nColumnId, 
sal_uInt16 nPos )
     commitTableEvent(
         TABLE_MODEL_CHANGED,
         makeAny( AccessibleTableModelChange(
-                    INSERT,
-                    0,
-                    GetRowCount(),
+                    COLUMNS_INSERTED,
+                    -1,
+                    -1,
                     nPos,
                     nPos
                 )
@@ -740,9 +740,9 @@ void BrowseBox::RemoveColumn( sal_uInt16 nItemId )
 
     commitTableEvent(
         TABLE_MODEL_CHANGED,
-        makeAny( AccessibleTableModelChange(    DELETE,
-                                                0,
-                                                GetRowCount(),
+        makeAny( AccessibleTableModelChange(COLUMNS_REMOVED,
+                                                -1,
+                                                -1,
                                                 nPos,
                                                 nPos
                                            )
@@ -814,9 +814,9 @@ void BrowseBox::RemoveColumns()
     // notify a table model change
     commitTableEvent(
         TABLE_MODEL_CHANGED,
-        makeAny ( AccessibleTableModelChange( DELETE,
-                        0,
-                        GetRowCount(),
+        makeAny ( AccessibleTableModelChange( COLUMNS_REMOVED,
+                        -1,
+                        -1,
                         0,
                         nOldCount
                     )
@@ -1134,11 +1134,11 @@ void BrowseBox::Clear()
     // notify a table model change
     commitTableEvent(
         TABLE_MODEL_CHANGED,
-        makeAny( AccessibleTableModelChange( DELETE,
+        makeAny( AccessibleTableModelChange(ROWS_REMOVED,
             0,
             nOldRowCount,
-            0,
-            GetColumnCount())
+            -1,
+            -1)
         ),
         Any()
     );
@@ -1221,11 +1221,11 @@ void BrowseBox::RowInserted( sal_Int32 nRow, sal_Int32 
nNumRows, bool bDoPaint,
         commitTableEvent(
             TABLE_MODEL_CHANGED,
             makeAny( AccessibleTableModelChange(
-                        INSERT,
+                        ROWS_INSERTED,
                         nRow,
                         nRow + nNumRows,
-                        0,
-                        GetColumnCount()
+                        -1,
+                        -1
                     )
             ),
             Any()
@@ -1391,11 +1391,11 @@ void BrowseBox::RowRemoved( sal_Int32 nRow, sal_Int32 
nNumRows, bool bDoPaint )
             commitTableEvent(
                 TABLE_MODEL_CHANGED,
                 makeAny( AccessibleTableModelChange(
-                            DELETE,
+                            ROWS_REMOVED,
                             nRow,
                             nRow + nNumRows,
-                            0,
-                            GetColumnCount()
+                            -1,
+                            -1
                             )
                 ),
                 Any()
diff --git a/svtools/source/table/tablecontrol_impl.cxx 
b/svtools/source/table/tablecontrol_impl.cxx
index fbba96e6c840..9a874be2edb2 100644
--- a/svtools/source/table/tablecontrol_impl.cxx
+++ b/svtools/source/table/tablecontrol_impl.cxx
@@ -325,7 +325,7 @@ namespace svt::table
         if ( impl_isAccessibleAlive() )
         {
             impl_commitAccessibleEvent( AccessibleEventId::TABLE_MODEL_CHANGED,
-                makeAny( AccessibleTableModelChange( 
AccessibleTableModelChangeType::INSERT, i_first, i_last, 0, 
m_pModel->getColumnCount() ) )
+                makeAny( AccessibleTableModelChange( 
AccessibleTableModelChangeType::ROWS_INSERTED, i_first, i_last, -1, -1 ) )
             );
         }
 
@@ -395,11 +395,11 @@ namespace svt::table
             commitTableEvent(
                 AccessibleEventId::TABLE_MODEL_CHANGED,
                 makeAny( AccessibleTableModelChange(
-                    AccessibleTableModelChangeType::DELETE,
+                    AccessibleTableModelChangeType::ROWS_REMOVED,
                     firstRemovedRow,
                     lastRemovedRow,
-                    0,
-                    m_pModel->getColumnCount()
+                    -1,
+                    -1
                 ) ),
                 Any()
             );

Reply via email to