[Libreoffice-commits] core.git: vcl/osx vcl/unx
Herbert Dürr
hdu at apache.org
Mon Jun 23 01:57:24 PDT 2014
vcl/osx/documentfocuslistener.cxx | 51 +++++++++++++++++++-------------------
vcl/unx/gtk/a11y/atkutil.cxx | 40 +++++++++++++++--------------
2 files changed, 47 insertions(+), 44 deletions(-)
New commits:
commit 5232d01ee5afea97b80da39b082012ee4c1a1409
Author: Herbert Dürr <hdu at apache.org>
Date: Mon Jun 23 07:55:44 2014 +0000
Resolves: #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...
(cherry picked from commit 4da0e442f0fd4838e93e7316c24cfeef9289207d)
Conflicts:
vcl/osx/documentfocuslistener.cxx
vcl/unx/gtk/a11y/atkutil.cxx
Change-Id: Ie0b783832314ee5ec376a0c3c2cd67e4a70e218b
diff --git a/vcl/osx/documentfocuslistener.cxx b/vcl/osx/documentfocuslistener.cxx
index 9087003..ee1e1f4 100644
--- a/vcl/osx/documentfocuslistener.cxx
+++ b/vcl/osx/documentfocuslistener.cxx
@@ -48,10 +48,10 @@ void SAL_CALL
DocumentFocusListener::notifyEvent( const AccessibleEventObject& aEvent )
throw( RuntimeException, std::exception )
{
- switch( aEvent.EventId )
- {
- case AccessibleEventId::STATE_CHANGED:
- try
+ try {
+ switch( aEvent.EventId )
+ {
+ case AccessibleEventId::STATE_CHANGED:
{
sal_Int16 nState = AccessibleStateType::INVALID;
aEvent.NewValue >>= nState;
@@ -59,34 +59,35 @@ DocumentFocusListener::notifyEvent( const AccessibleEventObject& aEvent )
if( AccessibleStateType::FOCUSED == nState )
m_aFocusTracker.setFocusedObject( getAccessible(aEvent) );
}
- catch(const IndexOutOfBoundsException &)
+ break;
+
+ case AccessibleEventId::CHILD:
{
- OSL_TRACE("Focused object has invalid index in parent");
+ Reference< XAccessible > xChild;
+ if( (aEvent.OldValue >>= xChild) && xChild.is() )
+ detachRecursive(xChild);
+
+ if( (aEvent.NewValue >>= xChild) && xChild.is() )
+ attachRecursive(xChild);
}
break;
- case AccessibleEventId::CHILD:
- {
- Reference< XAccessible > xChild;
- if( (aEvent.OldValue >>= xChild) && xChild.is() )
- detachRecursive(xChild);
-
- if( (aEvent.NewValue >>= xChild) && xChild.is() )
- attachRecursive(xChild);
- }
+ case AccessibleEventId::INVALIDATE_ALL_CHILDREN:
+ {
+ Reference< XAccessible > xAccessible( getAccessible(aEvent) );
+ detachRecursive(xAccessible);
+ attachRecursive(xAccessible);
+ }
+ OSL_TRACE( "Invalidate all children called\n" );
break;
- case AccessibleEventId::INVALIDATE_ALL_CHILDREN:
- {
- Reference< XAccessible > xAccessible( getAccessible(aEvent) );
- detachRecursive(xAccessible);
- attachRecursive(xAccessible);
+ default:
+ break;
}
-
- OSL_TRACE( "Invalidate all children called" );
- break;
- default:
- break;
+ }
+ catch (const IndexOutOfBoundsException&)
+ {
+ OSL_TRACE("Focused object has invalid index in parent");
}
}
diff --git a/vcl/unx/gtk/a11y/atkutil.cxx b/vcl/unx/gtk/a11y/atkutil.cxx
index f662bbd..96990c9 100644
--- a/vcl/unx/gtk/a11y/atkutil.cxx
+++ b/vcl/unx/gtk/a11y/atkutil.cxx
@@ -204,10 +204,10 @@ void DocumentFocusListener::disposing( const lang::EventObject& aEvent )
void DocumentFocusListener::notifyEvent( const accessibility::AccessibleEventObject& aEvent )
throw( uno::RuntimeException, std::exception )
{
- 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;
@@ -215,28 +215,30 @@ void DocumentFocusListener::notifyEvent( const accessibility::AccessibleEventObj
if( accessibility::AccessibleStateType::FOCUSED == nState )
atk_wrapper_focus_tracker_notify_when_idle( getAccessible(aEvent) );
}
- catch (const lang::IndexOutOfBoundsException&)
- {
- 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:
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");
}
}
More information about the Libreoffice-commits
mailing list