diff --git a/src/imports/activitymodel.h b/src/imports/activitymodel.h --- a/src/imports/activitymodel.h +++ b/src/imports/activitymodel.h @@ -24,6 +24,7 @@ #include #include #include +#include // STL and Boost #include @@ -130,12 +131,14 @@ struct InfoPtrComparator { bool operator() (const InfoPtr& left, const InfoPtr& right) const { - const QString &leftName = left->name().toLower(); - const QString &rightName = right->name().toLower(); - - return - (leftName < rightName) || - (leftName == rightName && left->id() < right->id()); + QCollator c; + c.setCaseSensitivity(Qt::CaseInsensitive); + c.setNumericMode(true); + int rc = c.compare(left->name(), right->name()); + if (rc == 0) { + return left->id() < right->id(); + } + return rc < 0; } }; diff --git a/src/lib/activitiesmodel_p.h b/src/lib/activitiesmodel_p.h --- a/src/lib/activitiesmodel_p.h +++ b/src/lib/activitiesmodel_p.h @@ -28,6 +28,8 @@ #include "utils/qflatset.h" +#include + namespace KActivities { class ActivitiesModelPrivate : public QObject { @@ -57,12 +59,14 @@ struct InfoPtrComparator { bool operator() (const InfoPtr& left, const InfoPtr& right) const { - const QString &leftName = left->name().toLower(); - const QString &rightName = right->name().toLower(); - - return - (leftName < rightName) || - (leftName == rightName && left->id() < right->id()); + QCollator c; + c.setCaseSensitivity(Qt::CaseInsensitive); + c.setNumericMode(true); + int rc = c.compare(left->name(), right->name()); + if (rc == 0) { + return left->id() < right->id(); + } + return rc < 0; } };