diff options
-rw-r--r-- | chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx | 57 | ||||
-rw-r--r-- | chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx | 18 | ||||
-rw-r--r-- | sc/source/ui/drawfunc/fuins2.cxx | 132 | ||||
-rw-r--r-- | sc/source/ui/inc/fuinsert.hxx | 14 | ||||
-rw-r--r-- | sc/source/ui/inc/tabvwsh.hxx | 3 | ||||
-rw-r--r-- | sc/source/ui/view/tabvwsh4.cxx | 1 | ||||
-rw-r--r-- | sc/source/ui/view/tabvwshb.cxx | 2 | ||||
-rw-r--r-- | sw/source/uibase/inc/chartins.hxx | 8 | ||||
-rw-r--r-- | sw/source/uibase/inc/textsh.hxx | 3 | ||||
-rw-r--r-- | sw/source/uibase/shells/textsh.cxx | 23 | ||||
-rw-r--r-- | sw/source/uibase/table/chartins.cxx | 32 | ||||
-rw-r--r-- | vcl/source/control/wizardmachine.cxx | 3 |
12 files changed, 109 insertions, 187 deletions
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; } |