From efb23f29983f87104a684e7fab00b84fc59d131d Mon Sep 17 00:00:00 2001 From: Steve Yin Date: Mon, 25 Nov 2013 15:24:55 +0000 Subject: Integrate branch of IAccessible2 (cherry picked from commit e2f90c93c97f3cf137c348ed302c6470f398aa70) Change-Id: I44ce0d69f3e7364038b00b1ba0f0d27e60132a37 WaE: Prevent uninitialized variable warnings. (cherry picked from commit b989f4074ea70729d527b307bfbe49e01a0d3646) --- .../accessibility/extended/accessiblelistbox.hxx | 19 ++++++++++++- .../extended/accessiblelistboxentry.hxx | 31 +++++++++++++++++++--- .../extended/accessibletablistboxtable.hxx | 2 ++ .../extended/textwindowaccessibility.hxx | 9 +++++++ .../accessibility/helper/IComboListBoxHelper.hxx | 1 + .../inc/accessibility/helper/accessiblestrings.hrc | 13 ++++++++- .../inc/accessibility/helper/listboxhelper.hxx | 5 ++++ .../standard/accessiblemenubasecomponent.hxx | 2 ++ .../standard/accessiblemenuitemcomponent.hxx | 2 ++ .../accessibility/standard/vclxaccessiblebox.hxx | 22 +++++++++++++-- .../accessibility/standard/vclxaccessiblelist.hxx | 12 +++++++-- .../standard/vclxaccessiblelistitem.hxx | 5 ++-- .../accessibility/standard/vclxaccessiblemenu.hxx | 3 +++ .../standard/vclxaccessiblescrollbar.hxx | 4 +++ 14 files changed, 119 insertions(+), 11 deletions(-) (limited to 'accessibility/inc') diff --git a/accessibility/inc/accessibility/extended/accessiblelistbox.hxx b/accessibility/inc/accessibility/extended/accessiblelistbox.hxx index 33147add2197..9354e48511a9 100644 --- a/accessibility/inc/accessibility/extended/accessiblelistbox.hxx +++ b/accessibility/inc/accessibility/extended/accessiblelistbox.hxx @@ -26,14 +26,16 @@ #include #include +#include // class AccessibleListBox ----------------------------------------------- class SvTreeListBox; - +class SvTreeListEntry; //........................................................................ namespace accessibility { + class AccessibleListBoxEntry; //........................................................................ typedef ::cppu::ImplHelper2< ::com::sun::star::accessibility::XAccessible @@ -62,6 +64,8 @@ namespace accessibility SvTreeListBox* getListBox() const; + void RemoveChildEntries(SvTreeListEntry*); + public: /** OAccessibleBase needs a valid view @param _rListBox @@ -107,6 +111,19 @@ namespace accessibility sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + + // IA2 CWS + sal_Int32 SAL_CALL getRoleType(); + +private: + + typedef std::map< SvTreeListEntry*, ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > > MAP_ENTRY; + MAP_ENTRY m_mapEntry; + + ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xFocusedChild; + + accessibility::AccessibleListBoxEntry* GetCurEventEntry( const VclWindowEvent& rVclWindowEvent ); + }; //........................................................................ diff --git a/accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx b/accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx index 0ff3de306e6c..4eff637f39ab 100644 --- a/accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx +++ b/accessibility/inc/accessibility/extended/accessiblelistboxentry.hxx @@ -31,9 +31,11 @@ #include #include #include -#include +#include +#include #include #include +#include #include #include "accessibility/extended/listboxaccessible.hxx" @@ -55,7 +57,7 @@ namespace accessibility //........................................................................ // class AccessibleListBoxEntry ------------------------------------------ - +/* typedef ::cppu::WeakAggComponentImplHelper8< ::com::sun::star::accessibility::XAccessible , ::com::sun::star::accessibility::XAccessibleContext , ::com::sun::star::accessibility::XAccessibleComponent @@ -64,6 +66,16 @@ namespace accessibility , ::com::sun::star::accessibility::XAccessibleSelection , ::com::sun::star::accessibility::XAccessibleText , ::com::sun::star::lang::XServiceInfo > AccessibleListBoxEntry_BASE; +*/ + typedef ::cppu::WeakAggComponentImplHelper9< ::com::sun::star::accessibility::XAccessible + , ::com::sun::star::accessibility::XAccessibleContext + , ::com::sun::star::accessibility::XAccessibleComponent + , ::com::sun::star::accessibility::XAccessibleEventBroadcaster + , ::com::sun::star::accessibility::XAccessibleAction + , ::com::sun::star::accessibility::XAccessibleSelection + , ::com::sun::star::accessibility::XAccessibleText + , ::com::sun::star::accessibility::XAccessibleValue + , ::com::sun::star::lang::XServiceInfo > AccessibleListBoxEntry_BASE; /** the class AccessibleListBoxEntry represents the class for an accessible object of a listbox entry */ class AccessibleListBoxEntry:public ::comphelper::OBaseMutex @@ -76,6 +88,8 @@ namespace accessibility private: /** The treelistbox control */ ::std::deque< sal_Int32 > m_aEntryPath; + SvTreeListEntry* m_pSvLBoxEntry; // Needed for a11y focused item... + protected: /// client id in the AccessibleEventNotifier queue @@ -94,6 +108,8 @@ namespace accessibility Rectangle GetBoundingBoxOnScreen() throw ( ::com::sun::star::lang::DisposedException ); void EnsureIsAlive() const throw ( ::com::sun::star::lang::DisposedException ); + void NotifyAccessibleEvent( sal_Int16 _nEventId, const ::com::sun::star::uno::Any& _aOldValue, const ::com::sun::star::uno::Any& _aNewValue ); + protected: virtual ~AccessibleListBoxEntry(); @@ -122,6 +138,9 @@ namespace accessibility const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent ); + SvTreeListEntry* GetSvLBoxEntry() const { return m_pSvLBoxEntry; } + + protected: // XTypeProvider virtual ::com::sun::star::uno::Sequence< sal_Int8 > SAL_CALL getImplementationId() throw (::com::sun::star::uno::RuntimeException); @@ -199,9 +218,15 @@ namespace accessibility sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); - + virtual ::com::sun::star::uno::Any SAL_CALL getCurrentValue( ) throw (::com::sun::star::uno::RuntimeException); + virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue( ) throw (::com::sun::star::uno::RuntimeException); private: ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > implGetParentAccessible( ) const; + SvTreeListEntry* GetRealChild(sal_Int32 nIndex); + public: + sal_Int32 SAL_CALL getRoleType(); }; //........................................................................ diff --git a/accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx b/accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx index 7b84ceab410b..7d97b77bcfc7 100644 --- a/accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx +++ b/accessibility/inc/accessibility/extended/accessibletablistboxtable.hxx @@ -39,6 +39,8 @@ class AccessibleTabListBoxTable : public AccessibleBrowseBoxTable, public Access private: SvHeaderTabListBox* m_pTabListBox; + ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > m_xCurChild; + void ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ); DECL_LINK( WindowEventListener, VclSimpleEvent* ); diff --git a/accessibility/inc/accessibility/extended/textwindowaccessibility.hxx b/accessibility/inc/accessibility/extended/textwindowaccessibility.hxx index b707c8c179ad..a4d4ec708887 100644 --- a/accessibility/inc/accessibility/extended/textwindowaccessibility.hxx +++ b/accessibility/inc/accessibility/extended/textwindowaccessibility.hxx @@ -48,6 +48,10 @@ #include #include +#include "svtools/svtools.hrc" +#include +#include +#include #include #include #include @@ -571,6 +575,9 @@ private: SAL_CALL getAccessibleAtPoint(css::awt::Point const & rPoint) throw (css::uno::RuntimeException); + virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet ); + virtual void FillAccessibleRelationSet( utl::AccessibleRelationSetHelper& rRelationSet ); + // ??? Will be called with both the external (Solar) and internal mutex // locked: virtual void SAL_CALL disposing(); @@ -622,6 +629,8 @@ private: void handleSelectionChangeNotification(); void notifySelectionChange( sal_Int32 nFirst, sal_Int32 nLast ); + ::sal_Int32 getSelectionType(::sal_Int32 nNewFirstPara, ::sal_Int32 nNewFirstPos, ::sal_Int32 nNewLastPara, ::sal_Int32 nNewLastPos); + void sendEvent(::sal_Int32 start, ::sal_Int32 end, ::sal_Int16 nEventId); void justifySelection( TextPaM& rTextStart, TextPaM& rTextEnd ); diff --git a/accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx b/accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx index 357166c27a7b..a4a88e6c194a 100644 --- a/accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx +++ b/accessibility/inc/accessibility/helper/IComboListBoxHelper.hxx @@ -43,6 +43,7 @@ namespace accessibility virtual Rectangle GetBoundingRectangle( sal_uInt16 nItem ) const = 0; virtual Rectangle GetWindowExtentsRelative( Window* pRelativeWindow ) = 0; virtual bool IsActive() const = 0; + virtual bool IsEnabled() const = 0; virtual bool IsEntryVisible( sal_uInt16 nPos ) const = 0; virtual sal_uInt16 GetDisplayLineCount() const = 0; virtual void GetMaxVisColumnsAndLines( sal_uInt16& rnCols, sal_uInt16& rnLines ) const = 0; diff --git a/accessibility/inc/accessibility/helper/accessiblestrings.hrc b/accessibility/inc/accessibility/helper/accessiblestrings.hrc index 4df9a814e8b4..03815d8dd3c0 100644 --- a/accessibility/inc/accessibility/helper/accessiblestrings.hrc +++ b/accessibility/inc/accessibility/helper/accessiblestrings.hrc @@ -35,7 +35,18 @@ #define RID_STR_ACC_ACTION_DECLINE ( RID_TK_ACC_START + 4 ) #define RID_STR_ACC_ACTION_INCBLOCK ( RID_TK_ACC_START + 5 ) #define RID_STR_ACC_ACTION_DECBLOCK ( RID_TK_ACC_START + 6 ) - +#define RID_STR_ACC_NAME_PREVIEW ( RID_TK_ACC_START + 7 ) + +#define STR_SVT_ACC_ACTION_EXPAND ( RID_TK_ACC_START + 8 ) +#define STR_SVT_ACC_ACTION_COLLAPSE ( RID_TK_ACC_START + 9 ) +#define STR_SVT_ACC_LISTENTRY_SELCTED_STATE ( RID_TK_ACC_START + 10 ) + +#define RID_STR_ACC_ACTION_CHECK ( RID_TK_ACC_START + 11 ) +#define RID_STR_ACC_ACTION_UNCHECK ( RID_TK_ACC_START + 12 ) +#define RID_STR_ACC_ACTION_DOUBLE_CLICK ( RID_TK_ACC_START + 13 ) +#define RID_STR_ACC_SCROLLBAR_NAME_VERTICAL ( RID_TK_ACC_START + 14 ) +#define RID_STR_ACC_SCROLLBAR_NAME_HORIZONTAL ( RID_TK_ACC_START + 15 ) +#define RID_STR_ACC_PANEL_DESCRIPTION ( RID_TK_ACC_START + 16 ) #define RID_STR_ACC_NAME_BROWSEBUTTON ( RID_TK_ACC_START + 100 ) #define RID_STR_ACC_DESC_PANELDECL_TABBAR ( RID_TK_ACC_START + 101 ) diff --git a/accessibility/inc/accessibility/helper/listboxhelper.hxx b/accessibility/inc/accessibility/helper/listboxhelper.hxx index 8da885dd7e76..f42bc266bba0 100644 --- a/accessibility/inc/accessibility/helper/listboxhelper.hxx +++ b/accessibility/inc/accessibility/helper/listboxhelper.hxx @@ -86,6 +86,11 @@ public: return m_aComboListBox.IsActive(); } // ----------------------------------------------------------------------------- + virtual bool IsEnabled() const + { + return m_aComboListBox.IsEnabled(); + } + // ----------------------------------------------------------------------------- virtual bool IsEntryVisible( sal_uInt16 nPos ) const { sal_uInt16 nTopEntry = m_aComboListBox.GetTopEntry(); diff --git a/accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx b/accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx index fbc1a62892e6..e9e745a46c2f 100644 --- a/accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx +++ b/accessibility/inc/accessibility/standard/accessiblemenubasecomponent.hxx @@ -103,6 +103,8 @@ protected: virtual sal_Bool IsHighlighted(); sal_Bool IsChildHighlighted(); + virtual sal_Bool IsMenuHideDisabledEntries(); + void SelectChild( sal_Int32 i ); void DeSelectAll(); sal_Bool IsChildSelected( sal_Int32 i ); diff --git a/accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx b/accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx index b70b537e22fa..830532af5de3 100644 --- a/accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx +++ b/accessibility/inc/accessibility/standard/accessiblemenuitemcomponent.hxx @@ -49,6 +49,8 @@ protected: void SetItemText( const OUString& sItemText ); OUString GetItemText(); + virtual sal_Bool IsMenuHideDisabledEntries(); + virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet ); // OCommonAccessibleComponent diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx index 9b8e37f92efc..9e6cfa89daa0 100644 --- a/accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx +++ b/accessibility/inc/accessibility/standard/vclxaccessiblebox.hxx @@ -24,11 +24,13 @@ #include #include #include -#include +#include +#include -typedef ::cppu::ImplHelper2< +typedef ::cppu::ImplHelper3< ::com::sun::star::accessibility::XAccessible, + ::com::sun::star::accessibility::XAccessibleValue, ::com::sun::star::accessibility::XAccessibleAction > VCLXAccessibleBox_BASE; @@ -121,7 +123,22 @@ public: */ virtual void SAL_CALL disposing (void); + //===== XAccessibleValue ================================================ + virtual ::com::sun::star::uno::Any SAL_CALL getCurrentValue( ) + throw (::com::sun::star::uno::RuntimeException); + + virtual sal_Bool SAL_CALL setCurrentValue( + const ::com::sun::star::uno::Any& aNumber ) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue( ) + throw (::com::sun::star::uno::RuntimeException); + + virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue( ) + throw (::com::sun::star::uno::RuntimeException); + bool IsDropDownBox() {return m_bIsDropDownBox;}; + BoxType GetBoxType() { return m_aBoxType;}; protected: /** Specifies whether the box is a combo box or a list box. List boxes have multi selection. @@ -162,6 +179,7 @@ protected: virtual void ProcessWindowChildEvent (const VclWindowEvent& rVclWindowEvent); virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent); + virtual void FillAccessibleStateSet( utl::AccessibleStateSetHelper& rStateSet ); private: /// Index in parent. This is settable from the outside. diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx index 29a8f100fc2f..ba0f2b7b5331 100644 --- a/accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx +++ b/accessibility/inc/accessibility/standard/vclxaccessiblelist.hxx @@ -68,6 +68,7 @@ public: /** Process some of the events and delegate the rest to the base classes. */ virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent); + virtual void FillAccessibleRelationSet( utl::AccessibleRelationSetHelper& rRelationSet ); /** Called on reception of selection events this method checks all known list items for a possible change in their selection state and @@ -135,7 +136,14 @@ public: virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::awt::Point SAL_CALL getLocationOnScreen( ) throw (::com::sun::star::uno::RuntimeException); - + sal_Bool IsInDropDown(); + void HandleDropOpen(); + virtual void ProcessWindowEvent (const VclWindowEvent& rVclWindowEvent, bool b_IsDropDownList); + void UpdateSelection_Acc (::rtl::OUString sTextOfSelectedItem, bool b_IsDropDownList); + void UpdateSelection_Impl_Acc (bool b_IsDropDownList); + + void UpdateFocus_Impl_Acc ( sal_uInt16 nPos, bool b_IsDropDownList) ; + void NotifyListItem(::com::sun::star::uno::Any& val); protected: BoxType m_aBoxType; ::accessibility::IComboListBoxHelper* m_pListBoxHelper; @@ -147,7 +155,7 @@ protected: sal_uInt16 m_nLastSelectedPos; bool m_bDisableProcessEvent; bool m_bVisible; - + sal_uInt16 m_nCurSelectedPos; /// The currently selected item. diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx index 885d3e48fdc7..1bd28d7ad864 100644 --- a/accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx +++ b/accessibility/inc/accessibility/standard/vclxaccessiblelistitem.hxx @@ -83,9 +83,9 @@ private: @param _aNewValue is the new value */ - void NotifyAccessibleEvent( sal_Int16 _nEventId, + /*void NotifyAccessibleEvent( sal_Int16 _nEventId, const ::com::sun::star::uno::Any& _aOldValue, - const ::com::sun::star::uno::Any& _aNewValue ); + const ::com::sun::star::uno::Any& _aNewValue );*/ protected: virtual ~VCLXAccessibleListItem(); @@ -111,6 +111,7 @@ public: sal_Int32 _nIndexInParent, const ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible >& _xParent ); + void NotifyAccessibleEvent( sal_Int16 _nEventId, const ::com::sun::star::uno::Any& _aOldValue, const ::com::sun::star::uno::Any& _aNewValue ); inline sal_Bool IsSelected() const { return m_bSelected; } void SetSelected( sal_Bool _bSelected ); diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx index 5f1bc4b9b6eb..9e017ecaa01a 100644 --- a/accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx +++ b/accessibility/inc/accessibility/standard/vclxaccessiblemenu.hxx @@ -70,6 +70,9 @@ public: virtual sal_Int32 SAL_CALL getSelectedAccessibleChildCount( ) throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > SAL_CALL getSelectedAccessibleChild( sal_Int32 nSelectedChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); virtual void SAL_CALL deselectAccessibleChild( sal_Int32 nChildIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); + + // XAccessibleAction + virtual ::rtl::OUString SAL_CALL getAccessibleActionDescription ( sal_Int32 nIndex ) throw (::com::sun::star::lang::IndexOutOfBoundsException, ::com::sun::star::uno::RuntimeException); }; #endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLEMENU_HXX diff --git a/accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx b/accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx index f8396a30f039..f26ef23da7bd 100644 --- a/accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx +++ b/accessibility/inc/accessibility/standard/vclxaccessiblescrollbar.hxx @@ -69,6 +69,10 @@ public: virtual sal_Bool SAL_CALL setCurrentValue( const ::com::sun::star::uno::Any& aNumber ) throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Any SAL_CALL getMaximumValue( ) throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::uno::Any SAL_CALL getMinimumValue( ) throw (::com::sun::star::uno::RuntimeException); + + // XAccessibleContext + ::rtl::OUString SAL_CALL getAccessibleName( ) throw (::com::sun::star::uno::RuntimeException); + }; #endif // ACCESSIBILITY_STANDARD_VCLXACCESSIBLESCROLLBAR_HXX -- cgit