diff --git a/src/plugins/texteditor/fontsettingspage.cpp b/src/plugins/texteditor/fontsettingspage.cpp index 5a8e457768a..67b551496c4 100644 --- a/src/plugins/texteditor/fontsettingspage.cpp +++ b/src/plugins/texteditor/fontsettingspage.cpp @@ -36,6 +36,7 @@ #include #include +#include #include #include @@ -357,7 +358,7 @@ QWidget *FontSettingsPage::createPage(QWidget *parent) connect(d_ptr->ui.sizeComboBox, SIGNAL(currentIndexChanged(QString)), this, SLOT(fontSizeSelected(QString))); connect(d_ptr->ui.schemeComboBox, SIGNAL(currentIndexChanged(int)), this, SLOT(colorSchemeSelected(int))); connect(d_ptr->ui.copyButton, SIGNAL(clicked()), this, SLOT(copyColorScheme())); - connect(d_ptr->ui.deleteButton, SIGNAL(clicked()), this, SLOT(deleteColorScheme())); + connect(d_ptr->ui.deleteButton, SIGNAL(clicked()), this, SLOT(confirmDeleteColorScheme())); updatePointSizes(); refreshColorSchemeList(); @@ -466,23 +467,44 @@ void FontSettingsPage::copyColorScheme(const QString &name) } } -void FontSettingsPage::deleteColorScheme() +void FontSettingsPage::confirmDeleteColorScheme() { - int index = d_ptr->ui.schemeComboBox->currentIndex(); + const int index = d_ptr->ui.schemeComboBox->currentIndex(); if (index == -1) return; const ColorSchemeEntry &entry = d_ptr->m_schemeListModel->colorSchemeAt(index); + if (entry.readOnly) + return; - if (!entry.readOnly) { - int ret = QMessageBox::warning(d_ptr->ui.deleteButton->window(), - tr("Delete Color Scheme"), - tr("Are you sure you want to delete this color scheme permanently?"), - QMessageBox::Yes | QMessageBox::No, QMessageBox::Yes); + QMessageBox *messageBox = new QMessageBox(QMessageBox::Warning, + tr("Delete Color Scheme"), + tr("Are you sure you want to delete this color scheme permanently?"), + QMessageBox::Discard | QMessageBox::Cancel, + d_ptr->ui.deleteButton->window()); - if (ret == QMessageBox::Yes && QFile::remove(entry.fileName)) - d_ptr->m_schemeListModel->removeColorScheme(index); - } + // Change the text and role of the discard button + QPushButton *deleteButton = static_cast(messageBox->button(QMessageBox::Discard)); + deleteButton->setText(tr("Delete")); + messageBox->addButton(deleteButton, QMessageBox::AcceptRole); + messageBox->setDefaultButton(deleteButton); + + connect(deleteButton, SIGNAL(clicked()), messageBox, SLOT(accept())); + connect(messageBox, SIGNAL(accepted()), this, SLOT(deleteColorScheme())); + messageBox->setAttribute(Qt::WA_DeleteOnClose); + messageBox->open(); +} + +void FontSettingsPage::deleteColorScheme() +{ + const int index = d_ptr->ui.schemeComboBox->currentIndex(); + QTC_ASSERT(index != -1, return) + + const ColorSchemeEntry &entry = d_ptr->m_schemeListModel->colorSchemeAt(index); + QTC_ASSERT(!entry.readOnly, return) + + if (QFile::remove(entry.fileName)) + d_ptr->m_schemeListModel->removeColorScheme(index); } void FontSettingsPage::maybeSaveColorScheme() diff --git a/src/plugins/texteditor/fontsettingspage.h b/src/plugins/texteditor/fontsettingspage.h index 33f7257be7c..f47a95b3116 100644 --- a/src/plugins/texteditor/fontsettingspage.h +++ b/src/plugins/texteditor/fontsettingspage.h @@ -114,6 +114,7 @@ private slots: void colorSchemeSelected(int index); void copyColorScheme(); void copyColorScheme(const QString &name); + void confirmDeleteColorScheme(); void deleteColorScheme(); private: