[Libreoffice-commits] core.git: chart2/source sc/source sw/source vcl/source

Stephan Bergmann (via logerrit) logerrit at kemper.freedesktop.org
Tue Mar 3 04:53:29 UTC 2020


 chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx |   57 +----
 chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx     |   18 -
 sc/source/ui/drawfunc/fuins2.cxx                            |  132 +++++-------
 sc/source/ui/inc/fuinsert.hxx                               |   14 -
 sc/source/ui/inc/tabvwsh.hxx                                |    3 
 sc/source/ui/view/tabvwsh4.cxx                              |    1 
 sc/source/ui/view/tabvwshb.cxx                              |    2 
 sw/source/uibase/inc/chartins.hxx                           |    8 
 sw/source/uibase/inc/textsh.hxx                             |    3 
 sw/source/uibase/shells/textsh.cxx                          |   23 --
 sw/source/uibase/table/chartins.cxx                         |   32 +-
 vcl/source/control/wizardmachine.cxx                        |    3 
 12 files changed, 109 insertions(+), 187 deletions(-)

New commits:
commit e17224501e9f4f783d5be3f5aa9c7f6decd8a405
Author:     Stephan Bergmann <sbergman at redhat.com>
AuthorDate: Mon Mar 2 20:22:30 2020 +0100
Commit:     Stephan Bergmann <sbergman at redhat.com>
CommitDate: Tue Mar 3 05:52:55 2020 +0100

    Revert "Make Chart Creation Wizard async"
    
    This reverts commit ed86b6250cd00ed6b7bdb81307bc66adba129cae.
    
    Reason for revert: Most Jenkins builds for that change were aborted
    after timing out, and many other Gerrit Jenkins and tinderbox builds
    now time out, too.  It very much smells like that commit was the
    culprit.
    
    Change-Id: I5473c58957f92d63113e32f862ad9c114f9c844c
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/89803
    Tested-by: Jenkins
    Reviewed-by: Stephan Bergmann <sbergman at redhat.com>

diff --git a/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx b/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx
index 4d959b335252..7735c1757e1f 100644
--- a/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx
+++ b/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx
@@ -29,8 +29,6 @@
 #include <com/sun/star/frame/Desktop.hpp>
 #include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
 #include <tools/diagnose_ex.h>
-#include <comphelper/lok.hxx>
-#include <sfx2/viewsh.hxx>
 
 namespace chart
 {
@@ -49,7 +47,6 @@ CreationWizardUnoDlg::CreationWizardUnoDlg(const uno::Reference<uno::XComponentC
 CreationWizardUnoDlg::~CreationWizardUnoDlg()
 {
     SolarMutexGuard aSolarGuard;
-    m_xDlgClosedListener.clear();
     m_xDialog.reset();
 }
 
@@ -84,9 +81,9 @@ void SAL_CALL CreationWizardUnoDlg::release() throw ()
 }
 uno::Any SAL_CALL CreationWizardUnoDlg::queryAggregation( uno::Type const & rType )
 {
-    if (rType == cppu::UnoType<ui::dialogs::XAsynchronousExecutableDialog>::get())
+    if (rType == cppu::UnoType<ui::dialogs::XExecutableDialog>::get())
     {
-        void * p = static_cast< ui::dialogs::XAsynchronousExecutableDialog * >( this );
+        void * p = static_cast< ui::dialogs::XExecutableDialog * >( this );
         return uno::Any( &p, rType );
     }
     else if (rType == cppu::UnoType<lang::XServiceInfo>::get())
@@ -121,8 +118,9 @@ uno::Sequence< uno::Type > CreationWizardUnoDlg::getTypes()
                                                cppu::UnoType<lang::XServiceInfo>::get(),
                                                cppu::UnoType<lang::XInitialization>::get(),
                                                cppu::UnoType<frame::XTerminateListener>::get(),
-                                               cppu::UnoType<ui::dialogs::XAsynchronousExecutableDialog>::get(),
+                                               cppu::UnoType<ui::dialogs::XExecutableDialog>::get(),
                                                cppu::UnoType<beans::XPropertySet>::get() };
+
     return aTypeList;
 }
 
@@ -147,7 +145,7 @@ void SAL_CALL CreationWizardUnoDlg::disposing( const lang::EventObject& /*Source
     //Listener should deregister himself and release all references to the closing object.
 }
 
-void SAL_CALL CreationWizardUnoDlg::setDialogTitle( const OUString& /*rTitle*/ )
+void SAL_CALL CreationWizardUnoDlg::setTitle( const OUString& /*rTitle*/ )
 {
 }
 void CreationWizardUnoDlg::createDialogOnDemand()
@@ -170,42 +168,25 @@ void CreationWizardUnoDlg::createDialogOnDemand()
         uno::Reference< XComponent > xKeepAlive( this );
         if( m_xChartModel.is() )
         {
-            m_xDialog = std::make_shared<CreationWizard>(Application::GetFrameWeld(m_xParentWindow), m_xChartModel, m_xCC);
+            m_xDialog = std::make_unique<CreationWizard>(Application::GetFrameWeld(m_xParentWindow), m_xChartModel, m_xCC);
         }
     }
 }
 
-IMPL_STATIC_LINK_NOARG(CreationWizardUnoDlg, InstallLOKNotifierHdl, void*, vcl::ILibreOfficeKitNotifier*)
-{
-    return SfxViewShell::Current();
-}
-
-void SAL_CALL CreationWizardUnoDlg::startExecuteModal( const css::uno::Reference<css::ui::dialogs::XDialogClosedListener>& xListener )
+sal_Int16 SAL_CALL CreationWizardUnoDlg::execute(  )
 {
-    SolarMutexGuard aSolarGuard;
-    m_xDlgClosedListener = xListener;
-    createDialogOnDemand();
-
-    if( !m_xDialog )
-        return;
-
-    m_xDialog->getDialog()->SetInstallLOKNotifierHdl(
-                                LINK(this, CreationWizardUnoDlg, InstallLOKNotifierHdl));
-
-    TimerTriggeredControllerLock aTimerTriggeredControllerLock( m_xChartModel );
-    if( m_bUnlockControllersOnExecute && m_xChartModel.is() )
-        m_xChartModel->unlockControllers();
-
-    rtl::Reference<CreationWizardUnoDlg> xThat(this);
-    weld::DialogController::runAsync(m_xDialog, [xThat](sal_Int32 nResult){
-            if( xThat->m_xDlgClosedListener.is() )
-            {
-                // Notify UNO listener to perform correct action depending on the result
-                css::ui::dialogs::DialogClosedEvent aEvent( *xThat, nResult );
-                xThat->m_xDlgClosedListener->dialogClosed( aEvent );
-                xThat->m_xDlgClosedListener.clear();
-            }
-        });
+    sal_Int16 nRet = ui::dialogs::ExecutableDialogResults::CANCEL;
+    {
+        SolarMutexGuard aSolarGuard;
+        createDialogOnDemand();
+        if (!m_xDialog)
+            return nRet;
+        TimerTriggeredControllerLock aTimerTriggeredControllerLock( m_xChartModel );
+        if( m_bUnlockControllersOnExecute && m_xChartModel.is() )
+            m_xChartModel->unlockControllers();
+        nRet = m_xDialog->run();
+    }
+    return nRet;
 }
 
 void SAL_CALL CreationWizardUnoDlg::initialize( const uno::Sequence< uno::Any >& aArguments )
diff --git a/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx b/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx
index a7e67519d678..c3ebb615db32 100644
--- a/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx
+++ b/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx
@@ -26,13 +26,9 @@
 #include <com/sun/star/frame/XTerminateListener.hpp>
 #include <com/sun/star/lang/XInitialization.hpp>
 #include <com/sun/star/lang/XServiceInfo.hpp>
-#include <com/sun/star/uno/XComponentContext.hpp>
-#include <com/sun/star/ui/dialogs/XAsynchronousExecutableDialog.hpp>
+#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
 
 #include "dlg_CreationWizard.hxx"
-#include <tools/link.hxx>
-#include <vcl/vclptr.hxx>
-#include <vcl/vclevent.hxx>
 
 namespace com { namespace sun { namespace star { namespace awt { class XWindow; } } } }
 namespace com { namespace sun { namespace star { namespace frame { class XModel; } } } }
@@ -45,7 +41,7 @@ namespace chart
 
 class CreationWizardUnoDlg : public MutexContainer
                             , public ::cppu::OComponentHelper
-                            , public css::ui::dialogs::XAsynchronousExecutableDialog
+                            , public css::ui::dialogs::XExecutableDialog
                             , public css::lang::XServiceInfo
                             , public css::lang::XInitialization
                             , public css::frame::XTerminateListener
@@ -72,9 +68,9 @@ public:
     virtual sal_Bool SAL_CALL supportsService( const OUString& ServiceName ) override;
     virtual css::uno::Sequence< OUString > SAL_CALL getSupportedServiceNames() override;
 
-    // XAsynchronousExecutableDialog
-    virtual void SAL_CALL setDialogTitle( const OUString& aTitle ) override;
-    virtual void SAL_CALL startExecuteModal( const css::uno::Reference<css::ui::dialogs::XDialogClosedListener>& xListener ) override;
+    // XExecutableDialog
+    virtual void SAL_CALL setTitle( const OUString& aTitle ) override;
+    virtual sal_Int16 SAL_CALL execute(  ) override;
 
     // XInitialization
     virtual void SAL_CALL initialize( const css::uno::Sequence< css::uno::Any >& aArguments ) override;
@@ -101,15 +97,13 @@ protected:
 
 private:
     void createDialogOnDemand();
-    DECL_STATIC_LINK(CreationWizardUnoDlg, InstallLOKNotifierHdl, void*, vcl::ILibreOfficeKitNotifier*);
 
 private:
     css::uno::Reference< css::frame::XModel >            m_xChartModel;
     css::uno::Reference< css::uno::XComponentContext>    m_xCC;
     css::uno::Reference< css::awt::XWindow >             m_xParentWindow;
-    css::uno::Reference< css::ui::dialogs::XDialogClosedListener > m_xDlgClosedListener;
 
-    std::shared_ptr<CreationWizard> m_xDialog;
+    std::unique_ptr<CreationWizard> m_xDialog;
     bool            m_bUnlockControllersOnExecute;
 };
 
diff --git a/sc/source/ui/drawfunc/fuins2.cxx b/sc/source/ui/drawfunc/fuins2.cxx
index d926a1eb7258..80753e59c3cd 100644
--- a/sc/source/ui/drawfunc/fuins2.cxx
+++ b/sc/source/ui/drawfunc/fuins2.cxx
@@ -53,12 +53,10 @@
 #include <com/sun/star/chart2/XChartDocument.hpp>
 #include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
 #include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
-#include <com/sun/star/ui/dialogs/XDialogClosedListener.hpp>
 #include <com/sun/star/lang/XInitialization.hpp>
 #include <com/sun/star/frame/XModel.hpp>
 #include <com/sun/star/chart/ChartDataRowSource.hpp>
 #include <cppuhelper/bootstrap.hxx>
-#include <svtools/dialogclosedlistener.hxx>
 
 #include <PivotTableDataProvider.hxx>
 #include <chart2uno.hxx>
@@ -400,58 +398,8 @@ FuInsertOLE::FuInsertOLE(ScTabViewShell& rViewSh, vcl::Window* pWin, ScDrawView*
         rReq.Ignore();
 }
 
-IMPL_LINK( FuInsertChart, DialogClosedHdl, css::ui::dialogs::DialogClosedEvent*, pEvent, void )
-{
-    bool bAddUndo = true;
-
-    if( pEvent->DialogResult == ui::dialogs::ExecutableDialogResults::CANCEL )
-    {
-        // leave OLE inplace mode and unmark
-        OSL_ASSERT( pView );
-        rViewShell.DeactivateOle();
-        pView->UnMarkAll();
-
-        // old page view pointer is invalid after switching sheets
-        SdrPageView* pPV = pView->GetSdrPageView();
-
-        // remove the chart
-        OSL_ASSERT( pPV );
-        SdrPage * pPage( pPV->GetPage());
-        OSL_ASSERT( pPage );
-        OSL_ASSERT( m_pInsertedObject );
-        if( pPage )
-        {
-            // Remove the OLE2 object from the sdr page.
-            SdrObject* pRemoved = pPage->RemoveObject( m_pInsertedObject->GetOrdNum() );
-            OSL_ASSERT( pRemoved == m_pInsertedObject );
-            SdrObject::Free( pRemoved );
-        }
-
-        bAddUndo = false;
-
-        // leave the draw shell
-        rViewShell.SetDrawShell( false );
-
-        // reset marked cell area
-        ScMarkData aMark = rViewShell.GetViewData().GetMarkData();
-        rViewShell.GetViewData().GetViewShell()->SetMarkData(aMark);
-    }
-    else
-    {
-        OSL_ASSERT( pEvent->DialogResult == ui::dialogs::ExecutableDialogResults::OK );
-        //@todo maybe move chart to different table
-    }
-
-    if ( bAddUndo )
-    {
-        // add undo action the same way as in SdrEditView::InsertObjectAtView
-        // (using UndoActionHdl etc.)
-        pView->AddUndo(std::make_unique<SdrUndoNewObj>(*m_pInsertedObject));
-    }
-}
-
 FuInsertChart::FuInsertChart(ScTabViewShell& rViewSh, vcl::Window* pWin, ScDrawView* pViewP,
-                             SdrModel* pDoc, SfxRequest& rReq)
+           SdrModel* pDoc, SfxRequest& rReq)
     : FuPoor(rViewSh, pWin, pViewP, pDoc, rReq)
 {
     const SfxItemSet* pReqArgs = rReq.GetArgs();
@@ -635,7 +583,7 @@ FuInsertChart::FuInsertChart(ScTabViewShell& rViewSh, vcl::Window* pWin, ScDrawV
     Point aStart = rViewSh.GetChartInsertPos( aSize, aPositionRange );
 
     tools::Rectangle aRect (aStart, aSize);
-    m_pInsertedObject = new SdrOle2Obj(
+    SdrOle2Obj* pObj = new SdrOle2Obj(
         *pDoc, // TTTT should be reference
         svt::EmbeddedObjectRef(xObj, nAspect),
         aName,
@@ -649,10 +597,11 @@ FuInsertChart::FuInsertChart(ScTabViewShell& rViewSh, vcl::Window* pWin, ScDrawV
 //        pView->InsertObjectAtView(pObj, *pPV);//this call leads to an immediate redraw and asks the chart for a visual representation
 
     // use the page instead of the view to insert, so no undo action is created yet
-    SdrPage* m_pPage = pPV->GetPage();
-    m_pPage->InsertObject( m_pInsertedObject );
+    SdrPage* pInsPage = pPV->GetPage();
+    pInsPage->InsertObject( pObj );
     pView->UnmarkAllObj();
-    pView->MarkObj( m_pInsertedObject, pPV );
+    pView->MarkObj( pObj, pPV );
+    bool bAddUndo = true;               // add undo action later, unless the dialog is canceled
 
     if (rReq.IsAPI())
     {
@@ -665,7 +614,7 @@ FuInsertChart::FuInsertChart(ScTabViewShell& rViewSh, vcl::Window* pWin, ScDrawV
 
         // only activate object if not called via API (e.g. macro)
         if (!comphelper::LibreOfficeKit::isActive())
-            rViewShell.ActivateObject(m_pInsertedObject, embed::EmbedVerbs::MS_OLEVERB_SHOW);
+            rViewShell.ActivateObject(pObj, embed::EmbedVerbs::MS_OLEVERB_SHOW);
 
         //open wizard
         //@todo get context from calc if that has one
@@ -676,11 +625,11 @@ FuInsertChart::FuInsertChart(ScTabViewShell& rViewSh, vcl::Window* pWin, ScDrawV
             uno::Reference< lang::XMultiComponentFactory > xMCF( xContext->getServiceManager() );
             if(xMCF.is())
             {
-                m_xDialog = uno::Reference< ui::dialogs::XAsynchronousExecutableDialog >(
+                uno::Reference< ui::dialogs::XExecutableDialog > xDialog(
                     xMCF->createInstanceWithContext(
                         "com.sun.star.comp.chart2.WizardDialog"
                         , xContext), uno::UNO_QUERY);
-                uno::Reference< lang::XInitialization > xInit( m_xDialog, uno::UNO_QUERY );
+                uno::Reference< lang::XInitialization > xInit( xDialog, uno::UNO_QUERY );
                 if( xChartModel.is() && xInit.is() )
                 {
                     uno::Sequence<uno::Any> aSeq(comphelper::InitAnyPropertySequence(
@@ -691,7 +640,7 @@ FuInsertChart::FuInsertChart(ScTabViewShell& rViewSh, vcl::Window* pWin, ScDrawV
                     xInit->initialize( aSeq );
 
                     // try to set the dialog's position so it doesn't hide the chart
-                    uno::Reference < beans::XPropertySet > xDialogProps( m_xDialog, uno::UNO_QUERY );
+                    uno::Reference < beans::XPropertySet > xDialogProps( xDialog, uno::UNO_QUERY );
                     if ( xDialogProps.is() )
                     {
                         try
@@ -721,21 +670,62 @@ FuInsertChart::FuInsertChart(ScTabViewShell& rViewSh, vcl::Window* pWin, ScDrawV
                         }
                     }
 
-                    ::svt::DialogClosedListener* pListener = new ::svt::DialogClosedListener();
-                    pListener->SetDialogClosedLink( LINK( this, FuInsertChart, DialogClosedHdl ) );
-                    css::uno::Reference<css::ui::dialogs::XDialogClosedListener> xListener( pListener );
+                    sal_Int16 nDialogRet = xDialog->execute();
+                    if( nDialogRet == ui::dialogs::ExecutableDialogResults::CANCEL )
+                    {
+                        // leave OLE inplace mode and unmark
+                        OSL_ASSERT( pView );
+                        rViewShell.DeactivateOle();
+                        pView->UnmarkAll();
+
+                        // old page view pointer is invalid after switching sheets
+                        pPV = pView->GetSdrPageView();
+
+                        // remove the chart
+                        OSL_ASSERT( pPV );
+                        SdrPage * pPage( pPV->GetPage());
+                        OSL_ASSERT( pPage );
+                        OSL_ASSERT( pObj );
+                        if( pPage )
+                        {
+                            // Remove the OLE2 object from the sdr page.
+                            SdrObject* pRemoved = pPage->RemoveObject(pObj->GetOrdNum());
+                            OSL_ASSERT(pRemoved == pObj);
+                            SdrObject::Free(pRemoved); // Don't forget to free it.
+                        }
 
-                    m_xDialog->startExecuteModal( xListener );
-                }
-                else
-                {
-                    uno::Reference< lang::XComponent > xComponent( m_xDialog, uno::UNO_QUERY );
-                    if( xComponent.is())
-                        xComponent->dispose();
+                        bAddUndo = false;       // don't create the undo action for inserting
+
+                        // leave the draw shell
+                        rViewShell.SetDrawShell( false );
+
+                        // reset marked cell area
+
+                        rViewSh.GetViewData().GetViewShell()->SetMarkData(aMark);
+                    }
+                    else
+                    {
+                        OSL_ASSERT( nDialogRet == ui::dialogs::ExecutableDialogResults::OK );
+                        //@todo maybe move chart to different table
+                    }
                 }
+                uno::Reference< lang::XComponent > xComponent( xDialog, uno::UNO_QUERY );
+                if( xComponent.is())
+                    xComponent->dispose();
             }
         }
     }
+    else if( xChartModel.is() )
+        xChartModel->unlockControllers();
+
+    if ( bAddUndo )
+    {
+        // add undo action the same way as in SdrEditView::InsertObjectAtView
+        // (using UndoActionHdl etc.)
+        pView->AddUndo(std::make_unique<SdrUndoNewObj>(*pObj));
+    }
+
+    // BM/IHA --
 }
 
 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/sc/source/ui/inc/fuinsert.hxx b/sc/source/ui/inc/fuinsert.hxx
index cfad23933836..863aa6d88cb1 100644
--- a/sc/source/ui/inc/fuinsert.hxx
+++ b/sc/source/ui/inc/fuinsert.hxx
@@ -22,9 +22,6 @@
 
 #include "fupoor.hxx"
 #include <scdllapi.h>
-#include <svx/svdoole2.hxx>
-#include <com/sun/star/ui/dialogs/DialogClosedEvent.hpp>
-#include <com/sun/star/ui/dialogs/XAsynchronousExecutableDialog.hpp>
 
 class FuInsertGraphic : public FuPoor
 {
@@ -43,14 +40,9 @@ public:
 
 class FuInsertChart : public FuPoor
 {
-    css::uno::Reference<css::ui::dialogs::XAsynchronousExecutableDialog> m_xDialog;
-    SdrOle2Obj* m_pInsertedObject;
-
-    DECL_LINK( DialogClosedHdl, css::ui::dialogs::DialogClosedEvent*, void );
-
- public:
-    FuInsertChart( ScTabViewShell& pViewSh, vcl::Window* pWin, ScDrawView* pView,
-                   SdrModel* pDoc, SfxRequest& rReq);
+public:
+    FuInsertChart(ScTabViewShell& rViewSh, vcl::Window* pWin, ScDrawView* pView,
+           SdrModel* pDoc, SfxRequest& rReq);
 };
 
 class FuInsertMedia : public FuPoor
diff --git a/sc/source/ui/inc/tabvwsh.hxx b/sc/source/ui/inc/tabvwsh.hxx
index df33dac2c00e..210cf689d2c1 100644
--- a/sc/source/ui/inc/tabvwsh.hxx
+++ b/sc/source/ui/inc/tabvwsh.hxx
@@ -59,7 +59,6 @@ class ScPageBreakShell;
 class ScDPObject;
 class ScNavigatorSettings;
 class ScRangeName;
-class FuInsertChart;
 
 struct ScHeaderFieldData;
 
@@ -98,7 +97,6 @@ private:
     sal_uInt16              nDrawSfxId;
     sal_uInt16              nFormSfxId;
     OUString                sDrawCustom;                // current custom shape type
-
     std::unique_ptr<ScDrawShell>         pDrawShell;
     std::unique_ptr<ScDrawTextObjectBar> pDrawTextShell;
     std::unique_ptr<ScEditShell>         pEditShell;
@@ -113,7 +111,6 @@ private:
     std::unique_ptr<ScPageBreakShell>    pPageBreakShell;
     std::unique_ptr<svx::ExtrusionBar>   pExtrusionBarShell;
     std::unique_ptr<svx::FontworkBar>    pFontworkBarShell;
-    std::unique_ptr<FuInsertChart>       pFuInsertChart;
 
     std::unique_ptr<FmFormShell> pFormShell;
 
diff --git a/sc/source/ui/view/tabvwsh4.cxx b/sc/source/ui/view/tabvwsh4.cxx
index e190b3fdb684..f4f61330b4fb 100644
--- a/sc/source/ui/view/tabvwsh4.cxx
+++ b/sc/source/ui/view/tabvwsh4.cxx
@@ -56,7 +56,6 @@
 #include <inputwin.hxx>
 #include <dbdata.hxx>
 #include <reffact.hxx>
-#include <fuinsert.hxx>
 #include <viewuno.hxx>
 #include <dispuno.hxx>
 #include <chgtrack.hxx>
diff --git a/sc/source/ui/view/tabvwshb.cxx b/sc/source/ui/view/tabvwshb.cxx
index 6b4f3b4a8045..545fce092934 100644
--- a/sc/source/ui/view/tabvwshb.cxx
+++ b/sc/source/ui/view/tabvwshb.cxx
@@ -333,7 +333,7 @@ void ScTabViewShell::ExecDrawIns(SfxRequest& rReq)
             break;
 
         case SID_INSERT_DIAGRAM:
-            pFuInsertChart.reset(new FuInsertChart(*this, pWin, pView, pDrModel, rReq));
+            FuInsertChart(*this, pWin, pView, pDrModel, rReq);
             break;
 
         case SID_INSERT_OBJECT:
diff --git a/sw/source/uibase/inc/chartins.hxx b/sw/source/uibase/inc/chartins.hxx
index d258053ae985..383e0fda1a58 100644
--- a/sw/source/uibase/inc/chartins.hxx
+++ b/sw/source/uibase/inc/chartins.hxx
@@ -20,17 +20,11 @@
 #define INCLUDED_SW_SOURCE_UIBASE_INC_CHARTINS_HXX
 
 #include <tools/gen.hxx>
-#include <com/sun/star/ui/dialogs/DialogClosedEvent.hpp>
 
 namespace vcl { class Window; }
 
 Point SwGetChartDialogPos( const vcl::Window *pParentWin, const Size& rDialogSize, const tools::Rectangle& rLogicChart );
-
-class SwInsertChart
-{
-public:
-    SwInsertChart( const Link<css::ui::dialogs::DialogClosedEvent*,void>& rLink );
-};
+void SwInsertChart();
 
 #endif // INCLUDED_SW_SOURCE_UIBASE_INC_CHARTINS_HXX
 
diff --git a/sw/source/uibase/inc/textsh.hxx b/sw/source/uibase/inc/textsh.hxx
index 849bffcf4f2b..9ec521afe647 100644
--- a/sw/source/uibase/inc/textsh.hxx
+++ b/sw/source/uibase/inc/textsh.hxx
@@ -22,13 +22,11 @@
 
 #include "basesh.hxx"
 #include <unotools/caserotate.hxx>
-#include <com/sun/star/ui/dialogs/DialogClosedEvent.hpp>
 
 class AbstractSvxPostItDialog;
 class SwFieldMgr;
 class SwFlyFrameAttrMgr;
 class SvxHyperlinkItem;
-class SwInsertChart;
 
 class SW_DLLPUBLIC SwTextShell: public SwBaseShell
 {
@@ -48,7 +46,6 @@ private:
 public:
     DECL_LINK( RedlineNextHdl, AbstractSvxPostItDialog&, void );
     DECL_LINK( RedlinePrevHdl, AbstractSvxPostItDialog&, void );
-    DECL_STATIC_LINK( SwTextShell, DialogClosedHdl, css::ui::dialogs::DialogClosedEvent*, void );
 
     void    Execute(SfxRequest &);
     void    GetState(SfxItemSet &);
diff --git a/sw/source/uibase/shells/textsh.cxx b/sw/source/uibase/shells/textsh.cxx
index c16dcf1a7cfc..ef1341d078bc 100644
--- a/sw/source/uibase/shells/textsh.cxx
+++ b/sw/source/uibase/shells/textsh.cxx
@@ -87,30 +87,9 @@ using namespace ::com::sun::star;
 #include <drawdoc.hxx>
 #include <svtools/embedhlp.hxx>
 #include <sfx2/event.hxx>
-#include <com/sun/star/ui/dialogs/DialogClosedEvent.hpp>
-#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
-#include <IDocumentUndoRedo.hxx>
 
 SFX_IMPL_INTERFACE(SwTextShell, SwBaseShell)
 
-IMPL_STATIC_LINK( SwTextShell, DialogClosedHdl, css::ui::dialogs::DialogClosedEvent*, pEvent, void )
-{
-    SwView* pView = ::GetActiveView();
-    SwWrtShell& rWrtShell = pView->GetWrtShell();
-
-    sal_Int16 nDialogRet = pEvent->DialogResult;
-    if( nDialogRet == ui::dialogs::ExecutableDialogResults::CANCEL )
-    {
-        rWrtShell.Undo();
-        rWrtShell.GetIDocumentUndoRedo().ClearRedo();
-    }
-    else
-    {
-        OSL_ENSURE( nDialogRet == ui::dialogs::ExecutableDialogResults::OK,
-            "dialog execution failed" );
-    }
-}
-
 void SwTextShell::InitInterface_Impl()
 {
     GetStaticInterface()->RegisterPopupMenu("text");
@@ -324,7 +303,7 @@ void SwTextShell::ExecInsert(SfxRequest &rReq)
                 break;
             if(!rReq.IsAPI())
             {
-                SwInsertChart( LINK( this, SwTextShell, DialogClosedHdl ) );
+                SwInsertChart();
             }
             else
             {
diff --git a/sw/source/uibase/table/chartins.cxx b/sw/source/uibase/table/chartins.cxx
index 51289c19e983..b9e5f1e5103b 100644
--- a/sw/source/uibase/table/chartins.cxx
+++ b/sw/source/uibase/table/chartins.cxx
@@ -41,12 +41,11 @@
 #include <com/sun/star/awt/Point.hpp>
 #include <com/sun/star/awt/Size.hpp>
 #include <com/sun/star/awt/XWindow.hpp>
-#include <svtools/dialogclosedlistener.hxx>
 #include <com/sun/star/chart2/data/XDataProvider.hpp>
 #include <com/sun/star/frame/XModel.hpp>
 #include <com/sun/star/lang/XInitialization.hpp>
 #include <com/sun/star/lang/XMultiComponentFactory.hpp>
-#include <com/sun/star/ui/dialogs/XAsynchronousExecutableDialog.hpp>
+#include <com/sun/star/ui/dialogs/XExecutableDialog.hpp>
 #include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
 
 using namespace ::com::sun::star;
@@ -123,7 +122,7 @@ Point SwGetChartDialogPos( const vcl::Window *pParentWin, const Size& rDialogSiz
     return aRet;
 }
 
-SwInsertChart::SwInsertChart( const Link<css::ui::dialogs::DialogClosedEvent*, void>& rLink )
+void SwInsertChart()
 {
     SwView *pView = ::GetActiveView();
 
@@ -163,7 +162,7 @@ SwInsertChart::SwInsertChart( const Link<css::ui::dialogs::DialogClosedEvent*, v
         uno::Reference< lang::XMultiComponentFactory > xMCF( xContext->getServiceManager() );
         if(xMCF.is())
         {
-            uno::Reference< ui::dialogs::XAsynchronousExecutableDialog > xDialog(
+            uno::Reference< ui::dialogs::XExecutableDialog > xDialog(
                 xMCF->createInstanceWithContext(
                     "com.sun.star.comp.chart2.WizardDialog", xContext),
                 uno::UNO_QUERY);
@@ -209,18 +208,21 @@ SwInsertChart::SwInsertChart( const Link<css::ui::dialogs::DialogClosedEvent*, v
                     }
                 }
 
-                ::svt::DialogClosedListener* pListener = new ::svt::DialogClosedListener();
-                pListener->SetDialogClosedLink( rLink );
-                css::uno::Reference<css::ui::dialogs::XDialogClosedListener> xListener( pListener );
-
-                xDialog->startExecuteModal( xListener );
-            }
-            else
-            {
-                uno::Reference< lang::XComponent > xComponent( xDialog, uno::UNO_QUERY );
-                if( xComponent.is())
-                    xComponent->dispose();
+                sal_Int16 nDialogRet = xDialog->execute();
+                if( nDialogRet == ui::dialogs::ExecutableDialogResults::CANCEL )
+                {
+                    rWrtShell.Undo();
+                    rWrtShell.GetIDocumentUndoRedo().ClearRedo();
+                }
+                else
+                {
+                    OSL_ENSURE( nDialogRet == ui::dialogs::ExecutableDialogResults::OK,
+                        "dialog execution failed" );
+                }
             }
+            uno::Reference< lang::XComponent > xComponent( xDialog, uno::UNO_QUERY );
+            if( xComponent.is())
+                xComponent->dispose();
         }
     }
 }
diff --git a/vcl/source/control/wizardmachine.cxx b/vcl/source/control/wizardmachine.cxx
index 2e5d48458d1c..c9e323620332 100644
--- a/vcl/source/control/wizardmachine.cxx
+++ b/vcl/source/control/wizardmachine.cxx
@@ -1387,9 +1387,6 @@ namespace vcl
 
     void WizardMachine::resumeTraveling( AccessGuard )
     {
-        if (!m_pImpl)
-            return;
-
         DBG_ASSERT( m_pImpl->m_bTravelingSuspended, "WizardMachine::resumeTraveling: nothing to resume!" );
         m_pImpl->m_bTravelingSuspended = false;
     }


More information about the Libreoffice-commits mailing list