diff options
author | Kohei Yoshida <kyoshida@novell.com> | 2010-05-11 20:59:39 +0200 |
---|---|---|
committer | Kohei Yoshida <kyoshida@novell.com> | 2010-05-11 20:59:39 +0200 |
commit | dd6754a0393e4db9f2326e16e8648d3298e7d2e9 (patch) | |
tree | 00bd53a42cb4cdba1166d700576717a935e7e24e /accessibility/source | |
parent | 9c4df49eee1b7e4da71715e962400469d43ed5a6 (diff) | |
parent | 14a6186576146ba795e663fd44be45fd60404c93 (diff) |
rebased to DEV300_m77.
Diffstat (limited to 'accessibility/source')
-rw-r--r-- | accessibility/source/extended/makefile.mk | 3 | ||||
-rw-r--r-- | accessibility/source/helper/acc_factory.cxx | 2 | ||||
-rw-r--r-- | accessibility/source/standard/vclxaccessibleedit.cxx | 52 |
3 files changed, 28 insertions, 29 deletions
diff --git a/accessibility/source/extended/makefile.mk b/accessibility/source/extended/makefile.mk index bafd2b40c334..446ec73ec1b7 100644 --- a/accessibility/source/extended/makefile.mk +++ b/accessibility/source/extended/makefile.mk @@ -37,6 +37,9 @@ ENABLE_EXCEPTIONS=TRUE .INCLUDE : settings.mk # --- Files -------------------------------------------------------- +.IF "$(OS)$(COM)"=="SOLARISI" +NOOPTFILES=$(SLO)$/accessibletabbarpagelist.obj +.ENDIF # "$(OS)$(COM)"=="SOLARISI" SLOFILES=\ $(SLO)$/AccessibleBrowseBoxCheckBoxCell.obj \ diff --git a/accessibility/source/helper/acc_factory.cxx b/accessibility/source/helper/acc_factory.cxx index 8fe463d00c05..50d3ac682377 100644 --- a/accessibility/source/helper/acc_factory.cxx +++ b/accessibility/source/helper/acc_factory.cxx @@ -395,7 +395,7 @@ inline bool hasFloatingChild(Window *pWindow) else xContext = new FloatingWindowAccessible( _pXWindow ); } - else if ( nType == WINDOW_HELPTEXTWINDOW ) + else if ( ( nType == WINDOW_HELPTEXTWINDOW ) || ( nType == WINDOW_FIXEDLINE ) ) { xContext = (accessibility::XAccessibleContext*) new VCLXAccessibleFixedText( _pXWindow ); } diff --git a/accessibility/source/standard/vclxaccessibleedit.cxx b/accessibility/source/standard/vclxaccessibleedit.cxx index 0dd8376580ec..07378c0ea42f 100644 --- a/accessibility/source/standard/vclxaccessibleedit.cxx +++ b/accessibility/source/standard/vclxaccessibleedit.cxx @@ -67,6 +67,7 @@ using namespace ::comphelper; VCLXAccessibleEdit::VCLXAccessibleEdit( VCLXWindow* pVCLWindow ) :VCLXAccessibleTextComponent( pVCLWindow ) { + m_nSelectionStart = getSelectionStart(); m_nCaretPosition = getCaretPosition(); } @@ -78,22 +79,6 @@ VCLXAccessibleEdit::~VCLXAccessibleEdit() // ----------------------------------------------------------------------------- -void VCLXAccessibleEdit::UpdateCaretPosition() -{ - sal_Int32 nCaretPosition = getCaretPosition(); - - if ( m_nCaretPosition != nCaretPosition ) - { - Any aOldValue, aNewValue; - aOldValue <<= (sal_Int32) m_nCaretPosition; - aNewValue <<= (sal_Int32) nCaretPosition; - m_nCaretPosition = nCaretPosition; - NotifyAccessibleEvent( AccessibleEventId::CARET_CHANGED, aOldValue, aNewValue ); - } -} - -// ----------------------------------------------------------------------------- - void VCLXAccessibleEdit::ProcessWindowEvent( const VclWindowEvent& rVclWindowEvent ) { switch ( rVclWindowEvent.GetId() ) @@ -105,11 +90,31 @@ void VCLXAccessibleEdit::ProcessWindowEvent( const VclWindowEvent& rVclWindowEve break; case VCLEVENT_EDIT_SELECTIONCHANGED: { + sal_Int32 nOldCaretPosition = m_nCaretPosition; + sal_Int32 nOldSelectionStart = m_nSelectionStart; + + m_nCaretPosition = getCaretPosition(); + m_nSelectionStart = getSelectionStart(); + Window* pWindow = GetWindow(); if ( pWindow && pWindow->HasChildPathFocus() ) { - NotifyAccessibleEvent( AccessibleEventId::TEXT_SELECTION_CHANGED, Any(), Any() ); - UpdateCaretPosition(); + if ( m_nCaretPosition != nOldCaretPosition ) + { + Any aOldValue, aNewValue; + aOldValue <<= (sal_Int32) nOldCaretPosition; + aNewValue <<= (sal_Int32) m_nCaretPosition; + NotifyAccessibleEvent( AccessibleEventId::CARET_CHANGED, aOldValue, aNewValue ); + } + + // #i104470# VCL only has SELECTION_CHANGED, but UAA distinguishes between SELECTION_CHANGED and CARET_CHANGED + sal_Bool bHasSelection = ( m_nSelectionStart != m_nCaretPosition ); + sal_Bool bHadSelection = ( nOldSelectionStart != nOldCaretPosition ); + if ( ( bHasSelection != bHadSelection ) || ( bHasSelection && ( ( m_nCaretPosition != nOldCaretPosition ) || ( m_nSelectionStart != nOldSelectionStart ) ) ) ) + { + NotifyAccessibleEvent( AccessibleEventId::TEXT_SELECTION_CHANGED, Any(), Any() ); + } + } } break; @@ -305,22 +310,13 @@ Reference< XAccessibleKeyBinding > VCLXAccessibleEdit::getAccessibleActionKeyBin sal_Int32 VCLXAccessibleEdit::getCaretPosition( ) throw (RuntimeException) { - OExternalLockGuard aGuard( this ); - - awt::Selection aSelection; - VCLXEdit* pVCLXEdit = static_cast< VCLXEdit* >( GetVCLXWindow() ); - if ( pVCLXEdit ) - aSelection = pVCLXEdit->getSelection(); - - return aSelection.Max; + return getSelectionEnd(); } // ----------------------------------------------------------------------------- sal_Bool VCLXAccessibleEdit::setCaretPosition( sal_Int32 nIndex ) throw (IndexOutOfBoundsException, RuntimeException) { - OExternalLockGuard aGuard( this ); - return setSelection( nIndex, nIndex ); } |