summaryrefslogtreecommitdiff
path: root/sdext/source/minimizer/unodialog.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'sdext/source/minimizer/unodialog.cxx')
-rw-r--r--sdext/source/minimizer/unodialog.cxx32
1 files changed, 13 insertions, 19 deletions
diff --git a/sdext/source/minimizer/unodialog.cxx b/sdext/source/minimizer/unodialog.cxx
index a99240926614..878395e26ec3 100644
--- a/sdext/source/minimizer/unodialog.cxx
+++ b/sdext/source/minimizer/unodialog.cxx
@@ -19,6 +19,7 @@
#include "unodialog.hxx"
+
#include <com/sun/star/awt/MessageBoxButtons.hpp>
#include <com/sun/star/awt/Toolkit.hpp>
#include <com/sun/star/awt/UnoControlDialog.hpp>
@@ -56,17 +57,24 @@ UnoDialog::UnoDialog( const Reference< XComponentContext > &rxContext, Reference
Reference< XFrame > xFrame( mxController->getFrame() );
Reference< XWindow > xContainerWindow( xFrame->getContainerWindow() );
- mxWindowPeer.set( xContainerWindow, UNO_QUERY_THROW );
- createWindowPeer( mxWindowPeer );
-}
+ Reference< XWindowPeer > xWindowPeer( xContainerWindow, UNO_QUERY_THROW );
+
+ // set the main loop handle to update GUI while busy
+ Reference< XToolkit > xToolkit( Toolkit::create( mxContext ), UNO_QUERY_THROW );
+ mxReschedule.set( xToolkit, UNO_QUERY );
+ // allocate the real window resources
+ mxDialog->createPeer(xToolkit,
+ xWindowPeer.is() ? xWindowPeer : xToolkit->getDesktopWindow());
+}
UnoDialog::~UnoDialog()
{
-
+ // free the resources
+ Reference<XComponent> xDialogComponent(mxDialog, UNO_QUERY_THROW);
+ xDialogComponent->dispose();
}
-
void UnoDialog::execute()
{
mxDialog->setEnable( true );
@@ -80,20 +88,6 @@ void UnoDialog::endExecute( bool bStatus )
mxDialog->endExecute();
}
-
-Reference< XWindowPeer > UnoDialog::createWindowPeer( Reference< XWindowPeer > const & xParentPeer )
-{
- mxDialog->setVisible( false );
- Reference< XToolkit > xToolkit( Toolkit::create( mxContext ), UNO_QUERY_THROW );
- mxReschedule.set( xToolkit, UNO_QUERY );
- mxDialog->createPeer(
- xToolkit,
- xParentPeer.is() ? xParentPeer : xToolkit->getDesktopWindow());
-// xWindowPeer = xControl.getPeer();
- return mxDialog->getPeer();
-}
-
-
Reference< XInterface > UnoDialog::insertControlModel( const OUString& rServiceName, const OUString& rName,
const Sequence< OUString >& rPropertyNames, const Sequence< Any >& rPropertyValues )
{