Windows Accessibility Bridge. This code provides a bridge between our internal Accessibility interfaces (implemented on all visible 'things' in the suite: eg. windows, buttons, entry boxes etc.) - and the Windows MSAA / IAccessible2 COM interfaces that are familiar to windows users and Accessible Technologies (ATs) such as the NVDA screen reader. The code breaks into three bits: source/service/ + the UNO service providing the accessibility bridge. It essentially listens to events from the LibreOffice core and creates and synchronises COM peers for our internal accessibility objects when events arrive. source/UAccCom/ + COM implementations of the MSAA / IAccessible2 interfaces to provide native peers for the accessibility code. source/UAccCOMIDL/ + COM Interface Definition Language (IDL) for UAccCom. Here is one way of visualising the code / control flow VCL <-> UNO toolkit <-> UNO a11y <-> win a11y <-> COM / IAccessible2 vcl/ <-> toolkit/ <-> accessibility/ <-> winaccessibility/ <-> UAccCom/ Threading It's possible that the UNO components are called from threads other than the main thread, so they have to be synchronized. It would be nice to put the component into an UNO apartment (and the COM components into STA) but UNO would spawn a new thread for it so it's not possible. The COM components also call into the same global AccObjectWinManager as the UNO components do so both have to be synchronized in the same way. So we use the SolarMutex for all synchronization since anything else would be rather difficult to make work. Unfortunately there is a pre-exising problem in vcl with Win32 Window creation and destruction on non-main threads where a synchronous SendMessage is used while the SolarMutex is locked that can cause deadlocks if the main thread is waiting on the SolarMutex itself at that time and thus not handing the Win32 message; this is easy to trigger with JunitTests but hopefully not by actual end users. Debugging / playing with winaccessibility You need to enable 'experiemental mode' in Tools->Options. After that NVDA should work as expected. In order to use 'accprobe' to debug it is necessary to override the check for whether an AT (like NVDA) is running; to do that use: SAL_FORCE_IACCESSIBLE2=1 soffice.exe -writer Then you can use accprobe to introspect the accessibility hierarchy remotely, checkout: http://accessibility.linuxfoundation.org/a11yweb/util/accprobe/ > LibreOffice 核心代码仓库文档基金会
summaryrefslogtreecommitdiff
path: root/qadevOOo/tests/java/mod/_fwk/LayoutManager.java
2024-10-05
AgeCommit message (Expand)Author
Use good old string literals in assertXPath and friendsMike Kaganski
2024-10-02tdf#163212: context-fill/context-stroke can also use gradientsXisco Fauli
2024-09-12Temporarily skip unit tests on native arm64 buildBalazs Varga
2024-07-20CairoSDPR: make use of RGBA PolyPolygon in more casesArmin Le Grand (Collabora)
2024-07-11tdf#161985: getOpacity is also called from other placesXisco Fauli
2024-06-13tdf#161213: fill can use context-stroke and vice versaXisco Fauli
2024-05-15loplugin:ostr in svgioNoel Grandin
2024-05-06tdf#155651: Add support for "context-fill"Xisco Fauli
2024-05-03tdf#155651: Add support for "context-stroke"Xisco Fauli
2024-04-25CppunitTest_svgio: fix mid-air collisionXisco Fauli
2024-04-24Fix unit test after commit 98935eef13c7d755221d79fe7d3c5869a40a7c37Mike Kaganski
2024-04-23tdf#159661, tdf#160773: svgio: Add unittestXisco Fauli
2024-04-22tdf#159660: also add normal blend filterXisco Fauli
2024-04-22tdf#160782: convert to bitmapEx from 0,0 to width,heightXisco Fauli
2024-04-22tdf#159660: Add support for lighten mode in feBlendXisco Fauli
2024-04-22tdf#159660: Add support for darken mode in feBlendXisco Fauli
2024-04-22tdf#159660: Add support for multiply mode in feBlendXisco Fauli
2024-04-22tdf#159660: premultiply colors for screen blendXisco Fauli
2024-04-22tdf#160726, tdf#48062: Simplify how BitmapExs are createdXisco Fauli
2024-04-20tdf#157103: fix SVG whitespace handlingMike Kaganski
2024-04-20tdf#160702: improve text positioningMike Kaganski
2024-04-20svgio: remove duplicated assertXPathDoubleXisco Fauli
2024-04-19tdf#160721: nothing is displayed in case of wrong 'in' referenceXisco Fauli
2024-04-19tdf#160622: Let SalLayout::GetBoundRect return basegfx::B2DRectangleMike Kaganski
2024-04-19tdf#160717: fix ex handlingMike Kaganski
2024-04-18tdf#160594: Use the recommended fallback of 0.5em for ex in font-sizeMike Kaganski
2024-04-18tdf#160593: make sure to use current element's font size for em unitMike Kaganski
2024-04-14Round in XmlWriter::attribute when passing a doubleMike Kaganski
2024-03-27tdf#160386: Add support for switch elementXisco Fauli
2024-03-27tdf#156579: svgio: Add unittestXisco Fauli
2024-03-27CppunitTest_svgio: factor out common codeXisco Fauli
2024-03-26tdf#160373: Iterate over all parents to check whether it's a clipPath contentXisco Fauli
2024-03-15tdf#48062: Add support for atop operator in feCompositeXisco Fauli
2024-03-15tdf#48062: Add support for xor, in and out operators in feCompositeXisco Fauli
2024-03-13tdf#48062: Add support for feComposite filterXisco Fauli
2024-03-13tdf#159660: Add support for feBlend filterXisco Fauli
2024-03-12tdf#159660: Add support for feMerge and feMergeNodeXisco Fauli
2024-03-01tdf#159968: Support overflow:visible in marker elementXisco Fauli
2024-02-29tdf#159947: Add support for in and result filter attributesXisco Fauli
2024-02-07tdf#159601: svgio: do not use std::move hereXisco Fauli
2024-02-06tdf#159594: reuse target for symbols' childrenXisco Fauli
2024-02-05tdf#159566: match 'central' dominant-baseline to 'middle'Xisco Fauli
2024-02-05tdf#108037 Reduce time and memory consumed exporting to PDFNoel Grandin
2024-01-26tdf#158445: support viewBox in symbol elementsXisco Fauli