LibreOffice Module winaccessibility (master) 1
|
#include <AccObjectWinManager.hxx>
Public Member Functions | |
virtual | ~AccObjectWinManager () |
Destructor,clear all resource. More... | |
bool | InsertAccObj (css::accessibility::XAccessible *pXAcc, css::accessibility::XAccessible *pParentXAcc, HWND pWnd) |
Insert child object. More... | |
bool | InsertChildrenAccObj (css::accessibility::XAccessible *pXAcc, HWND pWnd=nullptr) |
Insert all children of the current acc object. More... | |
void | DeleteAccObj (css::accessibility::XAccessible *pXAcc) |
Delete Acc object self. More... | |
void | DeleteChildrenAccObj (css::accessibility::XAccessible *pAccObj) |
Delete all children with the tree root of XAccessible pointer. More... | |
bool | NotifyAccEvent (css::accessibility::XAccessible *pXAcc, UnoMSAAEvent eEvent) |
Simulate MSAA event via XAccessible interface and event type. More... | |
LRESULT | Get_ToATInterface (HWND hWnd, long lParam, WPARAM wParam) |
Get valid com object interface when notifying some MSAA event. More... | |
void | DecreaseState (css::accessibility::XAccessible *pXAcc, sal_Int64 nState) |
state is a combination integer, each bit of which represents a single state, such as focused,1 for the state on,0 for the state off. More... | |
void | IncreaseState (css::accessibility::XAccessible *pXAcc, sal_Int64 nState) |
state is a combination integer, each bit of which represents a single state,such as focused,1 for the state on,0 for the state off. More... | |
void | UpdateState (css::accessibility::XAccessible *pXAcc) |
void | SetValue (css::accessibility::XAccessible *pXAcc, css::uno::Any pAny) |
Set corresponding com object's value via XAccessible interface and new value. More... | |
void | UpdateValue (css::accessibility::XAccessible *pXAcc) |
Set corresponding com object's value via XAccessible interface. More... | |
void | SetAccName (css::accessibility::XAccessible *pXAcc, css::uno::Any newName) |
Set corresponding com object's name via XAccessible interface and new name. More... | |
void | UpdateAccName (css::accessibility::XAccessible *pXAcc) |
Set corresponding com object's accessible name via XAccessible interface and new name. More... | |
void | UpdateAccFocus (css::accessibility::XAccessible *newFocus) |
Update focus object by new focused XAccessible interface. More... | |
void | UpdateAction (css::accessibility::XAccessible *pXAcc) |
IMAccessible * | GetIMAccByXAcc (css::accessibility::XAccessible *pXAcc) |
Query and get IAccessible interface by XAccessible interface from list. More... | |
IMAccessible * | GetIAccessibleFromResID (long resID) |
Query and get IAccessible interface by child id from list. More... | |
void | NotifyDestroy (css::accessibility::XAccessible *pXAcc) |
Notify some object will be destroyed. More... | |
css::accessibility::XAccessible * | GetParentXAccessible (css::accessibility::XAccessible *pXAcc) |
Get Parent XAccessible interface by XAccessible interface. More... | |
short | GetParentRole (css::accessibility::XAccessible *pXAcc) |
Get Parent role by XAccessible interface. More... | |
void | SaveTopWindowHandle (HWND hWnd, css::accessibility::XAccessible *pXAcc) |
save the pair <topwindowhandle, XAccessible> More... | |
void | UpdateChildState (css::accessibility::XAccessible *pXAcc) |
bool | IsSpecialToolbarItem (css::accessibility::XAccessible *pXAcc) |
css::accessibility::XAccessible * | GetAccDocByAccTopWin (css::accessibility::XAccessible *pXAcc) |
bool | IsTopWinAcc (css::accessibility::XAccessible *pXAcc) |
Static Public Member Functions | |
static bool | IsContainer (css::accessibility::XAccessible *pAccessible) |
Judge if a XAccessible object is a container object. More... | |
static short | GetRole (css::accessibility::XAccessible *pXAcc) |
static bool | IsStateManageDescendant (css::accessibility::XAccessible *pAccessible) |
Judge if a XAccessible object has ManageDescendant event. More... | |
Private Types | |
typedef std::map< com::sun::star::accessibility::XAccessible *, AccObject > | XIdToAccObjHash |
typedef std::map< HWND, com::sun::star::accessibility::XAccessible * > | XHWNDToXAccHash |
typedef std::map< const long, AccObject * > | XResIdToAccObjHash |
typedef std::map< const HWND, css::accessibility::XAccessible * > | XHWNDToDocumentHash |
Private Member Functions | |
AccObjectWinManager (AccObjectManagerAgent *Agent=nullptr) | |
constructor More... | |
long | ImpleGenerateResID () |
Generate a child ID, which is used for AT. More... | |
AccObject * | GetAccObjByXAcc (css::accessibility::XAccessible *pXAcc) |
Search AccObject by XAccessible pointer from our container. More... | |
IMAccessible * | GetTopWindowIMAccessible (HWND hWnd) |
get acc object of top window by its handle More... | |
css::accessibility::XAccessible * | GetAccDocByHWND (HWND hWnd) |
void | DeleteFromHwndXAcc (css::accessibility::XAccessible const *pXAcc) |
Delete XAccessible items in top window handle hashtable. More... | |
::rtl::Reference< AccEventListener > | CreateAccEventListener (css::accessibility::XAccessible *pXAcc) |
Create the corresponding listener. More... | |
Static Private Member Functions | |
static rtl::Reference< AccEventListener > | DeleteAccListener (AccObject *pAccObj) |
Delete listener that inspects some XAccessible object. More... | |
static void | InsertAccChildNode (AccObject *pCurObj, AccObject *pParentObj, HWND pWnd) |
Insert child object. More... | |
static void | DeleteAccChildNode (AccObject *pChild) |
Delete child element from children list. More... | |
Private Attributes | |
std::recursive_mutex | m_Mutex |
XIdToAccObjHash | XIdAccList |
XHWNDToXAccHash | HwndXAcc |
XResIdToAccObjHash | XResIdAccList |
XHWNDToDocumentHash | XHWNDDocList |
css::accessibility::XAccessible * | oldFocus |
AccObjectManagerAgent * | pAgent |
ResIDGenerator | ResIdGen |
Friends | |
class | AccObjectManagerAgent |
Definition at line 50 of file AccObjectWinManager.hxx.
|
private |
Definition at line 60 of file AccObjectWinManager.hxx.
|
private |
Definition at line 56 of file AccObjectWinManager.hxx.
|
private |
Definition at line 55 of file AccObjectWinManager.hxx.
|
private |
Definition at line 57 of file AccObjectWinManager.hxx.
|
private |
constructor
Agent | The agent kept in all listeners,it's the sole interface by which listener communicate with windows manager. pEventAccObj The present event accobject. oldFocus Last focused object. isSelectionChanged flag that identifies if there is selection changed. selectionChildObj Selected object. dChildID Chile resource ID. hAcc TopWindowHWND |
Definition at line 63 of file AccObjectWinManager.cxx.
|
virtual |
Destructor,clear all resource.
return
Definition at line 74 of file AccObjectWinManager.cxx.
References HwndXAcc, m_Mutex, XHWNDDocList, XIdAccList, and XResIdAccList.
|
private |
Create the corresponding listener.
pXAcc | XAccessible interface. |
Definition at line 717 of file AccObjectWinManager.cxx.
References pAgent.
Referenced by InsertAccObj().
void AccObjectWinManager::DecreaseState | ( | css::accessibility::XAccessible * | pXAcc, |
sal_Int64 | nState | ||
) |
state is a combination integer, each bit of which represents a single state, such as focused,1 for the state on,0 for the state off.
Here call COM interface to modify the state value, including DecreaseState.
pXAcc | XAccessible interface. |
pState | Changed state. |
Definition at line 832 of file AccObjectWinManager.cxx.
References AccObject::DecreaseState(), GetAccObjByXAcc(), and nState.
|
staticprivate |
Delete child element from children list.
pObj | Child element that should be removed from parent child list. |
Definition at line 393 of file AccObjectWinManager.cxx.
References AccObject::DeleteChild(), and AccObject::GetParentObj().
Referenced by DeleteAccObj().
|
staticprivate |
Delete listener that inspects some XAccessible object.
pAccObj | Accobject pointer. |
Definition at line 499 of file AccObjectWinManager.cxx.
References AccObject::SetListener().
Referenced by DeleteAccObj().
void AccObjectWinManager::DeleteAccObj | ( | css::accessibility::XAccessible * | pXAcc | ) |
Delete Acc object self.
pXAcc | The XAccessible interface. |
Definition at line 447 of file AccObjectWinManager.cxx.
References DeleteAccChildNode(), DeleteAccListener(), DeleteFromHwndXAcc(), AccObject::GetIMAccessible(), AccObject::GetParentHWND(), AccObject::GetResID(), AccObject::GetRole(), i, m_Mutex, AccObject::NotifyDestroy(), ResIdGen, ResIDGenerator::SetSub(), XHWNDDocList, XIdAccList, and XResIdAccList.
Referenced by DeleteChildrenAccObj().
void AccObjectWinManager::DeleteChildrenAccObj | ( | css::accessibility::XAccessible * | pAccObj | ) |
Delete all children with the tree root of XAccessible pointer.
pXAcc | Tree root XAccessible interface. |
Definition at line 420 of file AccObjectWinManager.cxx.
References DeleteAccObj(), DeleteChildrenAccObj(), GetAccObjByXAcc(), AccObject::GetXAccessible(), and AccObject::NextChild().
Referenced by DeleteChildrenAccObj().
|
private |
Delete XAccessible items in top window handle hashtable.
pXAcc | XAccessible interface. |
Definition at line 405 of file AccObjectWinManager.cxx.
References HwndXAcc, and m_Mutex.
Referenced by DeleteAccObj().
LRESULT AccObjectWinManager::Get_ToATInterface | ( | HWND | hWnd, |
long | lParam, | ||
WPARAM | wParam | ||
) |
Get valid com object interface when notifying some MSAA event.
pWND | The top window handle that contains that event control. |
wParam | Windows system interface. |
Definition at line 95 of file AccObjectWinManager.cxx.
References GetTopWindowIMAccessible(), and result.
XAccessible * AccObjectWinManager::GetAccDocByAccTopWin | ( | css::accessibility::XAccessible * | pXAcc | ) |
Definition at line 1123 of file AccObjectWinManager.cxx.
References GetAccDocByHWND(), GetAccObjByXAcc(), and AccObject::GetParentHWND().
|
private |
Definition at line 1111 of file AccObjectWinManager.cxx.
References XHWNDDocList.
Referenced by GetAccDocByAccTopWin().
|
private |
Search AccObject by XAccessible pointer from our container.
pXAcc | XAccessible interface. |
Definition at line 118 of file AccObjectWinManager.cxx.
References m_Mutex, and XIdAccList.
Referenced by DecreaseState(), DeleteChildrenAccObj(), GetAccDocByAccTopWin(), GetIMAccByXAcc(), GetParentRole(), GetParentXAccessible(), GetTopWindowIMAccessible(), IncreaseState(), InsertAccObj(), IsTopWinAcc(), NotifyAccEvent(), NotifyDestroy(), SetAccName(), SetValue(), UpdateAccFocus(), UpdateAccName(), UpdateAction(), UpdateChildState(), UpdateState(), and UpdateValue().
IMAccessible * AccObjectWinManager::GetIAccessibleFromResID | ( | long | resID | ) |
Query and get IAccessible interface by child id from list.
resID,childID. |
Definition at line 1031 of file AccObjectWinManager.cxx.
References AccObject::GetIMAccessible(), and XResIdAccList.
IMAccessible * AccObjectWinManager::GetIMAccByXAcc | ( | css::accessibility::XAccessible * | pXAcc | ) |
Query and get IAccessible interface by XAccessible interface from list.
pXAcc | XAccessible interface. |
Definition at line 1013 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), and AccObject::GetIMAccessible().
short AccObjectWinManager::GetParentRole | ( | css::accessibility::XAccessible * | pXAcc | ) |
Get Parent role by XAccessible interface.
pXAcc | XAccessible interface. |
Definition at line 351 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), AccObject::GetParentObj(), and AccObject::GetXAccessible().
Referenced by IsSpecialToolbarItem().
XAccessible * AccObjectWinManager::GetParentXAccessible | ( | css::accessibility::XAccessible * | pXAcc | ) |
Get Parent XAccessible interface by XAccessible interface.
pXAcc | XAccessible interface. |
Definition at line 333 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), AccObject::GetParentObj(), and AccObject::GetXAccessible().
|
static |
Definition at line 1100 of file AccObjectWinManager.cxx.
Referenced by AccObjectManagerAgent::GetRole(), and InsertAccObj().
|
private |
get acc object of top window by its handle
hWnd,top | window handle |
Definition at line 137 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), AccObject::GetIMAccessible(), HwndXAcc, and m_Mutex.
Referenced by Get_ToATInterface().
|
inlineprivate |
Generate a child ID, which is used for AT.
return New resource ID.
Definition at line 509 of file AccObjectWinManager.cxx.
References ResIDGenerator::GenerateNewResID(), and ResIdGen.
Referenced by InsertAccObj().
void AccObjectWinManager::IncreaseState | ( | css::accessibility::XAccessible * | pXAcc, |
sal_Int64 | nState | ||
) |
state is a combination integer, each bit of which represents a single state,such as focused,1 for the state on,0 for the state off.
Here call COM interface to modify the state value, including IncreaseState.
pXAcc | XAccessible interface. |
pState | Changed state. |
Definition at line 847 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), AccObject::IncreaseState(), and nState.
|
staticprivate |
Insert child object.
pCurObj | The child object |
pParentObj | The parent object |
pWnd | Top window handle. |
Definition at line 570 of file AccObjectWinManager.cxx.
References AccObject::InsertChild(), and AccObject::UpdateValidWindow().
Referenced by InsertAccObj().
bool AccObjectWinManager::InsertAccObj | ( | css::accessibility::XAccessible * | pXAcc, |
css::accessibility::XAccessible * | pParentXAcc, | ||
HWND | pWnd | ||
) |
Insert child object.
pCurObj | The child object |
pParentObj | The parent object |
pWnd | Top window handle. |
Definition at line 592 of file AccObjectWinManager.cxx.
References CreateAccEventListener(), GetAccObjByXAcc(), AccObject::GetIMAccessible(), AccObject::GetParentHWND(), AccObject::GetParentObj(), AccObject::GetResID(), AccObject::GetRole(), GetRole(), AccObject::GetXAccessible(), ImpleGenerateResID(), InsertAccChildNode(), m_Mutex, pAgent, AccObject::SetListener(), AccObject::SetParentHWND(), AccObject::SetParentObj(), AccObject::SetResID(), AccObject::UpdateAccessibleInfoFromUnoToMSAA(), XHWNDDocList, XIdAccList, and XResIdAccList.
Referenced by InsertChildrenAccObj().
bool AccObjectWinManager::InsertChildrenAccObj | ( | css::accessibility::XAccessible * | pXAcc, |
HWND | pWnd = nullptr |
||
) |
Insert all children of the current acc object.
pXAcc | XAccessible interface |
pWnd | Top Window handle |
Definition at line 520 of file AccObjectWinManager.cxx.
References i, InsertAccObj(), InsertChildrenAccObj(), IsContainer(), IsStateManageDescendant(), and nCount.
Referenced by InsertChildrenAccObj().
|
static |
Judge if a XAccessible object is a container object.
pAccessible | XAccessible interface. |
Definition at line 924 of file AccObjectWinManager.cxx.
References IsStateManageDescendant().
Referenced by InsertChildrenAccObj(), and AccObjectManagerAgent::IsContainer().
bool AccObjectWinManager::IsSpecialToolbarItem | ( | css::accessibility::XAccessible * | pXAcc | ) |
Definition at line 1081 of file AccObjectWinManager.cxx.
References GetParentRole(), and oldFocus.
|
static |
Judge if a XAccessible object has ManageDescendant event.
pAccessible | XAccessible interface. |
Definition at line 994 of file AccObjectWinManager.cxx.
Referenced by InsertChildrenAccObj(), IsContainer(), and AccObjectManagerAgent::IsStateManageDescendant().
bool AccObjectWinManager::IsTopWinAcc | ( | css::accessibility::XAccessible * | pXAcc | ) |
Definition at line 1130 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), and AccObject::GetParentObj().
bool AccObjectWinManager::NotifyAccEvent | ( | css::accessibility::XAccessible * | pXAcc, |
UnoMSAAEvent | eEvent | ||
) |
Simulate MSAA event via XAccessible interface and event type.
pXAcc | XAccessible interface. |
eEvent | event type |
Definition at line 165 of file AccObjectWinManager.cxx.
References ACTIVE_DESCENDANT_CHANGED, BOUNDRECT_CHANGED, CHILD_ADDED, CHILD_REMOVED, COLUMN_CHANGED, GetAccObjByXAcc(), AccObject::GetParentHWND(), AccObject::GetResID(), IA2_EVENT_ACTION_CHANGED, IA2_EVENT_PAGE_CHANGED, IA2_EVENT_SECTION_CHANGED, IA2_EVENT_TABLE_CAPTION_CHANGED, IA2_EVENT_TABLE_COLUMN_DESCRIPTION_CHANGED, IA2_EVENT_TABLE_COLUMN_HEADER_CHANGED, IA2_EVENT_TABLE_MODEL_CHANGED, IA2_EVENT_TABLE_ROW_DESCRIPTION_CHANGED, IA2_EVENT_TABLE_ROW_HEADER_CHANGED, IA2_EVENT_TABLE_SUMMARY_CHANGED, IA2_EVENT_TEXT_CARET_MOVED, IA2_EVENT_TEXT_CHANGED, IA2_EVENT_TEXT_COLUMN_CHANGED, IA2_EVENT_TEXT_SELECTION_CHANGED, IA2_EVENT_VISIBLE_DATA_CHANGED, MENU_END, MENU_START, MENUPOPUPEND, MENUPOPUPSTART, OBJECT_CARETCHANGE, OBJECT_DEFACTIONCHANGE, OBJECT_DESCRIPTIONCHANGE, OBJECT_NAMECHANGE, OBJECT_PAGECHANGED, OBJECT_REORDER, OBJECT_TEXTCHANGE, OBJECT_VALUECHANGE, PAGE_CHANGED, SECTION_CHANGED, SELECTION_CHANGED, SELECTION_CHANGED_ADD, SELECTION_CHANGED_REMOVE, SELECTION_CHANGED_WITHIN, SHOW, STATE_ARMED, STATE_BUSY, STATE_CHECKED, STATE_FOCUSED, STATE_PRESSED, STATE_SHOWING, TABLE_CAPTION_CHANGED, TABLE_COLUMN_DESCRIPTION_CHANGED, TABLE_COLUMN_HEADER_CHANGED, TABLE_MODEL_CHANGED, TABLE_ROW_DESCRIPTION_CHANGED, TABLE_ROW_HEADER_CHANGED, TABLE_SUMMARY_CHANGED, TEXT_SELECTION_CHANGED, UpdateAccFocus(), AccObject::UpdateDefaultAction(), UpdateValue(), and VISIBLE_DATA_CHANGED.
void AccObjectWinManager::NotifyDestroy | ( | css::accessibility::XAccessible * | pXAcc | ) |
Notify some object will be destroyed.
pXAcc | XAccessible interface. |
Definition at line 1048 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), and AccObject::NotifyDestroy().
void AccObjectWinManager::SaveTopWindowHandle | ( | HWND | hWnd, |
css::accessibility::XAccessible * | pXAcc | ||
) |
save the pair <topwindowhandle, XAccessible>
hWnd,top | window handle |
pXAcc | XAccessible interface for top window |
Definition at line 705 of file AccObjectWinManager.cxx.
void AccObjectWinManager::SetAccName | ( | css::accessibility::XAccessible * | pXAcc, |
css::uno::Any | newName | ||
) |
Set corresponding com object's name via XAccessible interface and new name.
pXAcc | XAccessible interface. |
newName | new name |
Definition at line 912 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), newName(), and AccObject::SetName().
void AccObjectWinManager::SetValue | ( | css::accessibility::XAccessible * | pXAcc, |
css::uno::Any | pAny | ||
) |
Set corresponding com object's value via XAccessible interface and new value.
pXAcc | XAccessible interface. |
pAny | new value. |
Definition at line 887 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), and AccObject::SetValue().
void AccObjectWinManager::UpdateAccFocus | ( | css::accessibility::XAccessible * | newFocus | ) |
Update focus object by new focused XAccessible interface.
newFocus | New XAccessible interface that gets focus. |
Definition at line 374 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), oldFocus, AccObject::setFocus(), and AccObject::unsetFocus().
Referenced by NotifyAccEvent().
void AccObjectWinManager::UpdateAccName | ( | css::accessibility::XAccessible * | pXAcc | ) |
Set corresponding com object's accessible name via XAccessible interface and new name.
pXAcc | XAccessible interface. |
Definition at line 867 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), and AccObject::UpdateName().
void AccObjectWinManager::UpdateAction | ( | css::accessibility::XAccessible * | pXAcc | ) |
Definition at line 874 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), and AccObject::UpdateAction().
void AccObjectWinManager::UpdateChildState | ( | css::accessibility::XAccessible * | pXAcc | ) |
Definition at line 1058 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), i, nCount, and AccObject::UpdateState().
void AccObjectWinManager::UpdateState | ( | css::accessibility::XAccessible * | pXAcc | ) |
Definition at line 854 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), and AccObject::UpdateState().
void AccObjectWinManager::UpdateValue | ( | css::accessibility::XAccessible * | pXAcc | ) |
Set corresponding com object's value via XAccessible interface.
pXAcc | XAccessible interface. |
Definition at line 899 of file AccObjectWinManager.cxx.
References GetAccObjByXAcc(), and AccObject::UpdateValue().
Referenced by NotifyAccEvent().
|
friend |
Definition at line 52 of file AccObjectWinManager.hxx.
|
private |
Definition at line 69 of file AccObjectWinManager.hxx.
Referenced by DeleteFromHwndXAcc(), GetTopWindowIMAccessible(), SaveTopWindowHandle(), and ~AccObjectWinManager().
|
private |
Definition at line 63 of file AccObjectWinManager.hxx.
Referenced by DeleteAccObj(), DeleteFromHwndXAcc(), GetAccObjByXAcc(), GetTopWindowIMAccessible(), InsertAccObj(), SaveTopWindowHandle(), and ~AccObjectWinManager().
|
private |
Definition at line 77 of file AccObjectWinManager.hxx.
Referenced by IsSpecialToolbarItem(), and UpdateAccFocus().
|
private |
Definition at line 79 of file AccObjectWinManager.hxx.
Referenced by CreateAccEventListener(), and InsertAccObj().
|
private |
Definition at line 80 of file AccObjectWinManager.hxx.
Referenced by DeleteAccObj(), and ImpleGenerateResID().
|
private |
Definition at line 75 of file AccObjectWinManager.hxx.
Referenced by DeleteAccObj(), GetAccDocByHWND(), InsertAccObj(), and ~AccObjectWinManager().
|
private |
Definition at line 66 of file AccObjectWinManager.hxx.
Referenced by DeleteAccObj(), GetAccObjByXAcc(), InsertAccObj(), and ~AccObjectWinManager().
|
private |
Definition at line 72 of file AccObjectWinManager.hxx.
Referenced by DeleteAccObj(), GetIAccessibleFromResID(), InsertAccObj(), and ~AccObjectWinManager().