winaccessibility/source/service/AccObject.cxx |  163 +++++++++-----------------
 1 file changed, 58 insertions(+), 105 deletions(-)

New commits:
commit 0e6f683de6301ace4582901367ea10cb6bc143bc
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Mon Sep 30 13:49:13 2024 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Mon Sep 30 21:40:50 2024 +0200

    wina11y: Drop "using namespace css::accessibility::AccessibleRole"
    
    Change-Id: I7c801f3101b0d4ed642cab799d44da092faa3bc7
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174279
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    Tested-by: Jenkins

diff --git a/winaccessibility/source/service/AccObject.cxx 
b/winaccessibility/source/service/AccObject.cxx
index 32d06729f309..db3abc931724 100644
--- a/winaccessibility/source/service/AccObject.cxx
+++ b/winaccessibility/source/service/AccObject.cxx
@@ -49,7 +49,6 @@
 
 using namespace com::sun::star::uno;
 using namespace com::sun::star::accessibility;
-using namespace com::sun::star::accessibility::AccessibleRole;
 
 constexpr DWORD MSAA_NO_STATE = 0x00000000;
 
@@ -366,14 +365,14 @@ void  AccObject::SetValue( Any pAny )
     OUString val;
     switch(m_accRole)
     {
-    case SPIN_BOX:
+    case AccessibleRole::SPIN_BOX:
         // 3. date editor's msaa value should be the same as spinbox
-    case DATE_EDITOR:
-    case TEXT:
-    case BLOCK_QUOTE:
-    case PARAGRAPH:
-    case HEADING:
-    case TABLE_CELL:
+    case AccessibleRole::DATE_EDITOR:
+    case AccessibleRole::TEXT:
+    case AccessibleRole::BLOCK_QUOTE:
+    case AccessibleRole::PARAGRAPH:
+    case AccessibleRole::HEADING:
+    case AccessibleRole::TABLE_CELL:
 
         if(pRText)
         {
@@ -381,16 +380,16 @@ void  AccObject::SetValue( Any pAny )
         }
         m_pIMAcc->Put_XAccValue( o3tl::toW(val.getStr()) );
         break;
-    case TREE_ITEM:
+    case AccessibleRole::TREE_ITEM:
     //case CHECK_BOX:   //Commented by Li Xing to disable the value for 
general checkbox
-    case COMBO_BOX:
-    case NOTE:
-    case SCROLL_BAR:
+    case AccessibleRole::COMBO_BOX:
+    case AccessibleRole::NOTE:
+    case AccessibleRole::SCROLL_BAR:
         m_pIMAcc->Put_XAccValue( 
o3tl::toW(GetMAccessibleValueFromAny(pAny).getStr()) );
         break ;
     // Added by Li Xing, only the checkbox in tree should have the value.
-    case CHECK_BOX:
-        if( ( m_pParentObj !=nullptr ) && (TREE == m_pParentObj->m_accRole || 
TREE_ITEM == m_pParentObj->m_accRole ))
+    case AccessibleRole::CHECK_BOX:
+        if( ( m_pParentObj !=nullptr ) && (AccessibleRole::TREE == 
m_pParentObj->m_accRole || AccessibleRole::TREE_ITEM == m_pParentObj->m_accRole 
))
             m_pIMAcc->Put_XAccValue( 
o3tl::toW(GetMAccessibleValueFromAny(pAny).getStr()) );
         break;
     default:
@@ -486,7 +485,7 @@ DWORD AccObject::GetMSAAStateFromUNO(sal_Int64 nState)
     case AccessibleStateType::BUSY:
         return STATE_SYSTEM_BUSY;
     case AccessibleStateType::CHECKED:
-        if (m_accRole == PUSH_BUTTON || m_accRole == TOGGLE_BUTTON)
+        if (m_accRole == AccessibleRole::PUSH_BUTTON || m_accRole == 
AccessibleRole::TOGGLE_BUTTON)
             return STATE_SYSTEM_PRESSED;
         return STATE_SYSTEM_CHECKED;
     case AccessibleStateType::DEFUNC:
@@ -506,18 +505,20 @@ DWORD AccObject::GetMSAAStateFromUNO(sal_Int64 nState)
     case AccessibleStateType::RESIZABLE:
         return STATE_SYSTEM_SIZEABLE;
     case AccessibleStateType::SELECTABLE:
-        if (m_accRole == MENU || m_accRole == MENU_ITEM)
+        if (m_accRole == AccessibleRole::MENU || m_accRole == 
AccessibleRole::MENU_ITEM)
             return MSAA_NO_STATE;
         return STATE_SYSTEM_SELECTABLE;
     case AccessibleStateType::SELECTED:
-        if (m_accRole == MENU || m_accRole == MENU_ITEM)
+        if (m_accRole == AccessibleRole::MENU || m_accRole == 
AccessibleRole::MENU_ITEM)
             return MSAA_NO_STATE;
         return STATE_SYSTEM_SELECTED;
     case AccessibleStateType::ARMED:
         return STATE_SYSTEM_FOCUSED;
     case AccessibleStateType::EXPANDABLE:
         {
-            if (m_accRole == PUSH_BUTTON || m_accRole == TOGGLE_BUTTON  || 
m_accRole == BUTTON_DROPDOWN)
+            if (m_accRole == AccessibleRole::PUSH_BUTTON
+                || m_accRole == AccessibleRole::TOGGLE_BUTTON
+                || m_accRole == AccessibleRole::BUTTON_DROPDOWN)
                 return STATE_SYSTEM_HASPOPUP;
 
             if (!(m_xAccContextRef->getAccessibleStateSet() & 
AccessibleStateType::EXPANDED))
@@ -554,13 +555,17 @@ void  AccObject::DecreaseState( sal_Int64 xState )
 {
     if (xState == AccessibleStateType::FOCUSABLE)
     {
-        if (m_accRole == MENU_ITEM || m_accRole == RADIO_MENU_ITEM || 
m_accRole == CHECK_MENU_ITEM)
+        if (m_accRole == AccessibleRole::MENU_ITEM || m_accRole == 
AccessibleRole::RADIO_MENU_ITEM
+            || m_accRole == AccessibleRole::CHECK_MENU_ITEM)
             return;
         else
         {
-            if (m_accRole == TOGGLE_BUTTON || m_accRole == PUSH_BUTTON || 
m_accRole == BUTTON_DROPDOWN)
+            if (m_accRole == AccessibleRole::TOGGLE_BUTTON
+                || m_accRole == AccessibleRole::PUSH_BUTTON
+                || m_accRole == AccessibleRole::BUTTON_DROPDOWN)
             {
-                if( ( m_pParentObj !=nullptr ) && (TOOL_BAR == 
m_pParentObj->m_accRole ) )
+                if ((m_pParentObj != nullptr)
+                    && (AccessibleRole::TOOL_BAR == m_pParentObj->m_accRole))
                     return;
             }
         }
@@ -639,7 +644,7 @@ void AccObject::UpdateState()
 
     m_pIMAcc->SetState(0);
 
-    if ( m_accRole == POPUP_MENU )
+    if (m_accRole == AccessibleRole::POPUP_MENU)
     {
         return;
     }
@@ -668,7 +673,9 @@ void AccObject::UpdateState()
         IncreaseState(nState);
     }
 
-    bool bIsMenuItem = m_accRole == MENU_ITEM || m_accRole == RADIO_MENU_ITEM 
|| m_accRole == CHECK_MENU_ITEM;
+    bool bIsMenuItem = m_accRole == AccessibleRole::MENU_ITEM
+                       || m_accRole == AccessibleRole::RADIO_MENU_ITEM
+                       || m_accRole == AccessibleRole::CHECK_MENU_ITEM;
 
     if(bIsMenuItem)
     {
@@ -685,31 +692,31 @@ void AccObject::UpdateState()
 
     switch(m_accRole)
     {
-    case LABEL:
-    case STATIC:
-    case NOTIFICATION:
-    case TEXT:
+    case AccessibleRole::LABEL:
+    case AccessibleRole::STATIC:
+    case AccessibleRole::NOTIFICATION:
+    case AccessibleRole::TEXT:
         // 2. editable combobox -> readonly ------ bridge
-    case EMBEDDED_OBJECT:
-    case END_NOTE:
-    case FOOTER:
-    case FOOTNOTE:
-    case GRAPHIC:
-    case HEADER:
-    case HEADING:
+    case AccessibleRole::EMBEDDED_OBJECT:
+    case AccessibleRole::END_NOTE:
+    case AccessibleRole::FOOTER:
+    case AccessibleRole::FOOTNOTE:
+    case AccessibleRole::GRAPHIC:
+    case AccessibleRole::HEADER:
+    case AccessibleRole::HEADING:
 
         //Image Map
-    case BLOCK_QUOTE:
-    case PARAGRAPH:
-    case PASSWORD_TEXT:
-    case SHAPE:
-    case SPIN_BOX:
-    case TABLE:
-    case TABLE_CELL:
-    case TEXT_FRAME:
-    case DATE_EDITOR:
-    case DOCUMENT:
-    case COLUMN_HEADER:
+    case AccessibleRole::BLOCK_QUOTE:
+    case AccessibleRole::PARAGRAPH:
+    case AccessibleRole::PASSWORD_TEXT:
+    case AccessibleRole::SHAPE:
+    case AccessibleRole::SPIN_BOX:
+    case AccessibleRole::TABLE:
+    case AccessibleRole::TABLE_CELL:
+    case AccessibleRole::TEXT_FRAME:
+    case AccessibleRole::DATE_EDITOR:
+    case AccessibleRole::DOCUMENT:
+    case AccessibleRole::COLUMN_HEADER:
         {
             if(!isEditable)
                 m_pIMAcc->IncreaseState( STATE_SYSTEM_READONLY );
@@ -727,12 +734,12 @@ void AccObject::UpdateState()
 
     switch(m_accRole)
     {
-    case POPUP_MENU:
-    case MENU:
+    case AccessibleRole::POPUP_MENU:
+    case AccessibleRole::MENU:
         if( pContext->getAccessibleChildCount() > 0 )
             m_pIMAcc->IncreaseState( STATE_SYSTEM_HASPOPUP );
         break;
-    case PASSWORD_TEXT:
+    case AccessibleRole::PASSWORD_TEXT:
         m_pIMAcc->IncreaseState( STATE_SYSTEM_PROTECTED );
         break;
     default:
commit a241661862ef35774f560e4068a895dcaa6f2113
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Mon Sep 30 13:37:14 2024 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Mon Sep 30 21:40:43 2024 +0200

    wina11y: Bridge focusable state as is
    
    Drop all the special-casing of particular (parent) roles
    etc. when considering whether or not to set the focusable
    state.
    Instead, fully rely on the AccessibleStateType::FOCUSABLE
    state as reported by the underlying XAccessibleContext
    and report the IAccessible/MSAA STATE_SYSTEM_FOCUSABLE
    state whenever the former is set.
    
    I tend to think that if this this change results in
    unexpected behavior, it is likely that issues should best
    be fixed in the underlying XAccessibleContext
    implementations rather than worked around in the Windows
    a11y bridge.
    
    Change-Id: I6e2eee3a9cbe779de3b3d349f23efc6a68a8344b
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174278
    Tested-by: Jenkins
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>

diff --git a/winaccessibility/source/service/AccObject.cxx 
b/winaccessibility/source/service/AccObject.cxx
index acc8cfae053d..32d06729f309 100644
--- a/winaccessibility/source/service/AccObject.cxx
+++ b/winaccessibility/source/service/AccObject.cxx
@@ -675,7 +675,6 @@ void AccObject::UpdateState()
         if(!(isShowing && isVisible) )
         {
             m_pIMAcc->IncreaseState( STATE_SYSTEM_INVISIBLE );
-            m_pIMAcc->DecreaseState( STATE_SYSTEM_FOCUSABLE );
         }
     }
     else
@@ -720,62 +719,11 @@ void AccObject::UpdateState()
         break;
     }
 
-    if( isEnable )
-    {
-
-        if (!(m_accRole == FILLER || m_accRole == END_NOTE || m_accRole == 
FOOTER || m_accRole == FOOTNOTE || m_accRole == GROUP_BOX || m_accRole == RULER
-                || m_accRole == HEADER || m_accRole == ICON || m_accRole == 
INTERNAL_FRAME || m_accRole == LABEL || m_accRole == LAYERED_PANE
-                || m_accRole == SCROLL_BAR || m_accRole == SCROLL_PANE || 
m_accRole == SPLIT_PANE || m_accRole == STATIC || m_accRole == STATUS_BAR
-                || m_accRole == TOOL_TIP || m_accRole == NOTIFICATION))
-        {
-            if (m_accRole == SEPARATOR)
-            {
-                if( ( m_pParentObj != nullptr ) && ( MENU == 
m_pParentObj->m_accRole  || POPUP_MENU == m_pParentObj->m_accRole ))
-                    IncreaseState(AccessibleStateType::FOCUSABLE);
-            }
+    if (isFocusable)
+        IncreaseState(STATE_SYSTEM_FOCUSABLE);
 
-            else if (m_accRole == TABLE_CELL || m_accRole == TABLE || 
m_accRole == PANEL || m_accRole == OPTION_PANE ||
-                     m_accRole == COLUMN_HEADER)
-            {
-                if (isFocusable)
-                    IncreaseState(AccessibleStateType::FOCUSABLE);
-            }
-            else
-            {
-                if(bIsMenuItem)
-                {
-                    if ( isShowing && isVisible)
-                        IncreaseState(AccessibleStateType::FOCUSABLE);
-                }
-                else
-                {
-                    IncreaseState(AccessibleStateType::FOCUSABLE);
-                }
-            }
-        }
-    }
-    else
-    {
+    if (!isEnable)
         m_pIMAcc->IncreaseState( STATE_SYSTEM_UNAVAILABLE );
-        if( !((m_accRole == MENU_ITEM) ||
-                (m_accRole == RADIO_MENU_ITEM) ||
-                (m_accRole == CHECK_MENU_ITEM)) )
-        {
-            if  (m_accRole == TOGGLE_BUTTON || m_accRole == PUSH_BUTTON || 
m_accRole == BUTTON_DROPDOWN)
-            {
-                if(( m_pParentObj != nullptr )&& (TOOL_BAR ==  
m_pParentObj->m_accRole ) )
-                    IncreaseState(AccessibleStateType::FOCUSABLE);
-                else
-                    DecreaseState(AccessibleStateType::FOCUSABLE);
-            }
-            else
-                DecreaseState(AccessibleStateType::FOCUSABLE);
-        }
-        else if( isShowing || isVisible )
-        {
-            IncreaseState(AccessibleStateType::FOCUSABLE);
-        }
-    }
 
     switch(m_accRole)
     {
commit 3d0230b918d0d18a2e1562dd23d5afbbc8bac128
Author:     Michael Weghorn <m.wegh...@posteo.de>
AuthorDate: Mon Sep 30 13:15:19 2024 +0100
Commit:     Michael Weghorn <m.wegh...@posteo.de>
CommitDate: Mon Sep 30 21:40:35 2024 +0200

    wina11y: Unify handling for editable/readonly state a bit
    
    The LABEL, STATIC and NOTIFICATION roles are
    used for readonly text, so if the EDITABLE state were
    ever set on these, that should be fixed in the underlying
    XAccessibleContext implementation instead of special
    handling to always set the readonly state in the
    Windows a11y bridge. Therefore, rely on the
    EDITABLE state not being set for these in order to
    report the IAccessible/MSAA STATE_SYSTEM_READONLY
    like for the other roles handled here.
    
    Change-Id: Ie8398ad0186d57ebf92701ab3a2c0603b50f5a2e
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/174277
    Reviewed-by: Michael Weghorn <m.wegh...@posteo.de>
    Tested-by: Jenkins

diff --git a/winaccessibility/source/service/AccObject.cxx 
b/winaccessibility/source/service/AccObject.cxx
index 2cc9f7308a50..acc8cfae053d 100644
--- a/winaccessibility/source/service/AccObject.cxx
+++ b/winaccessibility/source/service/AccObject.cxx
@@ -689,8 +689,6 @@ void AccObject::UpdateState()
     case LABEL:
     case STATIC:
     case NOTIFICATION:
-        m_pIMAcc->IncreaseState( STATE_SYSTEM_READONLY );
-        break;
     case TEXT:
         // 2. editable combobox -> readonly ------ bridge
     case EMBEDDED_OBJECT:

Reply via email to