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

Bug #1485674 reported by Olivier Tilloy
10
This bug affects 2 people
Affects Status Importance Assigned to Milestone
ubuntu-ui-toolkit (Ubuntu)
Fix Released
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)
Changed in ubuntu-ui-toolkit (Ubuntu):
assignee: nobody → Olivier Tilloy (osomon)
status: New → In Progress
Cris Dywan (kalikiana)
Changed in ubuntu-ui-toolkit (Ubuntu):
importance: Undecided → High
Revision history for this message
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  
Everyone can see this information.

Other bug subscribers

Remote bug watches

Bug watches keep track of this bug in other bug trackers.