aboutsummaryrefslogtreecommitdiffstats
path: root/src/modules
diff options
context:
space:
mode:
authorGravatar Szymon Tomasz Stefanek2011-02-21 22:16:06 +0000
committerGravatar Szymon Tomasz Stefanek2011-02-21 22:16:06 +0000
commit5570e05af982c7581ba28d873bd95f0afb6307a1 (patch)
tree722f8adff9ab7b6453ba87f7619fd0f6c0b33175 /src/modules
parentMake some entries of the default script translateable (diff)
downloadKVIrc-5570e05af982c7581ba28d873bd95f0afb6307a1.tar.gz
KVIrc-5570e05af982c7581ba28d873bd95f0afb6307a1.tar.bz2
KVIrc-5570e05af982c7581ba28d873bd95f0afb6307a1.zip
Fix a crash in the server options widget
git-svn-id: https://svn.kvirc.de/svn/trunk/kvirc@5492 17fca916-40b9-46aa-a4ea-0a15b648b75c
Diffstat (limited to 'src/modules')
-rw-r--r--src/modules/options/OptionsWidget_servers.cpp18
-rw-r--r--src/modules/options/OptionsWidget_servers.h2
2 files changed, 17 insertions, 3 deletions
diff --git a/src/modules/options/OptionsWidget_servers.cpp b/src/modules/options/OptionsWidget_servers.cpp
index aff0f9d24..41f584f31 100644
--- a/src/modules/options/OptionsWidget_servers.cpp
+++ b/src/modules/options/OptionsWidget_servers.cpp
@@ -1370,6 +1370,7 @@ OptionsWidget_servers::OptionsWidget_servers(QWidget * parent)
KviTalToolTip::add(tb,__tr2qs_ctx("<center>This button shows a list of recently used servers. It allows you to quickly find them in the list.</center>","options"));
+ m_pShowThisDialogAtStartupSelector = NULL;
// The "Show this dialog at startup" option is shown only when the server options widget is shown as standalone dialog
if(parent->inherits("OptionsWidgetContainer"))
@@ -1411,10 +1412,13 @@ OptionsWidget_servers::OptionsWidget_servers(QWidget * parent)
OptionsWidgetContainer * pContainer = dynamic_cast<OptionsWidgetContainer *>(parent);
if(pContainer)
{
- KviBoolSelector * b = addBoolSelector(pContainer,__tr2qs_ctx("Show this dialog at startup","options"),KviOption_boolShowServersConnectDialogOnStart);
- pContainer->setLeftCornerWidget(b);
+ m_pShowThisDialogAtStartupSelector = addBoolSelector(pContainer,__tr2qs_ctx("Show this dialog at startup","options"),KviOption_boolShowServersConnectDialogOnStart);
+ pContainer->setLeftCornerWidget(m_pShowThisDialogAtStartupSelector);
+ // This selector can be destroyed upon reparenting: make sure it's removed from the selector list
+ // (or we'll get a crash at commit() time...).
+ QObject::connect(m_pShowThisDialogAtStartupSelector,SIGNAL(destroyed()),this,SLOT(slotShowThisDialogAtStartupSelectorDestroyed()));
- KviTalToolTip::add(b,__tr2qs_ctx("<center>If this option is enabled, the Servers dialog will appear every time you start KVIrc</center>","options"));
+ KviTalToolTip::add(m_pShowThisDialogAtStartupSelector,__tr2qs_ctx("<center>If this option is enabled, the Servers dialog will appear every time you start KVIrc</center>","options"));
}
} else {
m_pConnectCurrent = NULL;
@@ -1448,6 +1452,14 @@ OptionsWidget_servers::~OptionsWidget_servers()
delete m_pNetworkDetailsDialog;
}
+void OptionsWidget_servers::slotShowThisDialogAtStartupSelectorDestroyed()
+{
+ KVI_ASSERT(m_pShowThisDialogAtStartupSelector);
+
+ removeSelector(m_pShowThisDialogAtStartupSelector);
+ m_pShowThisDialogAtStartupSelector = NULL;
+}
+
void OptionsWidget_servers::recentServersPopupAboutToShow()
{
g_pApp->fillRecentServersPopup(m_pRecentPopup);
diff --git a/src/modules/options/OptionsWidget_servers.h b/src/modules/options/OptionsWidget_servers.h
index cebc50164..2d394560b 100644
--- a/src/modules/options/OptionsWidget_servers.h
+++ b/src/modules/options/OptionsWidget_servers.h
@@ -190,6 +190,7 @@ protected:
IrcServerDetailsWidget * m_pServerDetailsDialog;
IrcNetworkDetailsWidget * m_pNetworkDetailsDialog;
KviMexServerImport * m_pImportFilter;
+ KviBoolSelector * m_pShowThisDialogAtStartupSelector;
QToolButton * m_pNewServerButton;
QToolButton * m_pNewNetworkButton;
@@ -203,6 +204,7 @@ private:
IrcServerOptionsTreeWidgetItem * findNetItem(const QString &netname);
void selectBestServerByUrl(const QString &szUrl);
protected slots:
+ void slotShowThisDialogAtStartupSelectorDestroyed();
void importerDead();
void importServer(const KviIrcServer & s,const QString &network);
void importPopupAboutToShow();