diff options
author | Joachim Lingner <jl@openoffice.org> | 2002-10-24 06:54:36 +0000 |
---|---|---|
committer | Joachim Lingner <jl@openoffice.org> | 2002-10-24 06:54:36 +0000 |
commit | aa8e62d33f59eab4f1ab3ea5dc9e72f88a8b8003 (patch) | |
tree | 903d7d67570f34fdffe9bc7c0d9c67dba0dfa58d /sj2/source | |
parent | fca16be46aa5c42e9f8011f75d44e6c55e1b556b (diff) |
#103676# make sure that applets destroy itself before the container window is destroyed
Diffstat (limited to 'sj2/source')
-rw-r--r-- | sj2/source/jscpp/sjapplet_impl.cxx | 18 |
1 files changed, 12 insertions, 6 deletions
diff --git a/sj2/source/jscpp/sjapplet_impl.cxx b/sj2/source/jscpp/sjapplet_impl.cxx index f9777f9e9313..6fcc53ae300f 100644 --- a/sj2/source/jscpp/sjapplet_impl.cxx +++ b/sj2/source/jscpp/sjapplet_impl.cxx @@ -2,9 +2,9 @@ * * $RCSfile: sjapplet_impl.cxx,v $ * - * $Revision: 1.11 $ + * $Revision: 1.12 $ * - * last change: $Author: jl $ $Date: 2002-03-21 12:16:02 $ + * last change: $Author: jl $ $Date: 2002-10-24 07:54:36 $ * * The Contents of this file are made available subject to the terms of * either of the following licenses @@ -226,11 +226,11 @@ SjApplet2_Impl::~SjApplet2_Impl() throw() { if (_joAppletExecutionContext) { TKTThreadAttach jenv(_pJVM, _xJavaThreadRegister_11.get()); - _pEmbeddedWindow->dispose(jenv.pEnv); - delete _pEmbeddedWindow; + _pEmbeddedWindow->dispose(jenv.pEnv); + delete _pEmbeddedWindow; - jenv.pEnv->DeleteGlobalRef(_joAppletExecutionContext); - jenv.pEnv->DeleteGlobalRef(_jcAppletExecutionContext); + jenv.pEnv->DeleteGlobalRef(_joAppletExecutionContext); + jenv.pEnv->DeleteGlobalRef(_jcAppletExecutionContext); } } @@ -340,6 +340,7 @@ void SjApplet2_Impl::init(Window * pParentWin, joDocBase, joParameters, _pEmbeddedWindow->_joWindow, (jlong)0); testJavaException(jenv.pEnv); jenv.pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_init); testJavaException(jenv.pEnv); jenv.pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_startUp); testJavaException(jenv.pEnv); + } void SjApplet2_Impl::setSize(const Size & rSize) throw(com::sun::star::uno::RuntimeException) @@ -392,6 +393,11 @@ void SjApplet2_Impl::close() throw(com::sun::star::uno::RuntimeException) jmethodID jmAppletExecutionContext_shutdown = jenv.pEnv->GetMethodID(_jcAppletExecutionContext, "shutdown", "()V"); testJavaException(jenv.pEnv); jenv.pEnv->CallVoidMethod(_joAppletExecutionContext, jmAppletExecutionContext_shutdown); testJavaException(jenv.pEnv); + jmethodID jmWaitForDispose= jenv.pEnv->GetMethodID(_jcAppletExecutionContext,"waitForDispose","()V"); + testJavaException(jenv.pEnv); + //blocks until the applet has destroyed itself and the container was disposed (stardiv.applet.AppletExecutionContext.dispose) + jenv.pEnv->CallVoidMethod(_joAppletExecutionContext, jmWaitForDispose); + if( _pParentWin ) { WorkWindow* pAppWin = Application::GetAppWindow(); |