summaryrefslogtreecommitdiff
path: root/dbaccess
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2018-12-06 09:34:38 +0000
committerCaolán McNamara <caolanm@redhat.com>2018-12-06 12:41:07 +0100
commit9fe049918965c8ffa5bc8245f17ea7376539db8a (patch)
tree56151c39f0e2aad2726d58feee249f690c04f1d5 /dbaccess
parenta84ef3875bdbd2881d28ea721a077dede41e54eb (diff)
tdf#121935 crash on "set up connect to text files"
Change-Id: I73bc93ebb5010f3a376b3b121e1ac873f1be137a Reviewed-on: https://gerrit.libreoffice.org/64677 Tested-by: Jenkins Reviewed-by: Caolán McNamara <caolanm@redhat.com> Tested-by: Caolán McNamara <caolanm@redhat.com>
Diffstat (limited to 'dbaccess')
-rw-r--r--dbaccess/source/ui/dlg/DBSetupConnectionPages.cxx27
-rw-r--r--dbaccess/source/ui/dlg/DBSetupConnectionPages.hxx3
-rw-r--r--dbaccess/source/ui/dlg/detailpages.cxx18
-rw-r--r--dbaccess/source/ui/dlg/detailpages.hxx3
4 files changed, 33 insertions, 18 deletions
diff --git a/dbaccess/source/ui/dlg/DBSetupConnectionPages.cxx b/dbaccess/source/ui/dlg/DBSetupConnectionPages.cxx
index 4a3473e5dacc..5d0e19a955a7 100644
--- a/dbaccess/source/ui/dlg/DBSetupConnectionPages.cxx
+++ b/dbaccess/source/ui/dlg/DBSetupConnectionPages.cxx
@@ -69,9 +69,15 @@ using namespace ::com::sun::star;
: OConnectionTabPageSetup(pParent, "dbaccess/ui/dbwiztextpage.ui", "DBWizTextPage",
rCoreAttrs, STR_TEXT_HELPTEXT, STR_TEXT_HEADERTEXT, STR_TEXT_PATH_OR_FILE)
, m_xSubContainer(m_xBuilder->weld_widget("TextPageContainer"))
- , m_aTextConnectionHelper(m_xSubContainer.get(), TC_EXTENSION | TC_SEPARATORS)
+ , m_xTextConnectionHelper(new OTextConnectionHelper(m_xSubContainer.get(), TC_EXTENSION | TC_SEPARATORS))
{
- m_aTextConnectionHelper.SetClickHandler(LINK( this, OTextConnectionPageSetup, ImplGetExtensionHdl ) );
+ m_xTextConnectionHelper->SetClickHandler(LINK( this, OTextConnectionPageSetup, ImplGetExtensionHdl ) );
+ }
+
+ void OTextConnectionPageSetup::dispose()
+ {
+ m_xTextConnectionHelper.reset();
+ OConnectionTabPageSetup::dispose();
}
OTextConnectionPageSetup::~OTextConnectionPageSetup()
@@ -81,27 +87,27 @@ using namespace ::com::sun::star;
IMPL_LINK_NOARG(OTextConnectionPageSetup, ImplGetExtensionHdl, OTextConnectionHelper*, void)
{
- SetRoadmapStateValue(!m_aTextConnectionHelper.GetExtension().isEmpty() && OConnectionTabPageSetup::checkTestConnection());
+ SetRoadmapStateValue(!m_xTextConnectionHelper->GetExtension().isEmpty() && OConnectionTabPageSetup::checkTestConnection());
callModifiedHdl();
}
bool OTextConnectionPageSetup::checkTestConnection()
{
bool bDoEnable = OConnectionTabPageSetup::checkTestConnection();
- bDoEnable = !m_aTextConnectionHelper.GetExtension().isEmpty() && bDoEnable;
+ bDoEnable = !m_xTextConnectionHelper->GetExtension().isEmpty() && bDoEnable;
return bDoEnable;
}
void OTextConnectionPageSetup::fillControls(std::vector< std::unique_ptr<ISaveValueWrapper> >& _rControlList)
{
OConnectionTabPageSetup::fillControls(_rControlList);
- m_aTextConnectionHelper.fillControls(_rControlList);
+ m_xTextConnectionHelper->fillControls(_rControlList);
}
void OTextConnectionPageSetup::fillWindows(std::vector< std::unique_ptr<ISaveValueWrapper> >& _rControlList)
{
OConnectionTabPageSetup::fillWindows(_rControlList);
- m_aTextConnectionHelper.fillWindows(_rControlList);
+ m_xTextConnectionHelper->fillWindows(_rControlList);
}
void OTextConnectionPageSetup::implInitControls(const SfxItemSet& _rSet, bool _bSaveValue)
@@ -110,18 +116,19 @@ using namespace ::com::sun::star;
bool bValid, bReadonly;
getFlags(_rSet, bValid, bReadonly);
OConnectionTabPageSetup::implInitControls( _rSet, _bSaveValue);
- m_aTextConnectionHelper.implInitControls(_rSet, bValid);
+ m_xTextConnectionHelper->implInitControls(_rSet, bValid);
}
bool OTextConnectionPageSetup::FillItemSet( SfxItemSet* _rSet )
{
bool bChangedSomething = OConnectionTabPageSetup::FillItemSet(_rSet);
- bChangedSomething = m_aTextConnectionHelper.FillItemSet(*_rSet, bChangedSomething);
+ bChangedSomething = m_xTextConnectionHelper->FillItemSet(*_rSet, bChangedSomething);
return bChangedSomething;
}
- bool OTextConnectionPageSetup::prepareLeave(){
- return m_aTextConnectionHelper.prepareLeave();
+ bool OTextConnectionPageSetup::prepareLeave()
+ {
+ return m_xTextConnectionHelper->prepareLeave();
}
VclPtr<OGenericAdministrationPage> OLDAPConnectionPageSetup::CreateLDAPTabPage( vcl::Window* pParent, const SfxItemSet& _rAttrSet )
diff --git a/dbaccess/source/ui/dlg/DBSetupConnectionPages.hxx b/dbaccess/source/ui/dlg/DBSetupConnectionPages.hxx
index 8f9acc5e1470..fdc36ff6db16 100644
--- a/dbaccess/source/ui/dlg/DBSetupConnectionPages.hxx
+++ b/dbaccess/source/ui/dlg/DBSetupConnectionPages.hxx
@@ -56,11 +56,12 @@ namespace dbaui
{
public:
std::unique_ptr<weld::Widget> m_xSubContainer;
- OTextConnectionHelper m_aTextConnectionHelper;
+ std::unique_ptr<OTextConnectionHelper> m_xTextConnectionHelper;
virtual bool FillItemSet ( SfxItemSet* _rCoreAttrs ) override;
static VclPtr<OGenericAdministrationPage> CreateTextTabPage(TabPageParent pParent, const SfxItemSet& _rAttrSet );
OTextConnectionPageSetup(TabPageParent pParent, const SfxItemSet& _rCoreAttrs);
+ virtual void dispose() override;
virtual ~OTextConnectionPageSetup() override;
protected:
virtual bool prepareLeave() override;
diff --git a/dbaccess/source/ui/dlg/detailpages.cxx b/dbaccess/source/ui/dlg/detailpages.cxx
index 65d3bccd439a..60408c5e7b4b 100644
--- a/dbaccess/source/ui/dlg/detailpages.cxx
+++ b/dbaccess/source/ui/dlg/detailpages.cxx
@@ -668,7 +668,7 @@ namespace dbaui
// OTextDetailsPage
OTextDetailsPage::OTextDetailsPage(TabPageParent pParent, const SfxItemSet& rCoreAttrs)
: OCommonBehaviourTabPage(pParent, "dbaccess/ui/emptypage.ui", "EmptyPage", rCoreAttrs, OCommonBehaviourTabPageFlags::NONE)
- , m_aTextConnectionHelper(m_xContainer.get(), TC_EXTENSION | TC_HEADER | TC_SEPARATORS | TC_CHARSET)
+ , m_xTextConnectionHelper(new OTextConnectionHelper(m_xContainer.get(), TC_EXTENSION | TC_HEADER | TC_SEPARATORS | TC_CHARSET))
{
}
@@ -677,6 +677,12 @@ namespace dbaui
disposeOnce();
}
+ void OTextDetailsPage::dispose()
+ {
+ m_xTextConnectionHelper.reset();
+ OCommonBehaviourTabPage::dispose();
+ }
+
VclPtr<SfxTabPage> ODriversSettings::CreateText(TabPageParent pParent, const SfxItemSet* pAttrSet)
{
return VclPtr<OTextDetailsPage>::Create(pParent, *pAttrSet);
@@ -685,13 +691,13 @@ namespace dbaui
void OTextDetailsPage::fillControls(std::vector< std::unique_ptr<ISaveValueWrapper> >& _rControlList)
{
OCommonBehaviourTabPage::fillControls(_rControlList);
- m_aTextConnectionHelper.fillControls(_rControlList);
+ m_xTextConnectionHelper->fillControls(_rControlList);
}
void OTextDetailsPage::fillWindows(std::vector< std::unique_ptr<ISaveValueWrapper> >& _rControlList)
{
OCommonBehaviourTabPage::fillWindows(_rControlList);
- m_aTextConnectionHelper.fillWindows(_rControlList);
+ m_xTextConnectionHelper->fillWindows(_rControlList);
}
void OTextDetailsPage::implInitControls(const SfxItemSet& _rSet, bool _bSaveValue)
@@ -700,20 +706,20 @@ namespace dbaui
bool bValid, bReadonly;
getFlags(_rSet, bValid, bReadonly);
- m_aTextConnectionHelper.implInitControls(_rSet, bValid);
+ m_xTextConnectionHelper->implInitControls(_rSet, bValid);
OCommonBehaviourTabPage::implInitControls(_rSet, _bSaveValue);
}
bool OTextDetailsPage::FillItemSet( SfxItemSet* rSet )
{
bool bChangedSomething = OCommonBehaviourTabPage::FillItemSet(rSet);
- bChangedSomething = m_aTextConnectionHelper.FillItemSet(*rSet, bChangedSomething);
+ bChangedSomething = m_xTextConnectionHelper->FillItemSet(*rSet, bChangedSomething);
return bChangedSomething;
}
bool OTextDetailsPage::prepareLeave()
{
- return m_aTextConnectionHelper.prepareLeave();
+ return m_xTextConnectionHelper->prepareLeave();
}
VclPtr<SfxTabPage> ODriversSettings::CreateGeneratedValuesPage(TabPageParent pParent, const SfxItemSet* _rAttrSet)
diff --git a/dbaccess/source/ui/dlg/detailpages.hxx b/dbaccess/source/ui/dlg/detailpages.hxx
index e5ab8cb68fbb..4d712033fa1c 100644
--- a/dbaccess/source/ui/dlg/detailpages.hxx
+++ b/dbaccess/source/ui/dlg/detailpages.hxx
@@ -246,10 +246,11 @@ namespace dbaui
OTextDetailsPage(TabPageParent pParent, const SfxItemSet& rCoreAttrs);
- OTextConnectionHelper m_aTextConnectionHelper;
+ std::unique_ptr<OTextConnectionHelper> m_xTextConnectionHelper;
protected:
virtual ~OTextDetailsPage() override;
+ virtual void dispose() override;
virtual bool prepareLeave() override;
virtual void implInitControls(const SfxItemSet& _rSet, bool _bSaveValue) override;