diff options
author | Jacobo Aragunde PĂ©rez <jaragunde@igalia.com> | 2014-02-03 19:08:31 +0100 |
---|---|---|
committer | Michael Meeks <michael.meeks@collabora.com> | 2014-02-04 13:08:57 +0000 |
commit | 2bb87dd6596f8e961f5618d8e7686fa12c64e2cf (patch) | |
tree | 3b473eec6bcaa2c168e18fe39a8497cfb34ceae8 | |
parent | ac8cb745d7b385b24a3576aa6c40780fdcfe9b15 (diff) |
fdo#39944: Add DOCUMENT_* accessibility UNO roles
Added a set of UNO accessibility roles for specific kinds of
documents:
* DOCUMENT_PRESENTATION for Impress
* DOCUMENT_SPREADSHEET for Calc
* DOCUMENT_TEXT for Writer
The other applications still use the existing DOCUMENT role.
These roles translates directly to ATK but in the other toolkits we
keep using the same association that DOCUMENT role had.
Change-Id: Ibac47527e5effdecb28d2314cde8558cf4fb010a
Reviewed-on: https://gerrit.libreoffice.org/7847
Reviewed-by: Michael Meeks <michael.meeks@collabora.com>
Tested-by: Michael Meeks <michael.meeks@collabora.com>
16 files changed, 67 insertions, 17 deletions
diff --git a/offapi/com/sun/star/accessibility/AccessibleRole.idl b/offapi/com/sun/star/accessibility/AccessibleRole.idl index 2baa6a992611..ca3b79bb8b5c 100644 --- a/offapi/com/sun/star/accessibility/AccessibleRole.idl +++ b/offapi/com/sun/star/accessibility/AccessibleRole.idl @@ -705,6 +705,30 @@ constants AccessibleRole */ const short COMMENT_END = 82; + /** View of an presentation document. + + <p>It's an specific variation of DOCUMENT for presentations.</p> + + @since LibreOffice 4.3 + */ + const short DOCUMENT_PRESENTATION = 83; + + /** View of an spreadsheet document. + + <p>It's an specific variation of DOCUMENT for spreadsheets.</p> + + @since LibreOffice 4.3 + */ + const short DOCUMENT_SPREADSHEET = 84; + + /** View of an text document. + + <p>It's an specific variation of DOCUMENT for text.</p> + + @since LibreOffice 4.3 + */ + const short DOCUMENT_TEXT = 85; + }; }; }; }; }; diff --git a/offapi/com/sun/star/drawing/AccessibleDrawDocumentView.idl b/offapi/com/sun/star/drawing/AccessibleDrawDocumentView.idl index 1c3c3fa289fd..9dcf863142b0 100644 --- a/offapi/com/sun/star/drawing/AccessibleDrawDocumentView.idl +++ b/offapi/com/sun/star/drawing/AccessibleDrawDocumentView.idl @@ -69,8 +69,10 @@ service AccessibleDrawDocumentView <p>You can access the following information: <ul> - <li>Role: The object's role is - com::sun::star::accessibility::AccessibleRole::DOCUMENT.</li> + <li>Role: The object's role might be + com::sun::star::accessibility::AccessibleRole::DOCUMENT or + com::sun::star::accessibility::AccessibleRole::DOCUMENT_PRESENTATION + , the former for a Draw and the latter for an Impress document.</li> <li>Name: Its name is "AccessibleDrawDocumentView", "AccessibleOutlineView", or "slide window".</li> <li>Description: The description is "Draw Document", "Accessible diff --git a/offapi/com/sun/star/sheet/AccessibleSpreadsheetDocumentView.idl b/offapi/com/sun/star/sheet/AccessibleSpreadsheetDocumentView.idl index 77939c957f83..7b0d7fe51771 100644 --- a/offapi/com/sun/star/sheet/AccessibleSpreadsheetDocumentView.idl +++ b/offapi/com/sun/star/sheet/AccessibleSpreadsheetDocumentView.idl @@ -92,7 +92,7 @@ service AccessibleSpreadsheetDocumentView </ul> <li>The description is ???.</li> <li>The name is Spreadsheet Document View with a unique number.</li> - <li>The role is ::com::sun::star::accessibility::AccessibleRole::DOCUMENT</li> + <li>The role is ::com::sun::star::accessibility::AccessibleRole::DOCUMENT_SPREADSHEET</li> <li>There are no relations.</li> <li>The following states are supported: <ul> diff --git a/offapi/com/sun/star/sheet/AccessibleSpreadsheetPageView.idl b/offapi/com/sun/star/sheet/AccessibleSpreadsheetPageView.idl index 767392718a92..6ff4454b04be 100644 --- a/offapi/com/sun/star/sheet/AccessibleSpreadsheetPageView.idl +++ b/offapi/com/sun/star/sheet/AccessibleSpreadsheetPageView.idl @@ -96,7 +96,7 @@ service AccessibleSpreadsheetPageView <li>The description is ???.</li> <li>The name is Spreadsheet Document Page Preview.</li> <li>The role is - ::com::sun::star::accessibility::AccessibleRole::DOCUMENT</li> + ::com::sun::star::accessibility::AccessibleRole::DOCUMENT_SPREADSHEET</li> <li>There are no relations.</li> <li>The following states are supported: <ul> diff --git a/offapi/com/sun/star/text/AccessibleTextDocumentPageView.idl b/offapi/com/sun/star/text/AccessibleTextDocumentPageView.idl index cfe22fe76e99..5a6ace720b0b 100644 --- a/offapi/com/sun/star/text/AccessibleTextDocumentPageView.idl +++ b/offapi/com/sun/star/text/AccessibleTextDocumentPageView.idl @@ -47,7 +47,7 @@ service AccessibleTextDocumentPageView returns an object that supports one of the service ::com::sun::star::text::AccessiblePageView. <li>The role is - ::com::sun::star::accessibility::AccessibleRole::DOCUMENT. + ::com::sun::star::accessibility::AccessibleRole::DOCUMENT_TEXT. <li>The name is "document view" (or the equivalent term in application's language). <li>The description also is "document view" (or the equivalent term diff --git a/offapi/com/sun/star/text/AccessibleTextDocumentView.idl b/offapi/com/sun/star/text/AccessibleTextDocumentView.idl index 4d4acf4a151f..818b18eeea53 100644 --- a/offapi/com/sun/star/text/AccessibleTextDocumentView.idl +++ b/offapi/com/sun/star/text/AccessibleTextDocumentView.idl @@ -129,7 +129,7 @@ service AccessibleTextDocumentView but also keep the z order. </ul> <li>The role is - ::com::sun::star::accessibility::AccessibleRole::DOCUMENT. + ::com::sun::star::accessibility::AccessibleRole::DOCUMENT_TEXT. <li>The name is "document view" (or the equivalent term in application's language). <li>The description also is "document view" (or the equivalent term diff --git a/sc/source/ui/Accessibility/AccessibleDocumentBase.cxx b/sc/source/ui/Accessibility/AccessibleDocumentBase.cxx index 12435ea038b1..3b32481933a1 100644 --- a/sc/source/ui/Accessibility/AccessibleDocumentBase.cxx +++ b/sc/source/ui/Accessibility/AccessibleDocumentBase.cxx @@ -28,7 +28,7 @@ using namespace ::com::sun::star::accessibility; ScAccessibleDocumentBase::ScAccessibleDocumentBase( const uno::Reference<XAccessible>& rxParent) - : ScAccessibleContextBase(rxParent, AccessibleRole::DOCUMENT) + : ScAccessibleContextBase(rxParent, AccessibleRole::DOCUMENT_SPREADSHEET) { } diff --git a/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx b/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx index 1d5815dfd0c9..ab724dba287d 100644 --- a/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx +++ b/sd/source/ui/accessibility/AccessibleDocumentViewBase.cxx @@ -63,7 +63,10 @@ AccessibleDocumentViewBase::AccessibleDocumentViewBase ( ::sd::ViewShell* pViewShell, const uno::Reference<frame::XController>& rxController, const uno::Reference<XAccessible>& rxParent) - : AccessibleContextBase (rxParent, AccessibleRole::DOCUMENT), + : AccessibleContextBase (rxParent, + pViewShell->GetDoc()->GetDocumentType() == DOCUMENT_TYPE_IMPRESS ? + AccessibleRole::DOCUMENT_PRESENTATION : + AccessibleRole::DOCUMENT), mpWindow (pSdWindow), mxController (rxController), mxModel (NULL), diff --git a/svx/source/accessibility/AccessibleShape.cxx b/svx/source/accessibility/AccessibleShape.cxx index 523b084b2fda..2eee09be2c6e 100644 --- a/svx/source/accessibility/AccessibleShape.cxx +++ b/svx/source/accessibility/AccessibleShape.cxx @@ -1511,7 +1511,10 @@ throw (uno::RuntimeException) } ::com::sun::star::uno::Reference<XAccessibleContext> xParentContext = xParent->getAccessibleContext(); - if( xParentContext->getAccessibleRole() == AccessibleRole::DOCUMENT)//Document + if( xParentContext->getAccessibleRole() == AccessibleRole::DOCUMENT || + xParentContext->getAccessibleRole() == AccessibleRole::DOCUMENT_PRESENTATION || + xParentContext->getAccessibleRole() == AccessibleRole::DOCUMENT_SPREADSHEET || + xParentContext->getAccessibleRole() == AccessibleRole::DOCUMENT_TEXT )//Document { Reference< XAccessibleGroupPosition > xGroupPosition( xParent,uno::UNO_QUERY ); if ( xGroupPosition.is() ) diff --git a/sw/source/core/access/acccontext.cxx b/sw/source/core/access/acccontext.cxx index 44af38c64875..a2cd3fc46e75 100644 --- a/sw/source/core/access/acccontext.cxx +++ b/sw/source/core/access/acccontext.cxx @@ -548,7 +548,7 @@ sal_Int32 SAL_CALL SwAccessibleContext::getAccessibleChildCount( void ) CHECK_FOR_DEFUNC( XAccessibleContext ) //Notify the frame is a document - if( nRole == AccessibleRole::DOCUMENT ) + if( nRole == AccessibleRole::DOCUMENT_TEXT ) bIsAccDocUse = sal_True; return bDisposing ? 0 : GetChildCount( *(GetMap()) ); @@ -563,7 +563,7 @@ uno::Reference< XAccessible> SAL_CALL CHECK_FOR_DEFUNC( XAccessibleContext ) //Notify the frame is a document - if( nRole == AccessibleRole::DOCUMENT ) + if( nRole == AccessibleRole::DOCUMENT_TEXT ) bIsAccDocUse = sal_True; const SwAccessibleChild aChild( GetChild( *(GetMap()), nIndex ) ); @@ -582,7 +582,7 @@ uno::Reference< XAccessible> SAL_CALL ::rtl::Reference < SwAccessibleContext > xChildImpl( GetMap()->GetContextImpl( aChild.GetSwFrm(), !bDisposing ) ); //Send out accessible event when begin load. - if( bBeginDocumentLoad && nRole == AccessibleRole::DOCUMENT ) + if( bBeginDocumentLoad && nRole == AccessibleRole::DOCUMENT_TEXT ) { FireStateChangedEvent( AccessibleStateType::FOCUSABLE,sal_True ); diff --git a/sw/source/core/access/accdoc.cxx b/sw/source/core/access/accdoc.cxx index 646bc4db54da..643a1fc116cc 100644 --- a/sw/source/core/access/accdoc.cxx +++ b/sw/source/core/access/accdoc.cxx @@ -72,7 +72,7 @@ using lang::IndexOutOfBoundsException; // SwAccessiblePreview SwAccessibleDocumentBase::SwAccessibleDocumentBase ( SwAccessibleMap *_pMap ) : - SwAccessibleContext( _pMap, AccessibleRole::DOCUMENT, + SwAccessibleContext( _pMap, AccessibleRole::DOCUMENT_TEXT, _pMap->GetShell()->GetLayout() ), mxParent( _pMap->GetShell()->GetWin()->GetAccessibleParentWindow()->GetAccessible() ), mpChildWin( 0 ) diff --git a/vcl/osx/a11yrolehelper.mm b/vcl/osx/a11yrolehelper.mm index 2940a4b2f7aa..ae2391fd83d2 100644 --- a/vcl/osx/a11yrolehelper.mm +++ b/vcl/osx/a11yrolehelper.mm @@ -122,6 +122,10 @@ using namespace ::com::sun::star::uno; MAP( AccessibleRole::TREE_ITEM, NSAccessibilityUnknownRole ); MAP( AccessibleRole::TREE_TABLE, NSAccessibilityUnknownRole ); + MAP( AccessibleRole::DOCUMENT_PRESENTATION, NSAccessibilityGroupRole ); + MAP( AccessibleRole::DOCUMENT_SPREADSHEET, NSAccessibilityGroupRole ); + MAP( AccessibleRole::DOCUMENT_TEXT, NSAccessibilityGroupRole ); + #undef MAP default: break; @@ -249,6 +253,10 @@ using namespace ::com::sun::star::uno; MAP( AccessibleRole::TREE_ITEM, @"" ); MAP( AccessibleRole::TREE_TABLE, @"" ); + MAP( AccessibleRole::DOCUMENT_PRESENTATION, @"" ); + MAP( AccessibleRole::DOCUMENT_SPREADSHEET, @"" ); + MAP( AccessibleRole::DOCUMENT_TEXT, @"" ); + #undef MAP default: break; diff --git a/vcl/unx/gtk/a11y/atkwrapper.cxx b/vcl/unx/gtk/a11y/atkwrapper.cxx index a03729eaaf98..5b5a446e0598 100644 --- a/vcl/unx/gtk/a11y/atkwrapper.cxx +++ b/vcl/unx/gtk/a11y/atkwrapper.cxx @@ -270,7 +270,10 @@ static AtkRole mapToAtkRole( sal_Int16 nRole ) ATK_ROLE_UNKNOWN, // TREE_ITEM - registered below ATK_ROLE_TREE_TABLE, ATK_ROLE_SCROLL_PANE, // COMMENT - mapped to atk_role_scroll_pane - ATK_ROLE_UNKNOWN // COMMENT_END - mapped to atk_role_unknown + ATK_ROLE_UNKNOWN, // COMMENT_END - mapped to atk_role_unknown + ATK_ROLE_DOCUMENT_PRESENTATION, + ATK_ROLE_DOCUMENT_SPREADSHEET, + ATK_ROLE_DOCUMENT_TEXT }; static bool initialized = false; diff --git a/winaccessibility/source/UAccCOM/MAccessible.cxx b/winaccessibility/source/UAccCOM/MAccessible.cxx index 4a1e3331b22c..e5c5eb09bc03 100644 --- a/winaccessibility/source/UAccCOM/MAccessible.cxx +++ b/winaccessibility/source/UAccCOM/MAccessible.cxx @@ -1965,7 +1965,8 @@ STDMETHODIMP CMAccessible:: get_groupPosition(long __RPC_FAR *groupLevel,long __ *similarItemsInGroup = 0; *positionInGroup = 0; - if (Role != AccessibleRole::DOCUMENT) + if (Role != AccessibleRole::DOCUMENT && Role != AccessibleRole::DOCUMENT_PRESENTATION && + Role != AccessibleRole::DOCUMENT_SPREADSHEET && Role != AccessibleRole::DOCUMENT_TEXT) { Reference< XAccessibleGroupPosition > xGroupPosition( pRContext, UNO_QUERY ); if ( xGroupPosition.is() ) diff --git a/winaccessibility/source/service/AccObjectWinManager.cxx b/winaccessibility/source/service/AccObjectWinManager.cxx index dc87c451db4e..32c155e87977 100644 --- a/winaccessibility/source/service/AccObjectWinManager.cxx +++ b/winaccessibility/source/service/AccObjectWinManager.cxx @@ -601,7 +601,10 @@ sal_Bool AccObjectWinManager::InsertChildrenAccObj( com::sun::star::accessibilit short role = pRContext->getAccessibleRole(); - if(com::sun::star::accessibility::AccessibleRole::DOCUMENT == role ) + if(com::sun::star::accessibility::AccessibleRole::DOCUMENT == role || + com::sun::star::accessibility::AccessibleRole::DOCUMENT_PRESENTATION == role || + com::sun::star::accessibility::AccessibleRole::DOCUMENT_SPREADSHEET == role || + com::sun::star::accessibility::AccessibleRole::DOCUMENT_TEXT == role) { if(IsStateManageDescendant(pXAcc)) { diff --git a/winaccessibility/source/service/AccTopWindowListener.cxx b/winaccessibility/source/service/AccTopWindowListener.cxx index db87f23f0bf5..df30a1a4dcd1 100644 --- a/winaccessibility/source/service/AccTopWindowListener.cxx +++ b/winaccessibility/source/service/AccTopWindowListener.cxx @@ -156,7 +156,10 @@ void AccTopWindowListener::AddAllListeners(com::sun::star::accessibility::XAcces short role = pAccessibleContext->getAccessibleRole(); - if(com::sun::star::accessibility::AccessibleRole::DOCUMENT == role ) + if(com::sun::star::accessibility::AccessibleRole::DOCUMENT == role || + com::sun::star::accessibility::AccessibleRole::DOCUMENT_PRESENTATION == role || + com::sun::star::accessibility::AccessibleRole::DOCUMENT_SPREADSHEET == role || + com::sun::star::accessibility::AccessibleRole::DOCUMENT_TEXT == role) { if(accManagerAgent.IsStateManageDescendant(pAccessible)) { |