From bb865db2d5619fe53e2a3f79531ab2885818b4a4 Mon Sep 17 00:00:00 2001 From: Eike Hein Date: Wed, 2 Jan 2019 17:29:27 +0900 Subject: [PATCH] Fix removing first item in languages list Summary: Instead, we want to disallow removing when the count drops to 1. BUG:401473 Reviewers: #plasma, davidedmundson, broulik Reviewed By: #plasma, davidedmundson Subscribers: plasma-devel Tags: #plasma Differential Revision: https://phabricator.kde.org/D17218 --- package/contents/ui/main.qml | 8 ++++++-- translationsmodel.cpp | 2 +- 2 files changed, 7 insertions(+), 3 deletions(-) diff --git a/package/contents/ui/main.qml b/package/contents/ui/main.qml index 7897b8650..096bd86b7 100644 --- a/package/contents/ui/main.qml +++ b/package/contents/ui/main.qml @@ -220,10 +220,14 @@ ScrollViewKCM { onTriggered: kcm.selectedTranslationsModel.move(index, 0) }, Kirigami.Action { - enabled: !model.IsMissing + property bool removing: false + enabled: removing || !model.IsMissing && languagesList.count > 1 iconName: "list-remove" tooltip: i18nc("@info:tooltip", "Remove") - onTriggered: kcm.selectedTranslationsModel.remove(model.LanguageCode) + onTriggered: { + removing = true; // Don't crash by re-evaluating `enabled` during destruction. + kcm.selectedTranslationsModel.remove(model.LanguageCode); + } }] } } diff --git a/translationsmodel.cpp b/translationsmodel.cpp index 4a7fa9a2d..fbb5407d1 100644 --- a/translationsmodel.cpp +++ b/translationsmodel.cpp @@ -213,7 +213,7 @@ void SelectedTranslationsModel::remove(const QString &languageCode) int index = m_selectedLanguages.indexOf(languageCode); - if (index < 1) { + if (index < 0 || m_selectedLanguages.count() < 2) { return; }