[Libreoffice-commits] core.git: chart2/source chart2/uiconfig dbaccess/source dbaccess/uiconfig dbaccess/UIConfig_dbaccess.mk include/vcl vcl/source vcl/uiconfig vcl/UIConfig_vcl.mk vcl/unx

Caolán McNamara (via logerrit) logerrit at kemper.freedesktop.org
Thu Aug 22 16:27:34 UTC 2019


 chart2/source/controller/dialogs/dlg_CreationWizard.cxx     |   51 +++++---
 chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx |   69 ++++--------
 chart2/source/controller/dialogs/dlg_DataSource.cxx         |    4 
 chart2/source/controller/dialogs/tp_DataSource.cxx          |   24 ----
 chart2/source/controller/dialogs/tp_DataSource.hxx          |    3 
 chart2/source/controller/dialogs/tp_RangeChooser.cxx        |   24 ----
 chart2/source/controller/dialogs/tp_RangeChooser.hxx        |    4 
 chart2/source/controller/inc/dlg_CreationWizard.hxx         |    6 -
 chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx     |    4 
 chart2/uiconfig/ui/tp_RangeChooser.ui                       |    1 
 chart2/uiconfig/ui/wizelementspage.ui                       |    4 
 dbaccess/UIConfig_dbaccess.mk                               |    1 
 dbaccess/source/ui/dlg/dbwizsetup.cxx                       |    9 +
 dbaccess/source/ui/inc/dbwizsetup.hxx                       |    1 
 dbaccess/source/ui/uno/DBTypeWizDlgSetup.cxx                |    5 
 include/vcl/roadmapwizard.hxx                               |    2 
 include/vcl/weld.hxx                                        |    2 
 vcl/UIConfig_vcl.mk                                         |    1 
 vcl/source/app/salvtables.cxx                               |    5 
 vcl/source/control/roadmapwizard.cxx                        |    6 -
 vcl/source/control/wizardmachine.cxx                        |    4 
 vcl/uiconfig/ui/wizard.ui                                   |    5 
 vcl/unx/gtk3/gtk3gtkinst.cxx                                |   17 ++
 23 files changed, 112 insertions(+), 140 deletions(-)

New commits:
commit d661cb17610af93b1607025284f23187c6d2fc06
Author:     Caolán McNamara <caolanm at redhat.com>
AuthorDate: Thu Aug 22 11:15:57 2019 +0100
Commit:     Caolán McNamara <caolanm at redhat.com>
CommitDate: Thu Aug 22 18:26:41 2019 +0200

    weld chart CreationWizard
    
    Change-Id: I7ee88c1e1b0eca5c2510a4bbba8b60c0d8a4e3e8
    Reviewed-on: https://gerrit.libreoffice.org/77954
    Tested-by: Jenkins
    Reviewed-by: Caolán McNamara <caolanm at redhat.com>
    Tested-by: Caolán McNamara <caolanm at redhat.com>

diff --git a/chart2/source/controller/dialogs/dlg_CreationWizard.cxx b/chart2/source/controller/dialogs/dlg_CreationWizard.cxx
index db54937be38c..58a744980556 100644
--- a/chart2/source/controller/dialogs/dlg_CreationWizard.cxx
+++ b/chart2/source/controller/dialogs/dlg_CreationWizard.cxx
@@ -22,6 +22,7 @@
 #include <strings.hrc>
 #include <helpids.h>
 #include <ChartModel.hxx>
+#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
 
 #include "tp_ChartType.hxx"
 #include "tp_RangeChooser.hxx"
@@ -30,9 +31,6 @@
 #include "ChartTypeTemplateProvider.hxx"
 #include "DialogModel.hxx"
 
-#define CHART_WIZARD_PAGEWIDTH  250
-#define CHART_WIZARD_PAGEHEIGHT 170
-
 using namespace css;
 
 namespace chart
@@ -45,14 +43,14 @@ namespace chart
 #define STATE_OBJECTS      3
 #define STATE_LAST         STATE_OBJECTS
 
-CreationWizard::CreationWizard(vcl::Window* pParent, const uno::Reference<frame::XModel>& xChartModel,
+CreationWizard::CreationWizard(weld::Window* pParent, const uno::Reference<frame::XModel>& xChartModel,
                                const uno::Reference<uno::XComponentContext>& xContext)
-                : vcl::RoadmapWizard(pParent)
-                , m_xChartModel(xChartModel,uno::UNO_QUERY)
-                , m_xComponentContext(xContext)
-                , m_pTemplateProvider(nullptr)
-                , m_aTimerTriggeredControllerLock(xChartModel)
-                , m_bCanTravel(true)
+    : vcl::RoadmapWizardMachine(pParent)
+    , m_xChartModel(xChartModel,uno::UNO_QUERY)
+    , m_xComponentContext(xContext)
+    , m_pTemplateProvider(nullptr)
+    , m_aTimerTriggeredControllerLock(xChartModel)
+    , m_bCanTravel(true)
 {
     m_pDialogModel.reset(new DialogModel(m_xChartModel, m_xComponentContext));
     defaultButton(WizardButtonFlags::FINISH);
@@ -69,12 +67,6 @@ CreationWizard::CreationWizard(vcl::Window* pParent, const uno::Reference<frame:
     declarePath(PATH_FULL, aPath);
 
     SetRoadmapHelpId(HID_SCH_WIZARD_ROADMAP);
-    SetRoadmapInteractive(true);
-
-    Size aAdditionalRoadmapSize(LogicToPixel(Size(85, 0), MapMode(MapUnit::MapAppFont)));
-    Size aSize(LogicToPixel(Size(CHART_WIZARD_PAGEWIDTH, CHART_WIZARD_PAGEHEIGHT), MapMode(MapUnit::MapAppFont)));
-    aSize.AdjustWidth(aAdditionalRoadmapSize.Width() );
-    SetSizePixel(aSize);
 
     if (!m_pDialogModel->getModel().isDataFromSpreadsheet())
     {
@@ -84,6 +76,16 @@ CreationWizard::CreationWizard(vcl::Window* pParent, const uno::Reference<frame:
 
     // Call ActivatePage, to create and activate the first page
     ActivatePage();
+
+    m_xAssistant->set_current_page(0);
+}
+
+short CreationWizard::run()
+{
+    int nRet = vcl::RoadmapWizardMachine::run();
+    if (nRet == static_cast<int>(WizardButtonFlags::FINISH))
+        return ui::dialogs::ExecutableDialogResults::OK;
+    return ui::dialogs::ExecutableDialogResults::CANCEL;
 }
 
 CreationWizard::~CreationWizard() = default;
@@ -91,12 +93,18 @@ CreationWizard::~CreationWizard() = default;
 VclPtr<TabPage> CreationWizard::createPage(WizardState nState)
 {
     VclPtr<vcl::OWizardPage> pRet;
+
+    OString sIdent(OString::number(nState));
+    weld::Container* pPageContainer = m_xAssistant->append_page(sIdent);
+    // TODO eventually pass DialogController as distinct argument instead of bundling into TabPageParent
+    TabPageParent aParent(pPageContainer, this);
+
     switch( nState )
     {
     case STATE_CHARTTYPE:
         {
         m_aTimerTriggeredControllerLock.startTimer();
-        VclPtrInstance<ChartTypeTabPage> pChartTypeTabPage(this,m_xChartModel);
+        VclPtrInstance<ChartTypeTabPage> pChartTypeTabPage(aParent, m_xChartModel);
         pRet  = pChartTypeTabPage;
         m_pTemplateProvider = pChartTypeTabPage;
         if (m_pDialogModel)
@@ -106,18 +114,18 @@ VclPtr<TabPage> CreationWizard::createPage(WizardState nState)
     case STATE_SIMPLE_RANGE:
         {
         m_aTimerTriggeredControllerLock.startTimer();
-        pRet = VclPtr<RangeChooserTabPage>::Create(this, *m_pDialogModel, m_pTemplateProvider, this);
+        pRet = VclPtr<RangeChooserTabPage>::Create(aParent, *m_pDialogModel, m_pTemplateProvider, this);
         }
         break;
     case STATE_DATA_SERIES:
         {
         m_aTimerTriggeredControllerLock.startTimer();
-        pRet = VclPtr<DataSourceTabPage>::Create(this, *m_pDialogModel, m_pTemplateProvider, this);
+        pRet = VclPtr<DataSourceTabPage>::Create(aParent, *m_pDialogModel, m_pTemplateProvider, this);
         }
         break;
     case STATE_OBJECTS:
         {
-        pRet  = VclPtr<TitlesAndObjectsTabPage>::Create(this,m_xChartModel, m_xComponentContext);
+        pRet  = VclPtr<TitlesAndObjectsTabPage>::Create(aParent, m_xChartModel, m_xComponentContext);
         m_aTimerTriggeredControllerLock.startTimer();
         }
         break;
@@ -147,13 +155,14 @@ vcl::WizardTypes::WizardState CreationWizard::determineNextState( WizardState nC
         ++nNextState;
     return (nNextState==STATE_LAST+1) ? WZS_INVALID_STATE : nNextState;
 }
+
 void CreationWizard::enterState(WizardState nState)
 {
     m_aTimerTriggeredControllerLock.startTimer();
     enableButtons( WizardButtonFlags::PREVIOUS, nState > STATE_FIRST );
     enableButtons( WizardButtonFlags::NEXT, nState < STATE_LAST );
     if( isStateEnabled( nState ))
-        vcl::RoadmapWizard::enterState(nState);
+        vcl::RoadmapWizardMachine::enterState(nState);
 }
 
 void CreationWizard::setInvalidPage( TabPage * /* pTabPage */ )
diff --git a/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx b/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx
index 9234a58bca78..ceca92791678 100644
--- a/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx
+++ b/chart2/source/controller/dialogs/dlg_CreationWizard_UNO.cxx
@@ -28,27 +28,29 @@
 #include <com/sun/star/awt/Size.hpp>
 #include <com/sun/star/beans/PropertyValue.hpp>
 #include <com/sun/star/frame/Desktop.hpp>
+#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
 #include <tools/diagnose_ex.h>
 
 namespace chart
 {
 using namespace ::com::sun::star;
 
-CreationWizardUnoDlg::CreationWizardUnoDlg( const uno::Reference< uno::XComponentContext >& xContext )
-                    : OComponentHelper( m_aMutex )
-                    , m_xCC( xContext )
-                    , m_pDialog( nullptr )
-                    , m_bUnlockControllersOnExecute(false)
+CreationWizardUnoDlg::CreationWizardUnoDlg(const uno::Reference<uno::XComponentContext>& xContext)
+    : OComponentHelper(m_aMutex)
+    , m_xCC(xContext)
+    , m_bUnlockControllersOnExecute(false)
 {
     uno::Reference< frame::XDesktop2 > xDesktop = frame::Desktop::create(m_xCC);
     uno::Reference< frame::XTerminateListener > xListener( this );
     xDesktop->addTerminateListener( xListener );
 }
+
 CreationWizardUnoDlg::~CreationWizardUnoDlg()
 {
     SolarMutexGuard aSolarGuard;
-    m_pDialog.disposeAndClear();
+    m_xDialog.reset();
 }
+
 // lang::XServiceInfo
 OUString SAL_CALL CreationWizardUnoDlg::getImplementationName()
 {
@@ -150,9 +152,8 @@ void SAL_CALL CreationWizardUnoDlg::setTitle( const OUString& /*rTitle*/ )
 void CreationWizardUnoDlg::createDialogOnDemand()
 {
     SolarMutexGuard aSolarGuard;
-    if( !m_pDialog )
+    if (!m_xDialog)
     {
-        vcl::Window* pParent = nullptr;
         if( !m_xParentWindow.is() && m_xChartModel.is() )
         {
             uno::Reference< frame::XController > xController(
@@ -165,38 +166,26 @@ void CreationWizardUnoDlg::createDialogOnDemand()
                     m_xParentWindow = xFrame->getContainerWindow();
             }
         }
-        if( m_xParentWindow.is() )
-        {
-            VCLXWindow* pImplementation = comphelper::getUnoTunnelImplementation<VCLXWindow>(m_xParentWindow);
-            if (pImplementation)
-                pParent = pImplementation->GetWindow().get();
-        }
         uno::Reference< XComponent > xComp( this );
         if( m_xChartModel.is() )
         {
-            m_pDialog = VclPtr<CreationWizard>::Create( pParent, m_xChartModel, m_xCC );
-            m_pDialog->AddEventListener( LINK( this, CreationWizardUnoDlg, DialogEventHdl ) );
+            m_xDialog = std::make_unique<CreationWizard>(Application::GetFrameWeld(m_xParentWindow), m_xChartModel, m_xCC);
         }
     }
 }
-IMPL_LINK( CreationWizardUnoDlg, DialogEventHdl, VclWindowEvent&, rEvent, void )
-{
-    if(rEvent.GetId() == VclEventId::ObjectDying)
-        m_pDialog = nullptr;//avoid duplicate destruction of m_pDialog
-}
 
 sal_Int16 SAL_CALL CreationWizardUnoDlg::execute(  )
 {
-    sal_Int16 nRet = RET_CANCEL;
+    sal_Int16 nRet = ui::dialogs::ExecutableDialogResults::CANCEL;
     {
         SolarMutexGuard aSolarGuard;
         createDialogOnDemand();
-        if( !m_pDialog )
+        if (!m_xDialog)
             return nRet;
         TimerTriggeredControllerLock aTimerTriggeredControllerLock( m_xChartModel );
         if( m_bUnlockControllersOnExecute && m_xChartModel.is() )
             m_xChartModel->unlockControllers();
-        nRet = m_pDialog->Execute();
+        nRet = m_xDialog->run();
     }
     return nRet;
 }
@@ -228,7 +217,7 @@ void SAL_CALL CreationWizardUnoDlg::disposing()
     m_xParentWindow.clear();
 
     SolarMutexGuard aSolarGuard;
-    m_pDialog.disposeAndClear();
+    m_xDialog.reset();
 
     try
     {
@@ -249,27 +238,15 @@ uno::Reference< beans::XPropertySetInfo > SAL_CALL CreationWizardUnoDlg::getProp
     return nullptr;
 }
 
-void SAL_CALL CreationWizardUnoDlg::setPropertyValue( const OUString& rPropertyName
-                                                     , const uno::Any& rValue )
+void SAL_CALL CreationWizardUnoDlg::setPropertyValue(const OUString& rPropertyName,
+                                                     const uno::Any& rValue)
 {
     if( rPropertyName == "Position" )
     {
-        awt::Point aPos;
-        if( ! (rValue >>= aPos) )
-            throw lang::IllegalArgumentException( "Property 'Position' requires value of type awt::Point", nullptr, 0 );
-
-        //set left upper outer corner relative to screen
-        //pixels, screen position
         SolarMutexGuard aSolarGuard;
         createDialogOnDemand();
-        if( m_pDialog )
-        {
-            m_pDialog->SetPosPixel( Point(0,0) );
-            tools::Rectangle aRect( m_pDialog->GetWindowExtentsRelative( nullptr ) );
 
-            Point aNewOuterPos( aPos.X - aRect.Left(), aPos.Y - aRect.Top() );
-            m_pDialog->SetPosPixel( aNewOuterPos );
-        }
+        //read only property, do nothing else
     }
     else if( rPropertyName == "Size")
     {
@@ -293,10 +270,10 @@ uno::Any SAL_CALL CreationWizardUnoDlg::getPropertyValue( const OUString& rPrope
         //pixels, screen position
         SolarMutexGuard aSolarGuard;
         createDialogOnDemand();
-        if( m_pDialog )
+        if (m_xDialog)
         {
-            tools::Rectangle aRect( m_pDialog->GetWindowExtentsRelative( nullptr ) );
-            awt::Point aPoint(aRect.Left(),aRect.Top());
+            Point aPos(m_xDialog->getDialog()->get_position());
+            awt::Point aPoint(aPos.X(), aPos.Y());
             aRet <<= aPoint;
         }
     }
@@ -306,10 +283,10 @@ uno::Any SAL_CALL CreationWizardUnoDlg::getPropertyValue( const OUString& rPrope
         //pixels, screen position
         SolarMutexGuard aSolarGuard;
         createDialogOnDemand();
-        if( m_pDialog )
+        if (m_xDialog)
         {
-            tools::Rectangle aRect( m_pDialog->GetWindowExtentsRelative( nullptr ) );
-            awt::Size aSize(aRect.GetWidth(),aRect.GetHeight());
+            Size aRect(m_xDialog->getDialog()->get_size());
+            awt::Size aSize(aRect.Width(), aRect.Height());
             aRet <<= aSize;
         }
     }
diff --git a/chart2/source/controller/dialogs/dlg_DataSource.cxx b/chart2/source/controller/dialogs/dlg_DataSource.cxx
index 856420bcc245..4bd826466bff 100644
--- a/chart2/source/controller/dialogs/dlg_DataSource.cxx
+++ b/chart2/source/controller/dialogs/dlg_DataSource.cxx
@@ -92,10 +92,10 @@ DataSourceDialog::DataSourceDialog(weld::Window * pParent,
 {
     TabPageParent aRangeParent(m_xTabControl->get_page("range"), this);
     m_pRangeChooserTabPage = VclPtr<RangeChooserTabPage>::Create(aRangeParent, *(m_apDialogModel.get()),
-                                     m_apDocTemplateProvider.get(), nullptr, true /* bHideDescription */ );
+                                     m_apDocTemplateProvider.get(), true /* bHideDescription */ );
     TabPageParent aSeriesParent(m_xTabControl->get_page("series"), this);
     m_pDataSourceTabPage = VclPtr<DataSourceTabPage>::Create(aSeriesParent, *(m_apDialogModel.get()),
-                                    m_apDocTemplateProvider.get(), nullptr, true /* bHideDescription */ );
+                                    m_apDocTemplateProvider.get(), true /* bHideDescription */ );
     m_xTabControl->connect_enter_page(LINK(this, DataSourceDialog, ActivatePageHdl));
     m_xTabControl->connect_leave_page(LINK(this, DataSourceDialog, DeactivatePageHdl));
     ActivatePageHdl(m_xTabControl->get_current_page_ident());
diff --git a/chart2/source/controller/dialogs/tp_DataSource.cxx b/chart2/source/controller/dialogs/tp_DataSource.cxx
index 452b4f0b3603..e1ce453af530 100644
--- a/chart2/source/controller/dialogs/tp_DataSource.cxx
+++ b/chart2/source/controller/dialogs/tp_DataSource.cxx
@@ -110,15 +110,6 @@ OUString lcl_GetSequenceNameForLabel(const ::chart::SeriesEntry* pEntry)
     return aResult;
 }
 
-void lcl_enableRangeChoosing( bool bEnable, Dialog * pDialog )
-{
-    if( pDialog )
-    {
-        pDialog->SetModalInputMode( !bEnable );
-        pDialog->Show( !bEnable );
-    }
-}
-
 void lcl_enableRangeChoosing(bool bEnable, weld::DialogController* pDialog)
 {
     if (!pDialog)
@@ -169,17 +160,14 @@ namespace chart
 
 DataSourceTabPage::DataSourceTabPage(TabPageParent pParent, DialogModel & rDialogModel,
                                      ChartTypeTemplateProvider* pTemplateProvider,
-                                     Dialog * pParentDialog,
                                      bool bHideDescription /* = false */)
     : ::vcl::OWizardPage(pParent, "modules/schart/ui/tp_DataSource.ui", "tp_DataSource")
     , m_pTemplateProvider(pTemplateProvider)
     , m_rDialogModel(rDialogModel)
     , m_pCurrentRangeChoosingField( nullptr )
     , m_bIsDirty( false )
-    , m_pParentDialog( pParentDialog )
     , m_pParentController(pParent.pController)
-    , m_pTabPageNotifiable(pParentDialog ? dynamic_cast<TabPageNotifiable*>(pParentDialog)
-                                         : dynamic_cast<TabPageNotifiable*>(m_pParentController))
+    , m_pTabPageNotifiable(dynamic_cast<TabPageNotifiable*>(m_pParentController))
     , m_xFT_CAPTION(m_xBuilder->weld_label("FT_CAPTION_FOR_WIZARD"))
     , m_xFT_SERIES(m_xBuilder->weld_label("FT_SERIES"))
     , m_xLB_SERIES(m_xBuilder->weld_tree_view("LB_SERIES"))
@@ -247,13 +235,6 @@ void DataSourceTabPage::InsertRoleLBEntry(const OUString& rRole, const OUString&
 
 DataSourceTabPage::~DataSourceTabPage()
 {
-    disposeOnce();
-}
-
-void DataSourceTabPage::dispose()
-{
-    m_pParentDialog.clear();
-    ::vcl::OWizardPage::dispose();
 }
 
 void DataSourceTabPage::ActivatePage()
@@ -548,7 +529,6 @@ IMPL_LINK_NOARG(DataSourceTabPage, MainRangeButtonClickedHdl, weld::Button&, voi
                                       m_xLB_SERIES->get_text(nEntry));
         }
 
-        lcl_enableRangeChoosing( true, m_pParentDialog );
         lcl_enableRangeChoosing( true, m_pParentController );
         m_rDialogModel.getRangeSelectionHelper()->chooseRange( aSelectedRolesRange, aUIStr, *this );
     }
@@ -565,7 +545,6 @@ IMPL_LINK_NOARG(DataSourceTabPage, CategoriesRangeButtonClickedHdl, weld::Button
         return;
 
     OUString aStr(SchResId(m_xFT_CATEGORIES->get_visible() ? STR_DATA_SELECT_RANGE_FOR_CATEGORIES : STR_DATA_SELECT_RANGE_FOR_DATALABELS));
-    lcl_enableRangeChoosing(true, m_pParentDialog);
     lcl_enableRangeChoosing(true, m_pParentController);
     m_rDialogModel.getRangeSelectionHelper()->chooseRange(
         m_rDialogModel.getCategoriesRange(), aStr, *this );
@@ -746,7 +725,6 @@ void DataSourceTabPage::listeningFinished(
     m_pCurrentRangeChoosingField = nullptr;
 
     updateControlState();
-    lcl_enableRangeChoosing(false, m_pParentDialog);
     lcl_enableRangeChoosing(false, m_pParentController);
 }
 
diff --git a/chart2/source/controller/dialogs/tp_DataSource.hxx b/chart2/source/controller/dialogs/tp_DataSource.hxx
index 26698ce91821..5386ae1b4fba 100644
--- a/chart2/source/controller/dialogs/tp_DataSource.hxx
+++ b/chart2/source/controller/dialogs/tp_DataSource.hxx
@@ -54,7 +54,6 @@ public:
     explicit DataSourceTabPage(TabPageParent pParent,
                                DialogModel & rDialogModel,
                                ChartTypeTemplateProvider* pTemplateProvider,
-                               Dialog * pParentDialog,
                                bool bHideDescription = false);
     virtual ~DataSourceTabPage() override;
 
@@ -64,7 +63,6 @@ public:
 
 private:
     // OWizardPage
-    virtual void dispose() override;
     virtual bool commitPage( ::vcl::WizardTypes::CommitPageReason eReason ) override;
 
     //TabPage
@@ -123,7 +121,6 @@ private:
     weld::Entry*                m_pCurrentRangeChoosingField;
     bool                        m_bIsDirty;
 
-    VclPtr<Dialog>              m_pParentDialog;
     weld::DialogController*     m_pParentController;
     TabPageNotifiable *         m_pTabPageNotifiable;
 
diff --git a/chart2/source/controller/dialogs/tp_RangeChooser.cxx b/chart2/source/controller/dialogs/tp_RangeChooser.cxx
index 39bc4ebe4f78..e0f03383492b 100644
--- a/chart2/source/controller/dialogs/tp_RangeChooser.cxx
+++ b/chart2/source/controller/dialogs/tp_RangeChooser.cxx
@@ -40,15 +40,6 @@ namespace
         }
     }
 
-    void lcl_enableRangeChoosing(bool bEnable, Dialog * pDialog)
-    {
-        if( pDialog )
-        {
-            pDialog->SetModalInputMode( !bEnable );
-            pDialog->Show(!bEnable);
-        }
-    }
-
     void lcl_enableRangeChoosing(bool bEnable, weld::DialogController* pDialog)
     {
         if (!pDialog)
@@ -69,17 +60,15 @@ using ::com::sun::star::uno::Sequence;
 
 RangeChooserTabPage::RangeChooserTabPage(TabPageParent pParent, DialogModel & rDialogModel,
                                          ChartTypeTemplateProvider* pTemplateProvider,
-                                         Dialog* pParentDialog, bool bHideDescription /* = false */)
+                                         bool bHideDescription /* = false */)
     : OWizardPage(pParent, "modules/schart/ui/tp_RangeChooser.ui", "tp_RangeChooser")
     , m_nChangingControlCalls(0)
     , m_bIsDirty(false)
     , m_aLastValidRangeString()
     , m_pTemplateProvider(pTemplateProvider)
     , m_rDialogModel( rDialogModel )
-    , m_pParentDialog(pParentDialog)
     , m_pParentController(pParent.pController)
-    , m_pTabPageNotifiable(pParentDialog ? dynamic_cast<TabPageNotifiable*>(pParentDialog)
-                                         : dynamic_cast<TabPageNotifiable*>(m_pParentController))
+    , m_pTabPageNotifiable(dynamic_cast<TabPageNotifiable*>(m_pParentController))
     , m_xFT_Caption(m_xBuilder->weld_label("FT_CAPTION_FOR_WIZARD"))
     , m_xFT_Range(m_xBuilder->weld_label("FT_RANGE"))
     , m_xED_Range(m_xBuilder->weld_entry("ED_RANGE"))
@@ -135,13 +124,6 @@ RangeChooserTabPage::RangeChooserTabPage(TabPageParent pParent, DialogModel & rD
 
 RangeChooserTabPage::~RangeChooserTabPage()
 {
-    disposeOnce();
-}
-
-void RangeChooserTabPage::dispose()
-{
-    m_pParentDialog.clear();
-    OWizardPage::dispose();
 }
 
 void RangeChooserTabPage::ActivatePage()
@@ -358,7 +340,6 @@ IMPL_LINK_NOARG(RangeChooserTabPage, ChooseRangeHdl, weld::Button&, void)
     OUString aRange = m_xED_Range->get_text();
     OUString aTitle = m_xFTTitle->get_label();
 
-    lcl_enableRangeChoosing( true, m_pParentDialog );
     lcl_enableRangeChoosing( true, m_pParentController );
     m_rDialogModel.getRangeSelectionHelper()->chooseRange( aRange, aTitle, *this );
 }
@@ -385,7 +366,6 @@ void RangeChooserTabPage::listeningFinished( const OUString & rNewRange )
     if( isValid())
         changeDialogModelAccordingToControls();
 
-    lcl_enableRangeChoosing( false, m_pParentDialog );
     lcl_enableRangeChoosing( false, m_pParentController );
 }
 void RangeChooserTabPage::disposingRangeSelection()
diff --git a/chart2/source/controller/dialogs/tp_RangeChooser.hxx b/chart2/source/controller/dialogs/tp_RangeChooser.hxx
index 6bf8f28156e8..d630fc59f109 100644
--- a/chart2/source/controller/dialogs/tp_RangeChooser.hxx
+++ b/chart2/source/controller/dialogs/tp_RangeChooser.hxx
@@ -39,9 +39,8 @@ public:
 
     RangeChooserTabPage(TabPageParent pParent, DialogModel & rDialogModel,
                         ChartTypeTemplateProvider* pTemplateProvider,
-                        Dialog * pParentDialog, bool bHideDescription = false);
+                        bool bHideDescription = false);
     virtual ~RangeChooserTabPage() override;
-    virtual void dispose() override;
 
     //RangeSelectionListenerParent
     virtual void listeningFinished( const OUString & rNewRange ) override;
@@ -78,7 +77,6 @@ private:
     ChartTypeTemplateProvider*                              m_pTemplateProvider;
 
     DialogModel &                                           m_rDialogModel;
-    VclPtr<Dialog>                                          m_pParentDialog;
     weld::DialogController*                                 m_pParentController;
     TabPageNotifiable *                                     m_pTabPageNotifiable;
 
diff --git a/chart2/source/controller/inc/dlg_CreationWizard.hxx b/chart2/source/controller/inc/dlg_CreationWizard.hxx
index 0f05f6243f14..8562d6365020 100644
--- a/chart2/source/controller/inc/dlg_CreationWizard.hxx
+++ b/chart2/source/controller/inc/dlg_CreationWizard.hxx
@@ -36,10 +36,10 @@ namespace chart
 class DialogModel;
 class ChartTypeTemplateProvider;
 
-class CreationWizard : public vcl::RoadmapWizard, public TabPageNotifiable
+class CreationWizard : public vcl::RoadmapWizardMachine, public TabPageNotifiable
 {
 public:
-    CreationWizard(vcl::Window* pParent,
+    CreationWizard(weld::Window* pParent,
         const css::uno::Reference<css::frame::XModel>& xChartModel,
         const css::uno::Reference<css::uno::XComponentContext>& xContext);
 
@@ -50,6 +50,8 @@ public:
     virtual void setInvalidPage(TabPage * pTabPage) override;
     virtual void setValidPage(TabPage * pTabPage) override;
 
+    virtual short run() override;
+
 protected:
     virtual bool leaveState( WizardState _nState ) override;
     virtual WizardState determineNextState(WizardState nCurrentState) const override;
diff --git a/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx b/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx
index a54adb5c6a5e..230cac85816d 100644
--- a/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx
+++ b/chart2/source/controller/inc/dlg_CreationWizard_UNO.hxx
@@ -92,8 +92,6 @@ public:
     virtual void SAL_CALL addVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override;
     virtual void SAL_CALL removeVetoableChangeListener( const OUString& PropertyName, const css::uno::Reference< css::beans::XVetoableChangeListener >& aListener ) override;
 
-    DECL_LINK( DialogEventHdl, VclWindowEvent&, void );
-
 protected:
     // ____ OComponentHelper ____
     /// Called in dispose method after the listeners were notified.
@@ -107,7 +105,7 @@ private:
     css::uno::Reference< css::uno::XComponentContext>    m_xCC;
     css::uno::Reference< css::awt::XWindow >             m_xParentWindow;
 
-    VclPtr<CreationWizard>     m_pDialog;
+    std::unique_ptr<CreationWizard> m_xDialog;
     bool            m_bUnlockControllersOnExecute;
 };
 
diff --git a/chart2/uiconfig/ui/tp_RangeChooser.ui b/chart2/uiconfig/ui/tp_RangeChooser.ui
index 2684913d3595..9a74a3d171b4 100644
--- a/chart2/uiconfig/ui/tp_RangeChooser.ui
+++ b/chart2/uiconfig/ui/tp_RangeChooser.ui
@@ -11,6 +11,7 @@
   <object class="GtkGrid" id="tp_RangeChooser">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
+    <property name="hexpand">True</property>
     <property name="border_width">6</property>
     <child>
       <object class="GtkGrid" id="box1">
diff --git a/chart2/uiconfig/ui/wizelementspage.ui b/chart2/uiconfig/ui/wizelementspage.ui
index b301b8258f1e..574907036d71 100644
--- a/chart2/uiconfig/ui/wizelementspage.ui
+++ b/chart2/uiconfig/ui/wizelementspage.ui
@@ -5,6 +5,7 @@
   <object class="GtkBox" id="WizElementsPage">
     <property name="visible">True</property>
     <property name="can_focus">False</property>
+    <property name="hexpand">True</property>
     <property name="border_width">6</property>
     <property name="orientation">vertical</property>
     <property name="spacing">12</property>
@@ -12,18 +13,21 @@
       <object class="GtkFrame" id="frameAxes">
         <property name="visible">True</property>
         <property name="can_focus">False</property>
+        <property name="hexpand">True</property>
         <property name="label_xalign">0</property>
         <property name="shadow_type">none</property>
         <child>
           <object class="GtkAlignment" id="alignment1">
             <property name="visible">True</property>
             <property name="can_focus">False</property>
+            <property name="hexpand">True</property>
             <property name="top_padding">6</property>
             <property name="left_padding">12</property>
             <child>
               <object class="GtkGrid" id="grid2">
                 <property name="visible">True</property>
                 <property name="can_focus">False</property>
+                <property name="hexpand">True</property>
                 <property name="column_spacing">18</property>
                 <child>
                   <object class="GtkGrid" id="grid4">
diff --git a/dbaccess/UIConfig_dbaccess.mk b/dbaccess/UIConfig_dbaccess.mk
index ff79be062c22..eacb9eb112c2 100644
--- a/dbaccess/UIConfig_dbaccess.mk
+++ b/dbaccess/UIConfig_dbaccess.mk
@@ -21,7 +21,6 @@ $(eval $(call gb_UIConfig_add_uifiles,dbaccess, \
     dbaccess/uiconfig/ui/colwidthdialog \
     dbaccess/uiconfig/ui/connectionpage \
     dbaccess/uiconfig/ui/copytablepage \
-    dbaccess/uiconfig/ui/databasewizard \
     dbaccess/uiconfig/ui/dbaseindexdialog \
     dbaccess/uiconfig/ui/dbasepage \
     dbaccess/uiconfig/ui/dbwizconnectionpage \
diff --git a/dbaccess/source/ui/dlg/dbwizsetup.cxx b/dbaccess/source/ui/dlg/dbwizsetup.cxx
index e878a7d611eb..78ec885efa14 100644
--- a/dbaccess/source/ui/dlg/dbwizsetup.cxx
+++ b/dbaccess/source/ui/dlg/dbwizsetup.cxx
@@ -68,6 +68,7 @@
 #include <com/sun/star/ucb/IOErrorCode.hpp>
 #include <com/sun/star/task/InteractionHandler.hpp>
 #include <com/sun/star/task/XInteractionHandler2.hpp>
+#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
 #include <com/sun/star/ui/dialogs/TemplateDescription.hpp>
 
 #include <svl/filenotation.hxx>
@@ -173,6 +174,14 @@ ODbTypeWizDialogSetup::ODbTypeWizDialogSetup(weld::Window* _pParent
     m_xAssistant->set_current_page(0);
 }
 
+short ODbTypeWizDialogSetup::run()
+{
+    int nRet = vcl::RoadmapWizardMachine::run();
+    if (nRet == static_cast<int>(WizardButtonFlags::FINISH))
+        return ui::dialogs::ExecutableDialogResults::OK;
+    return ui::dialogs::ExecutableDialogResults::CANCEL;
+}
+
 void ODbTypeWizDialogSetup::declareAuthDepPath( const OUString& _sURL, PathId _nPathId, const vcl::RoadmapWizardTypes::WizardPath& _rPaths)
 {
     bool bHasAuthentication = DataSourceMetaData::getAuthentication( _sURL ) != AuthNone;
diff --git a/dbaccess/source/ui/inc/dbwizsetup.hxx b/dbaccess/source/ui/inc/dbwizsetup.hxx
index 16969b467ee3..171c58bfbba1 100644
--- a/dbaccess/source/ui/inc/dbwizsetup.hxx
+++ b/dbaccess/source/ui/inc/dbwizsetup.hxx
@@ -118,6 +118,7 @@ public:
     */
     bool IsTableWizardToBeStarted() const;
 
+    virtual short run() override;
 private:
     /// to override to create new pages
     virtual VclPtr<TabPage> createPage(WizardState _nState) override;
diff --git a/dbaccess/source/ui/uno/DBTypeWizDlgSetup.cxx b/dbaccess/source/ui/uno/DBTypeWizDlgSetup.cxx
index 8361a2325cea..e372cbec082b 100644
--- a/dbaccess/source/ui/uno/DBTypeWizDlgSetup.cxx
+++ b/dbaccess/source/ui/uno/DBTypeWizDlgSetup.cxx
@@ -26,6 +26,7 @@
 #include <com/sun/star/beans/PropertyAttribute.hpp>
 #include <com/sun/star/sdb/XOfficeDatabaseDocument.hpp>
 #include <com/sun/star/sdbc/XDataSource.hpp>
+#include <com/sun/star/ui/dialogs/ExecutableDialogResults.hpp>
 #include <comphelper/processfactory.hxx>
 #include <vcl/svapp.hxx>
 
@@ -111,9 +112,9 @@ svt::OGenericUnoDialog::Dialog ODBTypeWizDialogSetup::createDialog(const css::un
     return svt::OGenericUnoDialog::Dialog(std::make_unique<ODbTypeWizDialogSetup>(Application::GetFrameWeld(rParent), m_pDatasourceItems.get(), m_aContext, m_aInitialSelection));
 }
 
-void ODBTypeWizDialogSetup::executedDialog(sal_Int16 _nExecutionResult)
+void ODBTypeWizDialogSetup::executedDialog(sal_Int16 nExecutionResult)
 {
-    if ( _nExecutionResult == RET_OK )
+    if (nExecutionResult == css::ui::dialogs::ExecutableDialogResults::OK)
     {
         const ODbTypeWizDialogSetup* pDialog = static_cast<ODbTypeWizDialogSetup*>(m_aDialog.m_xWeldDialog.get());
         m_bOpenDatabase = pDialog->IsDatabaseDocumentToBeOpened();
diff --git a/include/vcl/roadmapwizard.hxx b/include/vcl/roadmapwizard.hxx
index df0632af5085..de70169fdbcc 100644
--- a/include/vcl/roadmapwizard.hxx
+++ b/include/vcl/roadmapwizard.hxx
@@ -230,8 +230,6 @@ namespace vcl
 
         void            SetRoadmapHelpId( const OString& _rId );
 
-        void            SetRoadmapInteractive( bool _bInteractive );
-
         // returns whether a given state is enabled
         bool            isStateEnabled( WizardState _nState ) const;
 
diff --git a/include/vcl/weld.hxx b/include/vcl/weld.hxx
index d4b688243c68..61deac2be88a 100644
--- a/include/vcl/weld.hxx
+++ b/include/vcl/weld.hxx
@@ -480,6 +480,8 @@ public:
     virtual void set_page_sensitive(const OString& rIdent, bool bSensitive) = 0;
     virtual weld::Container* append_page(const OString& rIdent) = 0;
 
+    virtual void set_page_side_help_id(const OString& rHelpId) = 0;
+
     void connect_jump_page(const Link<const OString&, bool>& rLink) { m_aJumpPageHdl = rLink; }
 };
 
diff --git a/vcl/UIConfig_vcl.mk b/vcl/UIConfig_vcl.mk
index 3184aaee5293..638fc9a537ae 100644
--- a/vcl/UIConfig_vcl.mk
+++ b/vcl/UIConfig_vcl.mk
@@ -11,6 +11,7 @@ $(eval $(call gb_UIConfig_UIConfig,vcl))
 
 $(eval $(call gb_UIConfig_add_uifiles,vcl,\
 	vcl/uiconfig/ui/aboutbox \
+	vcl/uiconfig/ui/wizard \
 	vcl/uiconfig/ui/cupspassworddialog \
 	vcl/uiconfig/ui/editmenu \
 	vcl/uiconfig/ui/errornocontentdialog \
diff --git a/vcl/source/app/salvtables.cxx b/vcl/source/app/salvtables.cxx
index e0f3ad3f35c3..547bac4170c1 100644
--- a/vcl/source/app/salvtables.cxx
+++ b/vcl/source/app/salvtables.cxx
@@ -1653,6 +1653,11 @@ public:
         }
     }
 
+    virtual void set_page_side_help_id(const OString& rHelpId) override
+    {
+        m_xWizard->SetRoadmapHelpId(rHelpId);
+    }
+
     weld::Button* weld_widget_for_response(int nResponse) override;
 
     virtual ~SalInstanceAssistant() override
diff --git a/vcl/source/control/roadmapwizard.cxx b/vcl/source/control/roadmapwizard.cxx
index 2d29a71aa47a..66f098e31cb9 100644
--- a/vcl/source/control/roadmapwizard.cxx
+++ b/vcl/source/control/roadmapwizard.cxx
@@ -170,12 +170,12 @@ namespace vcl
         m_pImpl->pRoadmap->SetHelpId( _rId );
     }
 
-    void RoadmapWizard::SetRoadmapInteractive( bool _bInteractive )
+    void RoadmapWizardMachine::SetRoadmapHelpId(const OString& rId)
     {
-        m_pImpl->pRoadmap->SetRoadmapInteractive( _bInteractive );
+        m_xAssistant->set_page_side_help_id(rId);
     }
 
-    void RoadmapWizardMachine::SetRoadmapInteractive( bool _bInteractive )
+    void RoadmapWizard::SetRoadmapInteractive( bool _bInteractive )
     {
         m_pImpl->pRoadmap->SetRoadmapInteractive( _bInteractive );
     }
diff --git a/vcl/source/control/wizardmachine.cxx b/vcl/source/control/wizardmachine.cxx
index 8a1a92a707f2..8f291ce40c38 100644
--- a/vcl/source/control/wizardmachine.cxx
+++ b/vcl/source/control/wizardmachine.cxx
@@ -685,7 +685,7 @@ namespace vcl
     }
 
     WizardMachine::WizardMachine(weld::Window* pParent, WizardButtonFlags nButtonFlags)
-        : AssistantController(pParent, "dbaccess/ui/databasewizard.ui", "DatabaseWizard")
+        : AssistantController(pParent, "vcl/ui/wizard.ui", "Wizard")
         , m_nCurState(0)
         , m_pFirstPage(nullptr)
         , m_xFinish(m_xAssistant->weld_widget_for_response(static_cast<int>(WizardButtonFlags::FINISH)))
@@ -892,7 +892,7 @@ namespace vcl
 
     bool WizardMachine::onFinish()
     {
-        return Finish( RET_OK );
+        return Finish(static_cast<int>(WizardButtonFlags::FINISH));
     }
 
     IMPL_LINK_NOARG(WizardMachine, OnFinish, weld::Button&, void)
diff --git a/dbaccess/uiconfig/ui/databasewizard.ui b/vcl/uiconfig/ui/wizard.ui
similarity index 73%
rename from dbaccess/uiconfig/ui/databasewizard.ui
rename to vcl/uiconfig/ui/wizard.ui
index 5f07332a825e..e1f68da9e66a 100644
--- a/dbaccess/uiconfig/ui/databasewizard.ui
+++ b/vcl/uiconfig/ui/wizard.ui
@@ -1,11 +1,10 @@
 <?xml version="1.0" encoding="UTF-8"?>
 <!-- Generated with glade 3.22.1 -->
-<interface domain="dba">
+<interface domain="vcl">
   <requires lib="gtk+" version="3.20"/>
-  <object class="GtkAssistant" id="DatabaseWizard">
+  <object class="GtkAssistant" id="Wizard">
     <property name="can_focus">True</property>
     <property name="border_width">6</property>
-    <property name="title" translatable="yes" context="databasewizard|DatabaseWizard">Database Wizard</property>
     <property name="modal">True</property>
     <property name="default_width">0</property>
     <property name="default_height">0</property>
diff --git a/vcl/unx/gtk3/gtk3gtkinst.cxx b/vcl/unx/gtk3/gtk3gtkinst.cxx
index 45f6ae5a9813..4045e1c3c91c 100644
--- a/vcl/unx/gtk3/gtk3gtkinst.cxx
+++ b/vcl/unx/gtk3/gtk3gtkinst.cxx
@@ -3012,10 +3012,16 @@ struct DialogRunner
     static void signal_response(GtkDialog*, gint nResponseId, gpointer data);
     static void signal_cancel(GtkDialog*, gpointer data);
 
-    static gboolean signal_delete(GtkDialog*, GdkEventAny*, gpointer data)
+    static gboolean signal_delete(GtkDialog* pDialog, GdkEventAny*, gpointer data)
     {
         DialogRunner* pThis = static_cast<DialogRunner*>(data);
-        pThis->loop_quit();
+        if (GTK_IS_ASSISTANT(pThis->m_pDialog))
+        {
+            // An assistant isn't a dialog, but we want to treat it like one
+            signal_response(pDialog, GTK_RESPONSE_DELETE_EVENT, data);
+        }
+        else
+            pThis->loop_quit();
         return true; /* Do not destroy */
     }
 
@@ -3835,6 +3841,13 @@ public:
         return m_aPages.back().get();
     }
 
+    virtual void set_page_side_help_id(const OString& rHelpId) override
+    {
+        if (!m_pSidebar)
+            return;
+        ::set_help_id(m_pSidebar, rHelpId);
+    }
+
     virtual GtkButton* get_widget_for_response(int nGtkResponse) override
     {
         GtkButton* pButton = nullptr;


More information about the Libreoffice-commits mailing list