Author: hdu
Date: Mon Jun 30 12:19:13 2014
New Revision: 1606707
URL: http://svn.apache.org/r1606707
Log:
#i124970# fix DocumentFocusListener::notifyEvent's handling of
IndexOutOfBoundsException
the DocumentFocusListener::notifyEvent() throw list only allows a
RuntimeException to
propagate. The methods called in notifyEvent() allow IndexOutOfBoundsException
though,
so it must be handled in all cases to prevent C++ from invoking its
unexpected() abort
mechanisms. Ceterum censeo, non-empty throw lists should be removed
altogether...
Merged from trunk revision 1604709
Modified:
openoffice/branches/AOO410/ (props changed)
openoffice/branches/AOO410/main/ (props changed)
openoffice/branches/AOO410/main/vcl/aqua/source/a11y/documentfocuslistener.cxx
openoffice/branches/AOO410/main/vcl/unx/gtk/a11y/atkutil.cxx
Propchange: openoffice/branches/AOO410/
------------------------------------------------------------------------------
Merged /openoffice/trunk:r1604709
Propchange: openoffice/branches/AOO410/main/
------------------------------------------------------------------------------
Merged /openoffice/trunk/main:r1604709
Modified:
openoffice/branches/AOO410/main/vcl/aqua/source/a11y/documentfocuslistener.cxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/vcl/aqua/source/a11y/documentfocuslistener.cxx?rev=1606707&r1=1606706&r2=1606707&view=diff
==============================================================================
---
openoffice/branches/AOO410/main/vcl/aqua/source/a11y/documentfocuslistener.cxx
(original)
+++
openoffice/branches/AOO410/main/vcl/aqua/source/a11y/documentfocuslistener.cxx
Mon Jun 30 12:19:13 2014
@@ -65,10 +65,10 @@ void SAL_CALL
DocumentFocusListener::notifyEvent( const AccessibleEventObject& aEvent )
throw( RuntimeException )
{
- switch( aEvent.EventId )
- {
- case AccessibleEventId::STATE_CHANGED:
- try
+ try {
+ switch( aEvent.EventId )
+ {
+ case AccessibleEventId::STATE_CHANGED:
{
sal_Int16 nState = AccessibleStateType::INVALID;
aEvent.NewValue >>= nState;
@@ -76,34 +76,35 @@ DocumentFocusListener::notifyEvent( cons
if( AccessibleStateType::FOCUSED == nState )
m_aFocusTracker.setFocusedObject( getAccessible(aEvent) );
}
- catch(IndexOutOfBoundsException e)
- {
- OSL_TRACE("Focused object has invalid index in parent");
- }
break;
- case AccessibleEventId::CHILD:
- {
- Reference< XAccessible > xChild;
- if( (aEvent.OldValue >>= xChild) && xChild.is() )
- detachRecursive(xChild);
+ case AccessibleEventId::CHILD:
+ {
+ Reference< XAccessible > xChild;
+ if( (aEvent.OldValue >>= xChild) && xChild.is() )
+ detachRecursive(xChild);
- if( (aEvent.NewValue >>= xChild) && xChild.is() )
- attachRecursive(xChild);
- }
+ if( (aEvent.NewValue >>= xChild) && xChild.is() )
+ attachRecursive(xChild);
+ }
break;
- case AccessibleEventId::INVALIDATE_ALL_CHILDREN:
- {
- Reference< XAccessible > xAccessible( getAccessible(aEvent) );
- detachRecursive(xAccessible);
- attachRecursive(xAccessible);
- }
-
+ case AccessibleEventId::INVALIDATE_ALL_CHILDREN:
+ {
+ Reference< XAccessible > xAccessible( getAccessible(aEvent) );
+ detachRecursive(xAccessible);
+ attachRecursive(xAccessible);
+ }
OSL_TRACE( "Invalidate all children called\n" );
break;
- default:
- break;
+
+ default:
+ break;
+ }
+ }
+ catch(IndexOutOfBoundsException e)
+ {
+ OSL_TRACE("Focused object has invalid index in parent");
}
}
Modified: openoffice/branches/AOO410/main/vcl/unx/gtk/a11y/atkutil.cxx
URL:
http://svn.apache.org/viewvc/openoffice/branches/AOO410/main/vcl/unx/gtk/a11y/atkutil.cxx?rev=1606707&r1=1606706&r2=1606707&view=diff
==============================================================================
--- openoffice/branches/AOO410/main/vcl/unx/gtk/a11y/atkutil.cxx (original)
+++ openoffice/branches/AOO410/main/vcl/unx/gtk/a11y/atkutil.cxx Mon Jun 30
12:19:13 2014
@@ -202,10 +202,10 @@ void DocumentFocusListener::disposing( c
void DocumentFocusListener::notifyEvent( const
accessibility::AccessibleEventObject& aEvent )
throw( uno::RuntimeException )
{
- switch( aEvent.EventId )
- {
- case accessibility::AccessibleEventId::STATE_CHANGED:
- try
+ try {
+ switch( aEvent.EventId )
+ {
+ case accessibility::AccessibleEventId::STATE_CHANGED:
{
sal_Int16 nState = accessibility::AccessibleStateType::INVALID;
aEvent.NewValue >>= nState;
@@ -213,34 +213,36 @@ void DocumentFocusListener::notifyEvent(
if( accessibility::AccessibleStateType::FOCUSED == nState )
atk_wrapper_focus_tracker_notify_when_idle(
getAccessible(aEvent) );
}
- catch(const lang::IndexOutOfBoundsException &e)
- {
- g_warning("Focused object has invalid index in parent");
- }
break;
- case accessibility::AccessibleEventId::CHILD:
- {
- uno::Reference< accessibility::XAccessible > xChild;
- if( (aEvent.OldValue >>= xChild) && xChild.is() )
- detachRecursive(xChild);
+ case accessibility::AccessibleEventId::CHILD:
+ {
+ uno::Reference< accessibility::XAccessible > xChild;
+ if( (aEvent.OldValue >>= xChild) && xChild.is() )
+ detachRecursive(xChild);
- if( (aEvent.NewValue >>= xChild) && xChild.is() )
- attachRecursive(xChild);
- }
+ if( (aEvent.NewValue >>= xChild) && xChild.is() )
+ attachRecursive(xChild);
+ }
break;
- case accessibility::AccessibleEventId::INVALIDATE_ALL_CHILDREN:
+ case accessibility::AccessibleEventId::INVALIDATE_ALL_CHILDREN:
/* {
uno::Reference< accessibility::XAccessible > xAccessible(
getAccessible(aEvent) );
detachRecursive(xAccessible);
attachRecursive(xAccessible);
- }
+ }
*/
g_warning( "Invalidate all children called\n" );
break;
- default:
- break;
+
+ default:
+ break;
+ }
+ }
+ catch( const lang::IndexOutOfBoundsException& e )
+ {
+ g_warning("Focused object has invalid index in parent");
}
}