[prev in list] [next in list] [prev in thread] [next in thread] 

List:       kde-commits
Subject:    Re: KDE/kdelibs/kfile
From:       André_Wöbbeking <Woebbeking () kde ! org>
Date:       2011-01-10 17:52:58
Message-ID: 201101101852.59597.Woebbeking () kde ! org
[Download RAW message or body]

On Monday 10 January 2011, Sebastian Trueg wrote:
> SVN commit 1213464 by trueg:
> 
> When sorting by name KDirSortFilterProxyModel uses UDS_DISPLAY_NAME.
> The latter, however, is not unique. This results in strange GUI behaviour
> like swapping items. This patch makes the model fall back to UDS_NAME to
> ensure a fixed sort order.
> 
> See also review request http://reviewboard.kde.org/r/6322/
> 
>  M  +10 -1     kdirsortfilterproxymodel.cpp
> 
> 
> --- trunk/KDE/kdelibs/kfile/kdirsortfilterproxymodel.cpp #1213463:1213464
> @@ -168,8 +168,17 @@
> 
>      switch (left.column()) {
>      case KDirModel::Name: {
> -        return d->compare(leftFileItem.text(), rightFileItem.text(),
> sortCaseSensitivity()) < 0; +        // KFileItem::text() may not be
> unique (in case UDS_DISPLAY_NAME is used). In that case we +        //
> fall back to the name which is always unique
> +        const int result = d->compare(leftFileItem.text(),
> rightFileItem.text(), sortCaseSensitivity()); +        if (result == 0) {
> +            return d->compare(leftFileItem.name(sortCaseSensitivity() ==
> Qt::CaseInsensitive), +                             
> rightFileItem.name(sortCaseSensitivity() == Qt::CaseInsensitive),
> +                           sortCaseSensitivity()) < 0;

Why do you call name() with sortCaseSensitivity() == Qt::CaseInsensitive when 
you already have the case sensitivity in compare()?
[prev in list] [next in list] [prev in thread] [next in thread] 

Configure | About | News | Add a list | Sponsored by KoreLogic