SortFilterModel doesn’t work with custom roles whose keys don’t start at 0

Bug #1485674 reported by Olivier Tilloy on 2015-08-17
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
ubuntu-ui-toolkit (Ubuntu)
High
Olivier Tilloy

Bug Description

I wanted to replace a custom C++ model in webbrowser-app by a QML SortFilterModel. My custom model simply does sorting by descending order on a given role, but this didn’t work. I figured out the reason for this: the source model being sorted has custom roles, and their keys don’t start at 0. They are defined using an enum like so:

    enum Roles {
        Domain = Qt::UserRole + 1,
        LastVisit,
        LastVisitDate,
        LastVisitedTitle,
        LastVisitedIcon,
        Entries
    };

(see http://bazaar.launchpad.net/~phablet-team/webbrowser-app/trunk/view/head:/src/app/webbrowser/history-domainlist-model.h#L42 and http://bazaar.launchpad.net/~phablet-team/webbrowser-app/trunk/view/head:/src/app/webbrowser/history-domainlist-model.cpp#L48).

The implementation of SortFilterModel has a QSortFilterProxyModelQML::roleByName() method which incorrectly assumes that role keys start at 0 (see http://bazaar.launchpad.net/~ubuntu-sdk-team/ubuntu-ui-toolkit/trunk/view/head:/src/Ubuntu/Components/plugin/sortfiltermodel.cpp#L112). This method should be fixed to account for custom keys.

Related branches

Olivier Tilloy (osomon) on 2015-08-17
Changed in ubuntu-ui-toolkit (Ubuntu):
assignee: nobody → Olivier Tilloy (osomon)
status: New → In Progress
Changed in ubuntu-ui-toolkit (Ubuntu):
importance: Undecided → High
Launchpad Janitor (janitor) wrote :

This bug was fixed in the package ubuntu-ui-toolkit - 1.3.1627+15.10.20150908-0ubuntu1

---------------
ubuntu-ui-toolkit (1.3.1627+15.10.20150908-0ubuntu1) wily; urgency=medium

  [ Zsombor Egri ]
  * Implement list item expansion.
  * Turn AdaptivePageLayout page creation to be asynchronous.
  * Fix ListItem swipe handling when gesture is initiated over an overlay
    MouseArea which does not accept pressed event. Fixes LP: #1484545
  * AbstractButton to C++. Fixes LP: #1365471, LP: #1458028
  * Haptics singleton moved to C++.
  * ActionItem moved to C++.
  * Making columns resizable in an AdaptivePageLayout.
  * Introducing column configuration into AdaptivePageLayout.

  [ Benjamin Zeller ]
  * Fix build inside qt and shadowbuild.

  [ Tim Peeters ]
  * Remove old and unused header-related files, and update unit test filenames.
  * Don't unset the subheader style when Page.head changes because that unsets
    the parent of Page.head.contents. Fixes LP: #1488922
  * Fix the theming of the MainView.
  * Fix the background color of the overflow panel.

  [ Christian Dywan ]
  * Include change signals with arguments in .api.
  * A public QML type with no version is an error. Rather than silently breaking
    as QML does normally at least apicheck can make this fatal.
  * UbuntuShape shouldn't emit redundant deprecation warnings. Fixes LP: #1481791
  * Update .bzrignore to new upstream style layout. Fixes LP: #1433308
  * Revert unnecessary change of Popover minimumWidth. Fixes LP: #1483708

  [ Ken VanDine ]
  * Fixed a few typos in the api docs for StateSaver.

  [ Olivier Tilloy ]
  * Take custom key indexes into account to allow sorting on custom roles.
    Fixes LP: #1485674

  [ Albert Astals Cid ]
  * Properly free shapeTextures[index] The old code assumes that the UbuntuShape
    will still be around when the opengl context is destroyed, but that seldom
    happens so connect the signal to a lambda that will be there and does the
    cleanup properly. Without this patch testDirectionalDragArea from unity8 was
    hitting the qFatal because it ran out of space in shapeTextures.

  [ Richard Huddie ]
  * Remove all usage of the autopilot simulated keyboard when the OSK is being
    used. Fixes LP: 31483668

  [ Gerry Boland ]
  * Compensate for Qt's device pixel ratio multiplier.
    Fixes: LP: #1207270, LP: #1275748, LP: #1468402

  [ Nick Dedekind ]
  * Added relative date time i18n.

  [ CI Train Bot ]
  * Resync trunk.

 -- Zoltan Balogh <email address hidden> Tue, 08 Sep 2015 04:10:50 +0000

Changed in ubuntu-ui-toolkit (Ubuntu):
status: In Progress → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers