summaryrefslogtreecommitdiff
path: root/framework/source/services
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2006-02-17 17:11:25 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2006-02-17 17:11:25 +0000
commit3b2565443296cac026ef0b13b96b88b572445c9b (patch)
treeed3dbb1aeef88adb893968798fcf5bd8307f55f7 /framework/source/services
parent174f6becce23afc1809c339810f694d7c578bd3e (diff)
#i62088#: fix transaction count
Diffstat (limited to 'framework/source/services')
-rw-r--r--framework/source/services/frame.cxx25
1 files changed, 18 insertions, 7 deletions
diff --git a/framework/source/services/frame.cxx b/framework/source/services/frame.cxx
index 2341a40aff73..0db6419aa8e3 100644
--- a/framework/source/services/frame.cxx
+++ b/framework/source/services/frame.cxx
@@ -4,9 +4,9 @@
*
* $RCSfile: frame.cxx,v $
*
- * $Revision: 1.90 $
+ * $Revision: 1.91 $
*
- * last change: $Author: rt $ $Date: 2006-02-10 09:57:41 $
+ * last change: $Author: hr $ $Date: 2006-02-17 18:11:25 $
*
* The Contents of this file are made available subject to
* the terms of GNU Lesser General Public License Version 2.1.
@@ -2312,11 +2312,18 @@ void SAL_CALL Frame::windowDeactivated( const css::lang::EventObject& aEvent ) t
//*****************************************************************************************************************
void SAL_CALL Frame::windowClosing( const css::lang::EventObject& aEvent ) throw( css::uno::RuntimeException )
{
- // Look for rejected calls.
- TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS );
-
- // deactivate this frame ...
- deactivate();
+ /* #i62088#
+ Some interceptor objects intercept our "internaly asynchronoues implemented" dispatch call.
+ And they close this frame directly (means synchronous then).
+ Means: Frame::windowClosing()->Frame::close()
+ In such situation its not a good idea to hold this transaction count alive .-)
+ */
+ {
+ // Look for rejected calls.
+ TransactionGuard aTransaction( m_aTransactionManager, E_HARDEXCEPTIONS );
+ // deactivate this frame ...
+ deactivate();
+ }
// ... and try to close it
// But do it asynchron inside the main thread.
@@ -2342,6 +2349,10 @@ void SAL_CALL Frame::windowClosing( const css::lang::EventObject& aEvent ) throw
css::uno::Reference< css::frame::XDispatch > xCloser = queryDispatch(aURL, SPECIALTARGET_TOP, 0);
if (xCloser.is())
xCloser->dispatch(aURL, css::uno::Sequence< css::beans::PropertyValue >());
+
+ // Attention: If this dispatch works synchronous ... and full fill its job ...
+ // this line of code will never be reached ...
+ // Or if it will be reached it will be for sure that all your member are gone .-)
}
/*-****************************************************************************************************//**