Auto-deleting dialogs is a bad idea if we're accessing the instance
after exec(). We could work around this in the affected cases,
however it may be easier and cleaner to create the dialogs on the
stack again, but don't parent them to avoid the crashes we intended
to fix with this commit.
This reverts commit
4e452ee828fdb411e6b1db07c18e02681a30ff27.
void MainWin::showPasswordChangeDlg()
{
if(Client::isCoreFeatureEnabled(Quassel::Feature::PasswordChange)) {
void MainWin::showPasswordChangeDlg()
{
if(Client::isCoreFeatureEnabled(Quassel::Feature::PasswordChange)) {
- auto dlg = new PasswordChangeDlg(this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
- dlg->exec();
+ PasswordChangeDlg dlg(this);
+ dlg.exec();
- auto box = new QMessageBox(QMessageBox::Warning, tr("Feature Not Supported"),
- tr("<b>Your Quassel Core does not support this feature</b>"),
- QMessageBox::Ok, this);
- box->setInformativeText(tr("You need a Quassel Core v0.12.0 or newer in order to be able to remotely change your password."));
- box->setAttribute(Qt::WA_DeleteOnClose);
- box->exec();
+ QMessageBox box(QMessageBox::Warning, tr("Feature Not Supported"),
+ tr("<b>Your Quassel Core does not support this feature</b>"),
+ QMessageBox::Ok, this);
+ box.setInformativeText(tr("You need a Quassel Core v0.12.0 or newer in order to be able to remotely change your password."));
+ box.exec();
void MainWin::onExitRequested(const QString &reason)
{
if (!reason.isEmpty()) {
void MainWin::onExitRequested(const QString &reason)
{
if (!reason.isEmpty()) {
- auto box = new QMessageBox(QMessageBox::Critical,
- tr("Fatal error"),
- "<b>" + tr("Quassel encountered a fatal error and is terminated.") + "</b>",
- QMessageBox::Ok, this);
- box->setInformativeText("<p>" + tr("Reason:<em>") + " " + reason + "</em>");
- box->setAttribute(Qt::WA_DeleteOnClose);
- box->exec();
+ QMessageBox box(QMessageBox::Critical,
+ tr("Fatal error"),
+ "<b>" + tr("Quassel encountered a fatal error and is terminated.") + "</b>",
+ QMessageBox::Ok, this);
+ box.setInformativeText("<p>" + tr("Reason:<em>") + " " + reason + "</em>");
+ box.exec();
void MainWin::showNotificationsDlg()
{
void MainWin::showNotificationsDlg()
{
- auto dlg = new SettingsPageDlg(new NotificationsSettingsPage(this), this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
- dlg->exec();
+ SettingsPageDlg dlg(new NotificationsSettingsPage(this), this);
+ dlg.exec();
}
void MainWin::on_actionConfigureNetworks_triggered()
{
}
void MainWin::on_actionConfigureNetworks_triggered()
{
- auto dlg = new SettingsPageDlg(new NetworksSettingsPage(this), this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
- dlg->exec();
+ SettingsPageDlg dlg(new NetworksSettingsPage(this), this);
+ dlg.exec();
}
void MainWin::on_actionConfigureViews_triggered()
{
}
void MainWin::on_actionConfigureViews_triggered()
{
- auto dlg = new SettingsPageDlg(new BufferViewSettingsPage(this), this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
- dlg->exec();
+ SettingsPageDlg dlg(new BufferViewSettingsPage(this), this);
+ dlg.exec();
void MainWin::userAuthenticationRequired(CoreAccount *account, bool *valid, const QString &errorMessage)
{
Q_UNUSED(errorMessage)
void MainWin::userAuthenticationRequired(CoreAccount *account, bool *valid, const QString &errorMessage)
{
Q_UNUSED(errorMessage)
- auto dlg = new CoreConnectAuthDlg(account, this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
- *valid = (dlg->exec() == QDialog::Accepted);
+ CoreConnectAuthDlg dlg(account, this);
+ *valid = (dlg.exec() == QDialog::Accepted);
}
void MainWin::handleNoSslInClient(bool *accepted)
{
}
void MainWin::handleNoSslInClient(bool *accepted)
{
- auto box = new QMessageBox(QMessageBox::Warning, tr("Unencrypted Connection"), tr("<b>Your client does not support SSL encryption</b>"),
- QMessageBox::Ignore|QMessageBox::Cancel, this);
- box->setInformativeText(tr("Sensitive data, like passwords, will be transmitted unencrypted to your Quassel core."));
- box->setDefaultButton(QMessageBox::Ignore);
- box->setAttribute(Qt::WA_DeleteOnClose);
- *accepted = (box->exec() == QMessageBox::Ignore);
+ QMessageBox box(QMessageBox::Warning, tr("Unencrypted Connection"), tr("<b>Your client does not support SSL encryption</b>"),
+ QMessageBox::Ignore|QMessageBox::Cancel, this);
+ box.setInformativeText(tr("Sensitive data, like passwords, will be transmitted unencrypted to your Quassel core."));
+ box.setDefaultButton(QMessageBox::Ignore);
+ *accepted = box.exec() == QMessageBox::Ignore;
}
void MainWin::handleNoSslInCore(bool *accepted)
{
}
void MainWin::handleNoSslInCore(bool *accepted)
{
- auto box = new QMessageBox(QMessageBox::Warning, tr("Unencrypted Connection"), tr("<b>Your core does not support SSL encryption</b>"),
- QMessageBox::Ignore|QMessageBox::Cancel, this);
- box->setInformativeText(tr("Sensitive data, like passwords, will be transmitted unencrypted to your Quassel core."));
- box->setDefaultButton(QMessageBox::Ignore);
- box->setAttribute(Qt::WA_DeleteOnClose);
- *accepted = (box->exec() == QMessageBox::Ignore);
+ QMessageBox box(QMessageBox::Warning, tr("Unencrypted Connection"), tr("<b>Your core does not support SSL encryption</b>"),
+ QMessageBox::Ignore|QMessageBox::Cancel, this);
+ box.setInformativeText(tr("Sensitive data, like passwords, will be transmitted unencrypted to your Quassel core."));
+ box.setDefaultButton(QMessageBox::Ignore);
+ *accepted = box.exec() == QMessageBox::Ignore;
errorString += QString("<li>%1</li>").arg(error.errorString());
errorString += "</ul>";
errorString += QString("<li>%1</li>").arg(error.errorString());
errorString += "</ul>";
- auto box = new QMessageBox(QMessageBox::Warning,
- tr("Untrusted Security Certificate"),
- tr("<b>The SSL certificate provided by the core at %1 is untrusted for the following reasons:</b>").arg(socket->peerName()),
- QMessageBox::Cancel, this);
- box->setInformativeText(errorString);
- box->addButton(tr("Continue"), QMessageBox::AcceptRole);
- box->setDefaultButton(box->addButton(tr("Show Certificate"), QMessageBox::HelpRole));
- box->setAttribute(Qt::WA_DeleteOnClose);
+ QMessageBox box(QMessageBox::Warning,
+ tr("Untrusted Security Certificate"),
+ tr("<b>The SSL certificate provided by the core at %1 is untrusted for the following reasons:</b>").arg(socket->peerName()),
+ QMessageBox::Cancel, this);
+ box.setInformativeText(errorString);
+ box.addButton(tr("Continue"), QMessageBox::AcceptRole);
+ box.setDefaultButton(box.addButton(tr("Show Certificate"), QMessageBox::HelpRole));
QMessageBox::ButtonRole role;
do {
QMessageBox::ButtonRole role;
do {
- box->exec();
- role = box->buttonRole(box->clickedButton());
+ box.exec();
+ role = box.buttonRole(box.clickedButton());
if (role == QMessageBox::HelpRole) {
if (role == QMessageBox::HelpRole) {
- auto dlg = new SslInfoDlg(socket, this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
- dlg->exec();
+ SslInfoDlg dlg(socket, this);
+ dlg.exec();
}
}
while (role == QMessageBox::HelpRole);
*accepted = role == QMessageBox::AcceptRole;
if (*accepted) {
}
}
while (role == QMessageBox::HelpRole);
*accepted = role == QMessageBox::AcceptRole;
if (*accepted) {
- auto box2 = new QMessageBox(QMessageBox::Warning,
- tr("Untrusted Security Certificate"),
- tr("Would you like to accept this certificate forever without being prompted?"),
- nullptr, this);
- box2->setDefaultButton(box2->addButton(tr("Current Session Only"), QMessageBox::NoRole));
- box2->addButton(tr("Forever"), QMessageBox::YesRole);
- box2->setAttribute(Qt::WA_DeleteOnClose);
- box2->exec();
- *permanently = (box2->buttonRole(box2->clickedButton()) == QMessageBox::YesRole);
+ QMessageBox box2(QMessageBox::Warning,
+ tr("Untrusted Security Certificate"),
+ tr("Would you like to accept this certificate forever without being prompted?"),
+ 0, this);
+ box2.setDefaultButton(box2.addButton(tr("Current Session Only"), QMessageBox::NoRole));
+ box2.addButton(tr("Forever"), QMessageBox::YesRole);
+ box2.exec();
+ *permanently = box2.buttonRole(box2.clickedButton()) == QMessageBox::YesRole;
void MainWin::showCoreConnectionDlg()
{
void MainWin::showCoreConnectionDlg()
{
- auto dlg = new CoreConnectDlg(this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
- if (dlg->exec() == QDialog::Accepted) {
- AccountId accId = dlg->selectedAccount();
+ CoreConnectDlg dlg(this);
+ if (dlg.exec() == QDialog::Accepted) {
+ AccountId accId = dlg.selectedAccount();
if (accId.isValid())
Client::coreConnection()->connectToCore(accId);
}
if (accId.isValid())
Client::coreConnection()->connectToCore(accId);
}
if (!netId.isValid()) {
// We still haven't found a valid network, probably no network selected, e.g. "/list"
// on the client homescreen when no networks are connected.
if (!netId.isValid()) {
// We still haven't found a valid network, probably no network selected, e.g. "/list"
// on the client homescreen when no networks are connected.
- auto box = new QMessageBox(QMessageBox::Information, tr("No network selected"),
- QString("<b>%1</b>").arg(tr("No network selected")),
- QMessageBox::Ok, this);
- box->setInformativeText(tr("Select a network before trying to view the channel list."));
- box->setAttribute(Qt::WA_DeleteOnClose);
- box->exec();
+ QMessageBox box(QMessageBox::Information, tr("No network selected"),
+ QString("<b>%1</b>").arg(tr("No network selected")),
+ QMessageBox::Ok, this);
+ box.setInformativeText(tr("Select a network before trying to view the channel list."));
+ box.exec();
void MainWin::showNetworkConfig(NetworkId netId)
{
void MainWin::showNetworkConfig(NetworkId netId)
{
- auto dlg = new SettingsPageDlg(new NetworksSettingsPage(this), this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
+ SettingsPageDlg dlg(new NetworksSettingsPage(this), this);
- qobject_cast<NetworksSettingsPage *>(dlg->currentPage())->bufferList_Open(netId);
- dlg->exec();
+ qobject_cast<NetworksSettingsPage *>(dlg.currentPage())->bufferList_Open(netId);
+ dlg.exec();
}
void MainWin::showIgnoreList(QString newRule)
{
}
void MainWin::showIgnoreList(QString newRule)
{
- auto dlg = new SettingsPageDlg(new IgnoreListSettingsPage(this), this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
+ SettingsPageDlg dlg(new IgnoreListSettingsPage(this), this);
// prepare config dialog for new rule
if (!newRule.isEmpty())
// prepare config dialog for new rule
if (!newRule.isEmpty())
- qobject_cast<IgnoreListSettingsPage *>(dlg->currentPage())->editIgnoreRule(newRule);
- dlg->exec();
+ qobject_cast<IgnoreListSettingsPage *>(dlg.currentPage())->editIgnoreRule(newRule);
+ dlg.exec();
}
void MainWin::showCoreInfoDlg()
{
}
void MainWin::showCoreInfoDlg()
{
- auto dlg = new CoreInfoDlg(this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
- dlg->exec();
+ CoreInfoDlg(this).exec();
void MainWin::showSettingsDlg()
{
SettingsDlg *dlg = new SettingsDlg();
void MainWin::showSettingsDlg()
{
SettingsDlg *dlg = new SettingsDlg();
- dlg->setAttribute(Qt::WA_DeleteOnClose);
//Category: Interface
dlg->registerSettingsPage(new AppearanceSettingsPage(dlg));
//Category: Interface
dlg->registerSettingsPage(new AppearanceSettingsPage(dlg));
void MainWin::showAboutDlg()
{
void MainWin::showAboutDlg()
{
- auto dlg = new AboutDlg(this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
- dlg->exec();
}
void MainWin::showShortcutsDlg()
{
#ifdef HAVE_KDE
}
void MainWin::showShortcutsDlg()
{
#ifdef HAVE_KDE
- auto dlg = new KShortcutsDialog(KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsDisallowed, this);
- foreach(KActionCollection *coll, QtUi::actionCollections()) {
- dlg->addCollection(coll, coll->property("Category").toString());
- }
- dlg->setAttribute(Qt::WA_DeleteOnClose);
- dlg->configure(true);
+ KShortcutsDialog dlg(KShortcutsEditor::AllActions, KShortcutsEditor::LetterShortcutsDisallowed, this);
+ foreach(KActionCollection *coll, QtUi::actionCollections())
+ dlg.addCollection(coll, coll->property("Category").toString());
+ dlg.configure(true);
- auto dlg = new SettingsPageDlg(new ShortcutsSettingsPage(QtUi::actionCollections(), this), this);
- dlg->setAttribute(Qt::WA_DeleteOnClose);
- dlg->exec();
+ SettingsPageDlg dlg(new ShortcutsSettingsPage(QtUi::actionCollections(), this), this);
+ dlg.exec();
_changed(false),
_autoWidgetsChanged(false)
{
_changed(false),
_autoWidgetsChanged(false)
{
- setAttribute(Qt::WA_DeleteOnClose);