[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