38#include <rtl/ustrbuf.hxx>
45#include <com/sun/star/accessibility/XAccessibleText.hpp>
46#include <com/sun/star/accessibility/XAccessibleEditableText.hpp>
47#include <com/sun/star/accessibility/XAccessibleImage.hpp>
48#include <com/sun/star/accessibility/XAccessibleTable.hpp>
49#include <com/sun/star/accessibility/XAccessibleExtendedComponent.hpp>
50#include <com/sun/star/accessibility/XAccessibleAction.hpp>
51#include <com/sun/star/accessibility/XAccessibleKeyBinding.hpp>
52#include <com/sun/star/accessibility/XAccessibleHypertext.hpp>
53#include <com/sun/star/accessibility/XAccessibleHyperlink.hpp>
54#include <com/sun/star/accessibility/XAccessibleRelationSet.hpp>
55#include <com/sun/star/accessibility/AccessibleStateType.hpp>
56#include <com/sun/star/accessibility/AccessibleRole.hpp>
57#include <com/sun/star/accessibility/XAccessibleGroupPosition.hpp>
58#include <com/sun/star/accessibility/XAccessibleValue.hpp>
59#include <com/sun/star/accessibility/XAccessibleExtendedAttributes.hpp>
60#include <com/sun/star/style/LineSpacing.hpp>
61#include <com/sun/star/style/TabStop.hpp>
62#include <com/sun/star/container/XIndexReplace.hpp>
67using namespace com::sun::star::accessibility::AccessibleStateType;
71enum class XInterfaceType {
88template <
class Interface>
89bool queryXInterface(XAccessible* pXAcc,
XInterface** ppXI)
110bool queryTableCell(XAccessible* pXAcc,
XInterface** ppXI)
114 const bool bSupportsInterface = queryXInterface<XAccessibleComponent>(pXAcc, &pXInterface);
115 if (!bSupportsInterface)
121 const bool bParentIsTable = queryXInterface<XAccessibleTable>(xParentAcc.get(), &pParentXInterface);
178using namespace com::sun::star::accessibility::AccessibleRole;
186m_pszActionDescription(nullptr),
205 SysFreeString(std::exchange(
m_pszName,
nullptr));
209 SysFreeString(std::exchange(
m_pszValue,
nullptr));
241 if(ppdispParent ==
nullptr)
249 (*ppdispParent)->AddRef();
254 HRESULT
hr = AccessibleObjectFromWindow(
m_hwnd, OBJID_WINDOW, IID_IAccessible,
reinterpret_cast<void**
>(ppdispParent));
255 if (!SUCCEEDED(
hr) || !*ppdispParent)
263 }
catch(...) {
return E_FAIL; }
278 if(pcountChildren ==
nullptr)
290 sal_Int64 nChildCount = pRContext->getAccessibleChildCount();
291 if (nChildCount > std::numeric_limits<long>::max())
293 SAL_WARN(
"iacc2",
"CMAccessible::get_accChildCount: Child count exceeds maximum long value, "
294 "returning max long.");
295 nChildCount = std::numeric_limits<long>::max();
298 *pcountChildren = nChildCount;
303 }
catch(...) {
return E_FAIL; }
320 if(ppdispChild ==
nullptr)
324 if(varChild.vt==
VT_I4)
327 if(varChild.lVal==CHILDID_SELF)
334 if((*ppdispChild) ==
nullptr)
336 (*ppdispChild)->AddRef();
341 }
catch(...) {
return E_FAIL; }
358 if(pszName ==
nullptr)
362 if(varChild.vt==
VT_I4)
364 if(varChild.lVal==CHILDID_SELF)
366 SysFreeString(*pszName);
371 long lVal = varChild.lVal;
372 varChild.lVal = CHILDID_SELF;
376 return pChild->get_accName(varChild,pszName);
380 }
catch(...) {
return E_FAIL; }
397 if( pszValue ==
nullptr )
401 if( varChild.vt==
VT_I4 )
403 if(varChild.lVal==CHILDID_SELF)
405 if(
m_dState & STATE_SYSTEM_PROTECTED)
406 return E_ACCESSDENIED;
411 SysFreeString(*pszValue);
416 long lVal = varChild.lVal;
417 varChild.lVal = CHILDID_SELF;
421 return pChild->get_accValue(varChild,pszValue);
425 }
catch(...) {
return E_FAIL; }
442 if(pszDescription ==
nullptr)
446 if(varChild.vt==
VT_I4)
448 if(varChild.lVal==CHILDID_SELF)
457 const OUString sDescription = xContext->getAccessibleDescription();
458 SysFreeString(*pszDescription);
459 *pszDescription = SysAllocString(o3tl::toW(sDescription.getStr()));
463 long lVal = varChild.lVal;
464 varChild.lVal = CHILDID_SELF;
468 return pChild->get_accDescription(varChild,pszDescription);
472 }
catch(...) {
return E_FAIL; }
489 if(pvarRole ==
nullptr)
493 if(varChild.vt ==
VT_I4)
496 if(varChild.lVal == CHILDID_SELF)
498 VariantInit(pvarRole);
499 pvarRole->vt =
VT_I4;
504 pvarRole->lVal = ROLE_SYSTEM_CLIENT;
510 long lVal = varChild.lVal;
511 varChild.lVal = CHILDID_SELF;
515 return pChild->get_accRole(varChild,pvarRole);
519 }
catch(...) {
return E_FAIL; }
536 if(pvarState ==
nullptr)
540 if(varChild.vt==
VT_I4)
542 if(varChild.lVal == CHILDID_SELF)
554 if( pRHypertext->getHyperLinkCount() > 0 )
564 VariantInit(pvarState);
565 pvarState->vt =
VT_I4;
570 long lVal = varChild.lVal;
571 varChild.lVal = CHILDID_SELF;
575 return pChild->get_accState(varChild,pvarState);
579 }
catch(...) {
return E_FAIL; }
610 for (sal_Int32
i = 0;;
i += 2) {
612 if (
i == -1 ||
i ==
aStr.getLength() - 1) {
615 auto c =
aStr[
i + 1];
638 if(pszKeyboardShortcut ==
nullptr)
643 if(varChild.vt==
VT_I4)
645 if(varChild.lVal == CHILDID_SELF)
651 if( !pRContext.is() )
658 if( pRXI.is() && pRXI->getAccessibleActionCount() >= 1)
663 long nCount = binding->getAccessibleKeyBindingCount();
670 if(wString.isEmpty())
673 if(!pRrelationSet.is())
678 long nRelCount = pRrelationSet->getRelationCount();
681 if(
m_iRole == ROLE_SYSTEM_TEXT )
683 VARIANT varParentRole;
684 VariantInit( &varParentRole );
687 && SUCCEEDED(
m_pIParent->get_accRole(varChild, &varParentRole))
688 && varParentRole.lVal == ROLE_SYSTEM_COMBOBOX)
690 m_pIParent->get_accKeyboardShortcut(varChild, pszKeyboardShortcut);
695 AccessibleRelation *paccRelation =
nullptr;
696 AccessibleRelation accRelation;
697 for(
int i=0;
i<nRelCount ;
i++)
699 if( pRrelationSet->getRelation(
i).RelationType == 6 )
701 accRelation = pRrelationSet->getRelation(
i);
702 paccRelation = &accRelation;
706 if(paccRelation ==
nullptr)
712 XAccessible* pXAcc =
static_cast<XAccessible*
>(pRAcc.get());
715 if(!pRLebelContext.is())
718 pRrelationSet = pRLebelContext->getAccessibleRelationSet();
719 nRelCount = pRrelationSet->getRelationCount();
721 paccRelation =
nullptr;
722 for(
int j=0; j<nRelCount ; j++)
724 if( pRrelationSet->getRelation(j).RelationType == 5 )
726 accRelation = pRrelationSet->getRelation(j);
727 paccRelation = &accRelation;
733 xTargets = paccRelation->TargetSet;
735 if (
m_xAccessible.get() !=
static_cast<XAccessible*
>(pRAcc.get()))
743 OUString ouStr = pRXIE->getTitledBorderText();
747 wString =
"Alt+" + OUStringChar(key);
753 SysFreeString(*pszKeyboardShortcut);
754 *pszKeyboardShortcut = SysAllocString(o3tl::toW(wString.getStr()));
764 long lVal = varChild.lVal;
765 varChild.lVal = CHILDID_SELF;
770 return pChild->get_accKeyboardShortcut(varChild,pszKeyboardShortcut);
774 }
catch(...) {
return E_FAIL; }
790 if(pvarChild ==
nullptr)
804 if (pIMAcc ==
nullptr)
809 pvarChild->vt = VT_DISPATCH;
810 pvarChild->pdispVal = pIMAcc;
815 }
catch(...) {
return E_FAIL; }
833 if(pvarChildren ==
nullptr)
845 VariantInit(&varTmp[0]);
849 pvarChildren->vt = VT_DISPATCH;
850 pvarChildren->pdispVal = varTmp[0].pdispVal;
851 pvarChildren->pdispVal->AddRef();
852 VariantClear(&varTmp[0]);
856 pvarChildren->vt = VT_UNKNOWN;
857 IEnumVARIANT* pClone;
860 pvarChildren->punkVal = pClone;
865 }
catch(...) {
return E_FAIL; }
878COM_DECLSPEC_NOTHROW STDMETHODIMP
CMAccessible::accLocation(
long *pxLeft,
long *pyTop,
long *pcxWidth,
long *pcyHeight, VARIANT varChild)
885 if(pxLeft ==
nullptr || pyTop ==
nullptr || pcxWidth ==
nullptr || pcyHeight ==
nullptr)
890 if(varChild.vt==
VT_I4)
892 if(varChild.lVal==CHILDID_SELF)
899 if( !pRContext.is() )
902 if( !pRComponent.is() )
905 css::awt::Point pCPoint = pRComponent->getLocationOnScreen();
906 css::awt::Size pCSize = pRComponent->getSize();
909 *pcxWidth = pCSize.Width;
910 *pcyHeight = pCSize.Height;
916 }
catch(...) {
return E_FAIL; }
933 if(pvarEndUpAt ==
nullptr)
937 HRESULT ret = E_FAIL;
940 case NAVDIR_FIRSTCHILD:
943 case NAVDIR_LASTCHILD:
949 case NAVDIR_PREVIOUS:
965 }
catch(...) {
return E_FAIL; }
975 if(pvarChild ==
nullptr)
981 VariantInit(&varSelf);
983 varSelf.lVal = CHILDID_SELF;
985 if( (
x < xLeft && (
x +
w) >xLeft) && (
y < yTop && (
y +
h) >yTop) )
990 nCount = pRContext->getAccessibleChildCount();
998 if(child && child->accHitTest(xLeft,yTop,pvarChild) == S_OK)
1002 if(pvarChild->vt == VT_DISPATCH)
1007 pvarChild->vt = VT_DISPATCH;
1008 pvarChild->pdispVal = child;
1013 pvarChild->vt =
VT_I4;
1014 pvarChild->lVal = CHILDID_SELF;
1020 }
catch(...) {
return E_FAIL; }
1031 if( InlineIsEqualGUID(guidService, IID_IAccessible) )
1032 return QueryInterface(riid, ppvObject);
1058 if(varChild.vt==
VT_I4)
1060 if(varChild.lVal==CHILDID_SELF)
1067 long lVal = varChild.lVal;
1068 varChild.lVal = CHILDID_SELF;
1072 return pChild->put_accValue(varChild,szValue);
1076 }
catch(...) {
return E_FAIL; }
1091 if(pszName ==
nullptr)
1093 return E_INVALIDARG;
1102 }
catch(...) {
return E_FAIL; }
1169 if(pszAccValue ==
nullptr)
1171 return E_INVALIDARG;
1179 }
catch(...) {
return E_FAIL; }
1197 }
catch(...) {
return E_FAIL; }
1212 if(dChildID==CHILDID_SELF)
1231 }
catch(...) {
return E_FAIL; }
1321 if( !pRContext.is() )
1324 if(dChildID<1 || dChildID>pRContext->getAccessibleChildCount())
1327 IAccessible* pChild =
nullptr;
1357 if(pXContext==
nullptr)
1362 sal_Int64
count = pXContext->getAccessibleChildCount();
1370 XAccessible* pChildXAcc;
1374 XAccessibleContext* pChildContext =
nullptr;
1375 sal_Int64
index = 0, delta = 0;
1379 pRChildXAcc = pXContext->getAccessibleChild(0);
1382 pRChildXAcc = pXContext->getAccessibleChild(
count-1);
1387 if(pCurChild==
nullptr)
1392 if(pChildXAcc==
nullptr)
1397 if(pChildContext ==
nullptr)
1405 index = pChildContext->getAccessibleIndexInParent()+delta;
1408 pRChildXAcc = pXContext->getAccessibleChild(
index);
1415 if(!pRChildXAcc.is())
1419 pChildXAcc = pRChildXAcc.get();
1441 if(pvarEndUpAt ==
nullptr)
1443 return E_INVALIDARG;
1445 if(varStart.vt !=
VT_I4)
1448 return E_INVALIDARG;
1452 if(pvarEndUpAt->pdispVal)
1454 pvarEndUpAt->pdispVal->AddRef();
1455 pvarEndUpAt->vt = VT_DISPATCH;
1462 }
catch(...) {
return E_FAIL; }
1478 if(pvarEndUpAt ==
nullptr)
1480 return E_INVALIDARG;
1482 if(varStart.vt !=
VT_I4)
1485 return E_INVALIDARG;
1489 if(pvarEndUpAt->pdispVal)
1491 pvarEndUpAt->pdispVal->AddRef();
1492 pvarEndUpAt->vt = VT_DISPATCH;
1498 }
catch(...) {
return E_FAIL; }
1513 if(varStart.vt !=
VT_I4)
1516 return E_INVALIDARG;
1523 varStart.iVal = sal_Int16(pRContext->getAccessibleIndexInParent() + 2);
1525 if(
m_pIParent->get_accChild(varStart,&pvarEndUpAt->pdispVal) == S_OK)
1527 pvarEndUpAt->vt = VT_DISPATCH;
1534 }
catch(...) {
return E_FAIL; }
1549 if(pvarEndUpAt ==
nullptr)
1551 return E_INVALIDARG;
1553 if(varStart.vt !=
VT_I4)
1556 return E_INVALIDARG;
1563 varStart.iVal = sal_Int16(pRContext->getAccessibleIndexInParent());
1565 if(
m_pIParent->get_accChild(varStart,&pvarEndUpAt->pdispVal) == S_OK)
1567 pvarEndUpAt->vt = VT_DISPATCH;
1574 }
catch(...) {
return E_FAIL; }
1588 if(nRelations ==
nullptr)
1590 return E_INVALIDARG;
1599 if(!pRrelationSet.is())
1605 *nRelations = pRrelationSet->getRelationCount();
1608 }
catch(...) {
return E_FAIL; }
1618 if(relation ==
nullptr)
1620 return E_INVALIDARG;
1633 if(*relation ==
nullptr)
1638 if( relationIndex < nMax )
1642 if(!pRrelationSet.is())
1649 HRESULT
hr = createInstance<CAccRelation>(IID_IAccessibleRelation,
1654 hr = pRelation->QueryInterface(IID_IUNOXWrapper,
reinterpret_cast<void**
>(&wrapper));
1657 AccessibleRelation accRelation = pRrelationSet->getRelation(relationIndex);
1659 reinterpret_cast<hyper
>(&accRelation));
1661 *relation = pRelation;
1670 }
catch(...) {
return E_FAIL; }
1681 if(relation ==
nullptr || nRelations ==
nullptr)
1683 return E_INVALIDARG;
1692 if(!pRrelationSet.is())
1698 long nCount = pRrelationSet->getRelationCount();
1703 if(*relation ==
nullptr)
1711 HRESULT
hr = createInstance<CAccRelation>(IID_IAccessibleRelation,
1716 hr = pRelation->QueryInterface(IID_IUNOXWrapper,
reinterpret_cast<void**
>(&wrapper));
1719 AccessibleRelation accRelation = pRrelationSet->getRelation(
i);
1721 reinterpret_cast<hyper
>(&accRelation));
1724 relation[
i] = pRelation;
1731 }
catch(...) {
return E_FAIL; }
1744 }
catch(...) {
return E_FAIL; }
1756 if(nActions ==
nullptr)
1758 return E_INVALIDARG;
1762 HRESULT
hr = QueryInterface(IID_IAccessibleAction,
reinterpret_cast<void**
>(&pAcc));
1792 if(pXAcc ==
nullptr)
1798 sal_Int32 nRelations = pRrelationSet->getRelationCount();
1799 for(sal_Int32
i=0 ;
i<nRelations ;
i++)
1801 AccessibleRelation accRelation = pRrelationSet->getRelation(
i);
1802 if(accRelation.RelationType == 7)
1805 return static_cast<XAccessible*
>(xTargets[0].get());
1818 if(groupLevel ==
nullptr || similarItemsInGroup ==
nullptr || positionInGroup ==
nullptr)
1820 return E_INVALIDARG;
1830 long Role = pRContext->getAccessibleRole();
1833 *similarItemsInGroup = 0;
1834 *positionInGroup = 0;
1836 if (Role != AccessibleRole::DOCUMENT && Role != AccessibleRole::DOCUMENT_PRESENTATION &&
1837 Role != AccessibleRole::DOCUMENT_SPREADSHEET && Role != AccessibleRole::DOCUMENT_TEXT)
1840 if ( xGroupPosition.is() )
1843 if (rSeq.getLength() >= 3)
1845 *groupLevel = rSeq[0];
1846 *similarItemsInGroup = rSeq[1];
1847 *positionInGroup = rSeq[2];
1855 if( !pParentAcc.is() )
1862 if( Role == RADIO_BUTTON )
1867 long nRel = pRrelationSet->getRelationCount();
1868 for(
int i=0 ;
i<nRel ;
i++)
1870 AccessibleRelation accRelation = pRrelationSet->getRelation(
i);
1871 if(accRelation.RelationType == 7)
1876 sal_Int64 nChildCount = pRParentContext->getAccessibleChildCount();
1877 assert(nChildCount < std::numeric_limits<long>::max());
1878 for (sal_Int64 j = 0; j< nChildCount; j++)
1881 ==
static_cast<XAccessible*
>(pRAcc.get()) &&
1882 pRParentContext->getAccessibleChild(j)->getAccessibleContext()->getAccessibleRole() == RADIO_BUTTON)
1884 if (pRParentContext->getAccessibleChild(j).get() ==
m_xAccessible.get())
1890 *similarItemsInGroup = number;
1891 *positionInGroup =
index;
1898 *similarItemsInGroup = 0;
1899 *positionInGroup = -1;
1901 if (pRContext->getAccessibleChildCount() != 2)
1911 if (!xListContext.is())
1920 sal_Int64 nChildCount = xListContext->getAccessibleChildCount();
1921 assert(nChildCount < std::numeric_limits<long>::max());
1922 *similarItemsInGroup = nChildCount;
1923 if (*similarItemsInGroup > 0 )
1931 if (xChildContext.is())
1933 *positionInGroup=xChildContext->getAccessibleIndexInParent() + 1 ;
1943 else if ( PAGE_TAB == Role )
1946 sal_Int64 nChildCount = pRParentContext->getAccessibleChildCount();
1947 assert(nChildCount < std::numeric_limits<long>::max());
1948 *similarItemsInGroup = nChildCount;
1949 if (*similarItemsInGroup > 0 )
1951 *positionInGroup=pRContext->getAccessibleIndexInParent() + 1 ;
1955 *positionInGroup = -1;
1961 bool isFound =
false;
1962 while( pParentAcc.is() && !isFound)
1965 pRParentContext = pParentAcc->getAccessibleContext();
1966 Role = pRParentContext->getAccessibleRole();
1967 if( (Role == TREE) || (Role ==
LIST) )
1969 pParentAcc = pRParentContext->getAccessibleParent();
1975 pRParentContext = pTempAcc->getAccessibleContext();
1976 *groupLevel = level;
1977 sal_Int64 nChildCount = pRParentContext->getAccessibleChildCount();
1978 assert(nChildCount < std::numeric_limits<long>::max());
1979 *similarItemsInGroup = nChildCount;
1980 *positionInGroup = pRContext->getAccessibleIndexInParent() + 1;
1985 *similarItemsInGroup = 0;
1986 *positionInGroup = 0;
1990 }
catch(...) {
return E_FAIL; }
2006 if(uniqueID ==
nullptr)
2008 return E_INVALIDARG;
2013 }
catch(...) {
return E_FAIL; }
2023 if(windowHandle ==
nullptr)
2025 return E_INVALIDARG;
2030 while((nHwnd==
nullptr) && pParent)
2034 pParent = pChild->m_pIParent;
2035 nHwnd = pChild->m_hwnd;
2041 *windowHandle = nHwnd;
2044 }
catch(...) {
return E_FAIL; }
2055 if( pXAcc ==
nullptr)
2058 pRContext = pXAcc->getAccessibleContext();
2059 if( !pRContext.is() )
2061 return pRContext.get();
2098 if( (flagsSelect&SELFLAG_ADDSELECTION) &&
2099 (SELFLAG_REMOVESELECTION&flagsSelect) )
2100 return E_INVALIDARG;
2102 if ( (flagsSelect&SELFLAG_TAKESELECTION) &&
2104 (flagsSelect&SELFLAG_ADDSELECTION) ||
2105 (flagsSelect&SELFLAG_REMOVESELECTION) ||
2106 (flagsSelect&SELFLAG_EXTENDSELECTION )
2109 return E_INVALIDARG;
2111 if ( varChild.vt !=
VT_I4 )
2112 return E_INVALIDARG;
2115 if( varChild.lVal == CHILDID_SELF )
2118 pSelectAcc->AddRef();
2125 if( pSelectAcc ==
nullptr )
2126 return E_INVALIDARG;
2128 if( flagsSelect&SELFLAG_TAKEFOCUS )
2131 XAccessible* pTempUNO;
2136 if( pTempUNO ==
nullptr )
2147 pRComponent->grabFocus();
2149 if( flagsSelect & SELFLAG_TAKESELECTION )
2151 pRParentSelection->clearAccessibleSelection();
2152 pRParentSelection->selectAccessibleChild( pRContext->getAccessibleIndexInParent() );
2155 if( flagsSelect & SELFLAG_ADDSELECTION )
2157 pRParentSelection->selectAccessibleChild( pRContext->getAccessibleIndexInParent() );
2160 if( flagsSelect & SELFLAG_REMOVESELECTION )
2162 pRParentSelection->deselectAccessibleChild( pRContext->getAccessibleIndexInParent() );
2165 if( flagsSelect & SELFLAG_EXTENDSELECTION )
2167 sal_Int64 indexInParrent = pRContext->getAccessibleIndexInParent();
2169 if( pRParentSelection->isAccessibleChildSelected( indexInParrent + 1 ) ||
2170 pRParentSelection->isAccessibleChildSelected( indexInParrent - 1 ) )
2172 pRParentSelection->selectAccessibleChild( indexInParrent );
2178 pSelectAcc->Release();
2181 }
catch(...) {
return E_FAIL; }
2193 if(pXAcc ==
nullptr)
2194 return E_INVALIDARG;
2209 m_xAction =
reinterpret_cast<XAccessibleAction*
>(pAction);
2227 if(pszDefaultAction ==
nullptr)
2229 return E_INVALIDARG;
2231 if(varChild.vt==
VT_I4)
2233 if(varChild.lVal==CHILDID_SELF)
2236 return DISP_E_MEMBERNOTFOUND;
2237 SysFreeString(*pszDefaultAction);
2242 long lVal = varChild.lVal;
2243 varChild.lVal = CHILDID_SELF;
2247 return pChild->get_accDefaultAction(varChild,pszDefaultAction);
2251 }
catch(...) {
return E_FAIL; }
2265 if( varChild.vt !=
VT_I4 )
2266 return E_INVALIDARG;
2269 if (
m_xAction->getAccessibleActionCount() == 0)
2272 if(varChild.lVal==CHILDID_SELF)
2274 if (
m_xAction->getAccessibleActionCount() > 0)
2279 long lVal = varChild.lVal;
2280 varChild.lVal = CHILDID_SELF;
2284 return pChild->accDoDefaultAction( varChild );
2286 }
catch(...) {
return E_FAIL; }
2301 if(szAction ==
nullptr)
2303 return E_INVALIDARG;
2309 }
catch(...) {
return E_FAIL; }
2316 case XInterfaceType::XI_COMPONENT:
2317 return queryXInterface<XAccessibleComponent>(pXAcc, ppXI);
2318 case XInterfaceType::XI_TEXT:
2319 return queryXInterface<XAccessibleText>(pXAcc, ppXI);
2320 case XInterfaceType::XI_EDITABLETEXT:
2321 return queryXInterface<XAccessibleEditableText>(pXAcc, ppXI);
2322 case XInterfaceType::XI_TABLE:
2323 return queryXInterface<XAccessibleTable>(pXAcc, ppXI);
2324 case XInterfaceType::XI_TABLECELL:
2326 return queryTableCell(pXAcc, ppXI);
2327 case XInterfaceType::XI_SELECTION:
2328 return queryXInterface<XAccessibleSelection>(pXAcc, ppXI);
2329 case XInterfaceType::XI_EXTENDEDCOMP:
2330 return queryXInterface<XAccessibleExtendedComponent>(pXAcc, ppXI);
2331 case XInterfaceType::XI_KEYBINDING:
2332 return queryXInterface<XAccessibleKeyBinding>(pXAcc, ppXI);
2333 case XInterfaceType::XI_ACTION:
2334 return queryXInterface<XAccessibleAction>(pXAcc, ppXI);
2335 case XInterfaceType::XI_VALUE:
2336 return queryXInterface<XAccessibleValue>(pXAcc, ppXI);
2337 case XInterfaceType::XI_HYPERTEXT:
2338 return queryXInterface<XAccessibleHypertext>(pXAcc, ppXI);
2339 case XInterfaceType::XI_HYPERLINK:
2340 return queryXInterface<XAccessibleHyperlink>(pXAcc, ppXI);
2341 case XInterfaceType::XI_IMAGE:
2342 return queryXInterface<XAccessibleImage>(pXAcc, ppXI);
2348template<
typename T>
static HRESULT
2356 return CComCreator< CComAggObject<T> >::CreateInstance(
2357 rOuter.GetControllingUnknown(), IID_IUnknown, ppvObject);
2368 const XInterfaceType eXInterfaceType;
2374 { &IID_IAccessibleComponent, &createAggInstance<CAccComponent>, XInterfaceType::XI_COMPONENT },
2375 { &IID_IAccessibleText, &createAggInstance<CAccText>, XInterfaceType::XI_TEXT },
2376 { &IID_IAccessibleEditableText, &createAggInstance<CAccEditableText>, XInterfaceType::XI_EDITABLETEXT },
2377 { &IID_IAccessibleImage, &createAggInstance<CAccImage>, XInterfaceType::XI_IMAGE },
2378 { &IID_IAccessibleTable, &createAggInstance<CAccTable>, XInterfaceType::XI_TABLE },
2379 { &IID_IAccessibleTable2, &createAggInstance<CAccTable>, XInterfaceType::XI_TABLE },
2380 { &IID_IAccessibleTableCell, &createAggInstance<CAccTableCell>, XInterfaceType::XI_TABLECELL },
2381 { &IID_IAccessibleAction, &createAggInstance<CAccAction>, XInterfaceType::XI_ACTION },
2382 { &IID_IAccessibleValue, &createAggInstance<CAccValue>, XInterfaceType::XI_VALUE },
2383 { &IID_IAccessibleHypertext, &createAggInstance<CAccHypertext>, XInterfaceType::XI_HYPERTEXT },
2384 { &IID_IAccessibleHyperlink, &createAggInstance<CAccHyperLink>, XInterfaceType::XI_HYPERLINK }
2393 if (InlineIsEqualGUID(iid,IID_IAccIdentity) ||
2394 InlineIsEqualGUID(iid,IID_IStdMarshalInfo) ||
2395 InlineIsEqualGUID(iid,IID_IMarshal) ||
2396 InlineIsEqualGUID(iid,IID_IExternalConnection)||
2397 InlineIsEqualGUID(iid,IID_IOleWindow))
2404 if (InlineIsEqualGUID(iid, *rEntry.piid))
2410 &pXI, rEntry.eXInterfaceType);
2419 return pIndTemp->second.p->QueryInterface( iid, ppvObject );
2423 HRESULT
hr = rEntry.pfnCreateInstance(*
this, ppvObject);
2429 static_cast<IUnknown*
>(*ppvObject)->QueryInterface(IID_IUNOXWrapper,
reinterpret_cast<void**
>(&wrapper));
2444 }
catch(...) {
return E_FAIL; }
2470 switch(pAny.getValueTypeClass())
2472 case TypeClass_CHAR:
2476 return OUString::number(val);
2478 case TypeClass_BOOLEAN:
2482 return OUString::number(
int(val));
2484 case TypeClass_BYTE:
2488 return OUString::number(val);
2490 case TypeClass_SHORT:
2494 return OUString::number(val);
2496 case TypeClass_UNSIGNED_SHORT:
2500 return OUString::number(val);
2502 case TypeClass_LONG:
2506 return OUString::number(val);
2508 case TypeClass_UNSIGNED_LONG:
2512 return OUString::number(val);
2514 case TypeClass_FLOAT:
2518 return OUString::number(val);
2520 case TypeClass_DOUBLE:
2524 return OUString::number(val);
2526 case TypeClass_STRING:
2532 case TypeClass_SEQUENCE:
2539 OUStringBuffer pString;
2541 for (
const OUString& rElem : val)
2542 pString.append(rElem);
2544 return pString.makeStringAndClear();
2552 for (
const css::style::TabStop& rSingleVal : val)
2555 "Position=" + OUString::number(rSingleVal.Position) +
",TabAlign="
2556 + OUString::number(sal_Int32(rSingleVal.Alignment)) +
",DecimalChar=");
2557 if (rSingleVal.DecimalChar==
';' || rSingleVal.DecimalChar ==
':' || rSingleVal.DecimalChar ==
',' ||
2558 rSingleVal.DecimalChar ==
'=' || rSingleVal.DecimalChar ==
'\\')
2560 buf.append(OUStringChar(rSingleVal.DecimalChar) +
",FillChar=");
2561 if (rSingleVal.FillChar==
';' || rSingleVal.FillChar ==
':' || rSingleVal.FillChar ==
',' ||
2562 rSingleVal.FillChar ==
'=' || rSingleVal.FillChar ==
'\\')
2564 buf.append(OUStringChar(rSingleVal.FillChar) +
",");
2566 return buf.makeStringAndClear();
2570 case TypeClass_ENUM:
2574 css::awt::FontSlant val;
2576 return OUString::number(sal_Int32(val));
2580 case TypeClass_STRUCT:
2584 css::style::LineSpacing val;
2586 return "Mode=" + OUString::number(val.Mode) +
",Height="
2587 + OUString::number(val.Height) +
",";
2591 css::accessibility::TextSegment val;
2593 return val.SegmentText;
2597 case TypeClass_VOID:
2598 case TypeClass_HYPER:
2599 case TypeClass_UNSIGNED_HYPER:
2600 case TypeClass_TYPE:
2602 case TypeClass_TYPEDEF:
2603 case TypeClass_EXCEPTION:
2604 case TypeClass_INTERFACE:
2605 case TypeClass_SERVICE:
2606 case TypeClass_MODULE:
2607 case TypeClass_INTERFACE_METHOD:
2608 case TypeClass_INTERFACE_ATTRIBUTE:
2609 case TypeClass_UNKNOWN:
2610 case TypeClass_PROPERTY:
2611 case TypeClass_CONSTANT:
2612 case TypeClass_CONSTANTS:
2613 case TypeClass_SINGLETON:
2624 if((pAny>>=pXIndex) && (numberingLevel !=-1))
2626 Any aAny = pXIndex->getByIndex(numberingLevel);
2629 OUStringBuffer buf(
"Numbering:NumberingLevel=" + OUString::number(numberingLevel) +
",");
2630 for (
const css::beans::PropertyValue& rProp : aProps)
2632 if( (rProp.Name ==
"BulletChar" ) ||
2633 (rProp.Name ==
"NumberingType" ))
2635 buf.append(rProp.Name +
"=");
2637 buf.append(pTemp +
",");
2639 if (rProp.Name ==
"NumberingType" && !numberingPrefix.empty())
2641 buf.append(OUString::Concat(
"NumberingPrefix=") + numberingPrefix);
2645 return buf.makeStringAndClear();
2654 else if(numberingLevel >0)
2656 return "Numbering:NumberingLevel=" + OUString::number(numberingLevel-1) +
",NumberingType=4,NumberingPrefix=,";
2660 return "Numbering:";
2666 if(rAnyVal.hasValue())
2669 VariantClear(pvData);
2672 switch(rAnyVal.getValueTypeClass())
2674 case TypeClass_CHAR:
2676 memcpy(&pvData->bVal, rAnyVal.getValue(),
sizeof(
char));
2679 case TypeClass_BOOLEAN:
2681 bool bBoolean(
false);
2682 rAnyVal >>= bBoolean;
2684 pvData->boolVal = VARIANT_BOOL(bBoolean);
2687 case TypeClass_BYTE:
2689 memcpy(&pvData->bVal, rAnyVal.getValue(),
sizeof(
sal_Int8));
2692 case TypeClass_SHORT:
2694 memcpy(&pvData->iVal, rAnyVal.getValue(),
sizeof(sal_Int16));
2697 case TypeClass_UNSIGNED_SHORT:
2699 memcpy(&pvData->iVal, rAnyVal.getValue(),
sizeof(sal_uInt16));
2702 case TypeClass_LONG:
2704 memcpy(&pvData->lVal, rAnyVal.getValue(),
sizeof(sal_Int32));
2707 case TypeClass_UNSIGNED_LONG:
2709 memcpy(&pvData->lVal, rAnyVal.getValue(),
sizeof(sal_uInt32));
2712 case TypeClass_FLOAT:
2714 memcpy(&pvData->fltVal, rAnyVal.getValue(),
sizeof(
float));
2717 case TypeClass_DOUBLE:
2719 memcpy(&pvData->dblVal, rAnyVal.getValue(),
sizeof(
double));
2722 case TypeClass_STRING:
2727 pvData->bstrVal = SysAllocString(o3tl::toW(val.getStr()));
2731 case TypeClass_VOID:
2732 case TypeClass_HYPER:
2733 case TypeClass_UNSIGNED_HYPER:
2734 case TypeClass_TYPE:
2736 case TypeClass_ENUM:
2737 case TypeClass_TYPEDEF:
2738 case TypeClass_STRUCT:
2739 case TypeClass_EXCEPTION:
2740 case TypeClass_SEQUENCE:
2741 case TypeClass_INTERFACE:
2744 if(rAnyVal >>= pXAcc)
2748 IAccessible* pIAcc =
nullptr;
2750 if(pIAcc ==
nullptr)
2760 pvData->vt = VT_UNKNOWN;
2761 pvData->pdispVal = pIAcc;
2768 case TypeClass_SERVICE:
2769 case TypeClass_MODULE:
2770 case TypeClass_INTERFACE_METHOD:
2771 case TypeClass_INTERFACE_ATTRIBUTE:
2772 case TypeClass_UNKNOWN:
2773 case TypeClass_PROPERTY:
2774 case TypeClass_CONSTANT:
2775 case TypeClass_CONSTANTS:
2776 case TypeClass_SINGLETON:
2777 case TypeClass::TypeClass_MAKE_FIXED_SIZE:
2780 pvData->bstrVal = SysAllocString(o3tl::toW(rAnyVal.getValueTypeName().getStr()));
2789 VariantClear(pvData);
2803 sal_Int64
const nRStateSet =
2817 }
catch(...) {
return E_FAIL; }
2848 if(accParentIndex ==
nullptr)
2849 return E_INVALIDARG;
2855 if (
nIndex > std::numeric_limits<long>::max())
2857 SAL_WARN(
"iacc2",
"CMAccessible::get_indexInParent: Child index exceeds maximum long value, "
2858 "returning max long.");
2859 nIndex = std::numeric_limits<long>::max();
2861 *accParentIndex =
nIndex;
2865 }
catch(...) {
return E_FAIL; }
2871 if(locale ==
nullptr)
2872 return E_INVALIDARG;
2877 css::lang::Locale unoLoc =
m_xContext->getLocale();
2878 locale->language = SysAllocString(o3tl::toW(unoLoc.Language.getStr()));
2879 locale->country = SysAllocString(o3tl::toW(unoLoc.Country.getStr()));
2880 locale->variant = SysAllocString(o3tl::toW(unoLoc.Variant.getStr()));
2884 }
catch(...) {
return E_FAIL; }
2894 return E_INVALIDARG;
2897 *
name = SysAllocString(o3tl::toW(sAppName.getStr()));
2899 }
catch(...) {
return E_FAIL; }
2907 if(version ==
nullptr)
2908 return E_INVALIDARG;
2910 *version=SysAllocString(o3tl::toW(sVersion.getStr()));
2912 }
catch(...) {
return E_FAIL; }
2921 return E_INVALIDARG;
2922 *
name = SysAllocString(OLESTR(
"VCL"));
2924 }
catch(...) {
return E_FAIL; }
2943 if( !pRContext.is() )
2952 css::uno::Reference<css::accessibility::XAccessibleExtendedAttributes> pRXAttr;
2953 pRXAttr = pRXI.get();
2954 css::uno::Any anyVal = pRXAttr->getExtendedAttributes();
2960 SysFreeString(*pAttr);
2961 *pAttr = SysAllocString(o3tl::toW(val.getStr()));
2965 }
catch(...) {
return E_FAIL; }
static XAccessible * getTheParentOfMember(XAccessible *pXAcc)
HRESULT() AggCreatorFunc(CMAccessible &, void **)
sal_Int64 const UNO_STATES[]
static AggMapEntry g_CMAccessible_AggMap[]
static bool GetMnemonicChar(const OUString &aStr, sal_Unicode *wStr)
static HRESULT createAggInstance(CMAccessible &rOuter, void **ppvObject)
virtual void GetIAccessibleFromResID(long childID, IMAccessible **)
Return com object interface by querying child id.
virtual bool GetIAccessibleFromXAccessible(css::accessibility::XAccessible *pXAcc, IAccessible **ppIA)
Return object interface by querying interface.
virtual IMAccessible * GetIMAccByXAcc(css::accessibility::XAccessible *pXAcc)
Return com object interface by querying XAccessible interface.
virtual bool InsertAccObj(css::accessibility::XAccessible *pXAcc, css::accessibility::XAccessible *pParentXAcc, HWND hWnd=nullptr)
When a new UNO XAccessible object is found by listener, we create a corresponding com object and inse...
HRESULT STDMETHODCALLTYPE PutSelection(hyper pXSelection) override
Put valid UNO XAccessible interface.
HRESULT STDMETHODCALLTYPE Next(ULONG cElements, VARIANT __RPC_FAR *pvar, ULONG __RPC_FAR *pcElementFetched) override
enumerate method,get next element
HRESULT STDMETHODCALLTYPE Clone(IEnumVARIANT __RPC_FAR *__RPC_FAR *ppenum) override
create a new IEnumVariant object, copy current enumaration container and its state to the new object ...
long GetCountOfElements()
Return count of elements in current container.
static HRESULT STDMETHODCALLTYPE Create(CEnumVariant __RPC_FAR *__RPC_FAR *ppenum)
Static public method to create a CLSID_EnumVariant com object.
HRESULT STDMETHODCALLTYPE Reset(void) override
reset the enumaration position to initial value
This class implements IMAccessible interface, which inherits from IAccessible2, and in turn inherits ...
css::uno::Reference< css::accessibility::XAccessibleAction > m_xAction
STDMETHOD() role(long __RPC_FAR *role) override
STDMETHOD() get_relation(long relationIndex, IAccessibleRelation __RPC_FAR *__RPC_FAR *relation) override
STDMETHOD() get_accName(VARIANT varChild, BSTR *pszName) override
Returns the accessible name of the current COM object self or its one child to AT.
static OUString get_StringFromAny(css::uno::Any const &pAny)
CEnumVariant * m_pEnumVar
STDMETHOD() Put_XAccWindowHandle(HWND hwnd) override
Set the HWND value of the current COM object self from UNO.
STDMETHOD() get_states(AccessibleStates __RPC_FAR *states) override
static bool get_IAccessibleFromXAccessible(css::accessibility::XAccessible *pXAcc, IAccessible **ppIA)
STDMETHOD() get_accKeyboardShortcut(VARIANT varChild, BSTR *pszKeyboardShortcut) override
Returns the accessible keyboard shortcut of the current COM object self or its one child to AT.
STDMETHOD() SetState(DWORD pXSate) override
Set state into the current state set for the current COM object from UNO.
STDMETHOD() get_nRelations(long __RPC_FAR *nRelations) override
For IAccessible2 implementation methods.
STDMETHOD() get_accFocus(VARIANT *pvarChild) override
Returns the current focused child to AT.
STDMETHOD() get_appName(BSTR __RPC_FAR *name) override
STDMETHOD() get_accHelp(VARIANT varChild, BSTR *pszHelp) override
Returns the accessible helpString of the current COM object self or its one child to AT.
STDMETHOD() get_nExtendedStates(long __RPC_FAR *nExtendedStates) override
STDMETHOD() get_localizedExtendedStates(long maxLocalizedExtendedStates, BSTR __RPC_FAR *__RPC_FAR *localizedExtendedStates, long __RPC_FAR *nLocalizedExtendedStates) override
css::uno::Reference< css::accessibility::XAccessible > m_xAccessible
STDMETHOD() get_locale(IA2Locale __RPC_FAR *locale) override
HRESULT GetLastChild(VARIANT varStart, VARIANT *pvarEndUpAt)
Return last child for parent container, process differently according to whether it is descendant man...
STDMETHOD() Put_XAccChildID(long dChildID) override
Set unique child id to COM.
IMAccessible * m_pIParent
STDMETHOD() DecreaseState(DWORD pXSate) override
Add one state into the current state set for the current COM object from UNO.
HRESULT GetPreSibling(VARIANT varStart, VARIANT *pvarEndUpAt)
the method GetPreSibling is general, whatever it is descendant manage or not
STDMETHOD() get_appVersion(BSTR __RPC_FAR *version) override
STDMETHOD() scrollToPoint(enum IA2CoordinateType coordinateType, long x, long y) override
static AccObjectManagerAgent * g_pAgent
STDMETHOD() get_indexInParent(long __RPC_FAR *accParentIndex) override
STDMETHOD() put_accValue(VARIANT varChild, BSTR szValue) override
Set the accessible value of the current COM object self or its one child from UNO.
css::uno::Reference< css::accessibility::XAccessibleContext > m_xContext
STDMETHOD() get_localizedExtendedRole(BSTR __RPC_FAR *localizedExtendedRole) override
STDMETHOD() get_attributes(BSTR *pAttr) override
static void ConvertAnyToVariant(const css::uno::Any &rAnyVal, VARIANT *pvData)
STDMETHOD() get_uniqueID(long __RPC_FAR *uniqueID) override
STDMETHOD() get_accSelection(VARIANT *pvarChildren) override
Returns the selection of the current COM object to AT.
STDMETHOD() get_extendedStates(long maxExtendedStates, BSTR __RPC_FAR *__RPC_FAR *extendedStates, long __RPC_FAR *nExtendedStates) override
STDMETHOD() accLocation(long *pxLeft, long *pyTop, long *pcxWidth, long *pcyHeight, VARIANT varChild) override
Returns the location of the current COM object self or its one child to AT.
static OUString get_String4Numbering(const css::uno::Any &pAny, sal_Int16 numberingLevel, std::u16string_view numberingPrefix)
STDMETHOD() accNavigate(long navDir, VARIANT varStart, VARIANT *pvarEndUpAt) override
Returns the current focused child to AT.
STDMETHOD() get_accParent(IDispatch **ppdispParent) override
Returns the Parent IAccessible interface pointer to AT.
IMAccessible * GetChildInterface(long dChildIndex)
private methods that help implement public functions
STDMETHOD() get_windowHandle(HWND __RPC_FAR *windowHandle) override
STDMETHOD() accDoDefaultAction(VARIANT varChild) override
AT call this method to operate application.
STDMETHOD() get_nActions(long __RPC_FAR *nActions)
STDMETHOD() SetXAccessible(hyper) override
When COM is created, UNO set XAccessible pointer to it in order to COM can operate UNO information.
STDMETHOD() Put_XAccValue(const OLECHAR __RPC_FAR *pszAccValue) override
Set the accessible value of the current COM object self from UNO.
STDMETHOD() scrollTo(enum IA2ScrollType scrollType) override
STDMETHOD() Put_ActionDescription(const OLECHAR *szAction) override
UNO set description information for action to COM.
STDMETHOD() get_toolkitName(BSTR __RPC_FAR *name) override
STDMETHOD() Put_XAccParent(IMAccessible __RPC_FAR *pIParent) override
Set accessible parent object for the current COM object if the current object is a child of some COM ...
STDMETHOD() GetUNOInterface(hyper *) override
Return XAccessible interface pointer when needed.
STDMETHOD() get_accChildCount(long *pcountChildren) override
Returns child count of current COM object.
STDMETHOD() get_accState(VARIANT varChild, VARIANT *pvarState) override
Returns the accessible state of the current COM object self or its one child to AT.
STDMETHOD() get_accValue(VARIANT varChild, BSTR *pszValue) override
Returns the accessible value of the current COM object self or its one child to AT.
HRESULT WINAPI SmartQI(void *pv, REFIID iid, void **ppvObject)
STDMETHOD() get_accChild(VARIANT varChild, IDispatch **ppdispChild) override
Returns child interface pointer for AT according to input child ID.
STDMETHOD() get_accRole(VARIANT varChild, VARIANT *pvarRole) override
Returns the accessible role of the current COM object self or its one child to AT.
STDMETHOD() NotifyDestroy() override
When a UNO control disposing, it disposes its listeners, then notify AccObject in bridge management,...
STDMETHOD() get_accHelpTopic(BSTR *pszHelpFile, VARIANT varChild, long *pidTopic) override
Returns the accessible HelpTopic of the current COM object self or its one child to AT.
STDMETHOD() Put_XAccFocus(long dChildID) override
Set accessible focus by specifying child ID.
XGUIDToComObjHash m_containedObjects
STDMETHOD() get_toolkitVersion(BSTR __RPC_FAR *version) override
IMAccessible * GetNavigateChildForDM(VARIANT varCur, short flags)
for descendantmanager circumstance,provide child interface when navigate
STDMETHOD() Put_XAccName(const OLECHAR __RPC_FAR *pszName) override
Set the accessible name of the current COM object self from UNO.
STDMETHOD() QueryService(REFGUID guidService, REFIID riid, void **ppvObject) override
Get The other Interface from CMAccessible.
STDMETHOD() SetDefaultAction(hyper pAction) override
Helper method for Implementation of get_accDefaultAction.
BSTR m_pszActionDescription
STDMETHOD() put_accName(VARIANT varChild, BSTR szName) override
No longer supported according to IAccessible doc.
STDMETHOD() get_extendedRole(BSTR __RPC_FAR *extendedRole) override
STDMETHOD() get_accDefaultAction(VARIANT varChild, BSTR *pszDefaultAction) override
This method is called when AT open some UI elements initially the UI element takes the default action...
STDMETHOD() accSelect(long flagsSelect, VARIANT varChild) override
accSelect method has many optional flags, needs to process comprehensively Mozilla and Microsoft do n...
HRESULT GetNextSibling(VARIANT varStart, VARIANT *pvarEndUpAt)
The method GetNextSibling is general, whatever it is descendant manage or not Get the next sibling ob...
static bool GetXInterfaceFromXAccessible(css::accessibility::XAccessible *, css::uno::XInterface **, XInterfaceType)
STDMETHOD() accHitTest(long xLeft, long yTop, VARIANT *pvarChild) override
STDMETHOD() Put_XAccAgent(hyper pAgent) override
Set AccObjectManagerAgent object pointer to COM.
HRESULT GetFirstChild(VARIANT varStart, VARIANT *pvarEndUpAt)
the following 4 private methods are for accNavigate implementation
STDMETHOD() get_accDescription(VARIANT varChild, BSTR *pszDescription) override
Returns the accessible description of the current COM object self or its one child to AT.
STDMETHOD() get_groupPosition(long __RPC_FAR *groupLevel, long __RPC_FAR *similarItemsInGroup, long __RPC_FAR *positionInGroup) override
STDMETHOD() get_relations(long maxRelations, IAccessibleRelation __RPC_FAR *__RPC_FAR *relation, long __RPC_FAR *nRelations) override
static css::accessibility::XAccessibleContext * GetContextByXAcc(css::accessibility::XAccessible *pXAcc)
Get XAccessibleContext directly from UNO by the stored XAccessible pointer.
STDMETHOD() Put_XAccRole(unsigned short pRole) override
Set the accessible role of the current COM object self from UNO.
STDMETHOD() IncreaseState(DWORD pXSate) override
Delete one state into the current state set for the current COM object from UNO.
static OUString getProductVersion()
static OUString getProductName()
IA2ScrollType
These constants control the scrolling of an object or substring into a window.
IA2CoordinateType
These constants define which coordinate system a point is located in.
@ IA2_STATE_STALE
Indicates that the accessible object is stale.
@ IA2_STATE_EDITABLE
An object with this state has a caret and implements the IAccessibleText interface.
@ IA2_STATE_DEFUNCT
Indicates the user interface object corresponding to this object no longer exists.
@ IA2_STATE_ICONIFIED
Indicates this object is minimized and is represented only by an icon.
@ IA2_STATE_MULTI_LINE
Indicates this text object can contain multiple lines of text.
@ IA2_STATE_OPAQUE
Indicates this object paints every pixel within its rectangular region.
@ IA2_STATE_MODAL
Indicates that an object is modal.
@ IA2_STATE_INVALID_ENTRY
Indicates an input validation failure.
@ IA2_STATE_HORIZONTAL
Indicates the orientation of this object is horizontal.
@ IA2_STATE_REQUIRED
Indicates that user interaction is required.
@ IA2_STATE_ARMED
Indicates that the object is armed.
@ IA2_STATE_SUPPORTS_AUTOCOMPLETION
Indicates that the object implements autocompletion.
@ IA2_STATE_VERTICAL
Indicates the orientation of this object is vertical.
@ IA2_STATE_ACTIVE
Indicates a window is currently the active window, or is an active subelement within a container or t...
@ IA2_STATE_MANAGES_DESCENDANTS
Indicates that this object manages its children.
@ IA2_STATE_SELECTABLE_TEXT
Indicates an object which supports text selection.
@ IA2_STATE_SINGLE_LINE
Indicates that this text object can contain only a single line of text.
@ IA2_STATE_TRANSIENT
Indicates this object is transient.
@ IA2_ROLE_CAPTION
A caption describing another object.
This interface gives access to actions that can be executed for accessible objects.
HRESULT nActions([out, retval] long *nActions)
Returns the number of accessible actions available in this object.
This interface gives access to an object's set of relations.
HRESULT GetUNOInterface(hyper *UNOInterface)
HRESULT Put_XAccFocus(long dChildID)
HRESULT put_XSubInterface(hyper pXSubInterface)
HRESULT put_XInterface(hyper pXInterface)
#define SAL_WARN(area, stream)
#define SAL_N_ELEMENTS(arr)
OUString GetkeyBindingStrByXkeyBinding(const Sequence< KeyStroke > &keySet)
A structure defining the locale of an accessible object.