From 757795f7cd05ac23d498d5d1b650418d8af1de3b Mon Sep 17 00:00:00 2001 From: Fabio Bas Date: Mon, 30 Mar 2015 15:41:28 +0200 Subject: [PATCH] Deck editor: skip unnecessary card name comparison when no search term is defined --- cockatrice/src/carddatabasemodel.cpp | 30 +++++++++++++++------------- 1 file changed, 16 insertions(+), 14 deletions(-) diff --git a/cockatrice/src/carddatabasemodel.cpp b/cockatrice/src/carddatabasemodel.cpp index 6a8d3fe7..b84abdd0 100644 --- a/cockatrice/src/carddatabasemodel.cpp +++ b/cockatrice/src/carddatabasemodel.cpp @@ -123,21 +123,23 @@ bool CardDatabaseDisplayModel::lessThan(const QModelIndex &left, const QModelInd QString leftString = sourceModel()->data(left).toString(); QString rightString = sourceModel()->data(right).toString(); - if (leftString.compare(cardName, Qt::CaseInsensitive) == 0) {// exact match should be at top - return true; + if (!cardName.isEmpty()) + { + if (leftString.compare(cardName, Qt::CaseInsensitive) == 0) {// exact match should be at top + return true; + } + + if (rightString.compare(cardName, Qt::CaseInsensitive) == 0) {// exact match should be at top + return false; + } + + bool isLeftType2 = leftString.startsWith(cardName, Qt::CaseInsensitive); + bool isRightType2 = rightString.startsWith(cardName, Qt::CaseInsensitive); + if (isLeftType2 && !isRightType2) + return true; + if (isRightType2 && !isLeftType2) + return false; } - - if (rightString.compare(cardName, Qt::CaseInsensitive) == 0) {// exact match should be at top - return false; - } - - bool isLeftType2 = leftString.startsWith(cardName, Qt::CaseInsensitive); - bool isRightType2 = rightString.startsWith(cardName, Qt::CaseInsensitive); - if (isLeftType2 && !isRightType2) - return true; - if (isRightType2 && !isLeftType2) - return false; - return QString::localeAwareCompare(leftString, rightString) < 0; }