[QGIS-Developer] [attributetable] #15803 "Sort on Top" regression or feature ?

Luigi Pirelli luipir at gmail.com
Tue May 9 02:24:05 PDT 2017


Hi devs

***In short:
The sortOrder value in QgsProject section:

<attributetableconfig sortOrder="<some value>">

can be any value for some reason (e.g. flexibility for the future) or
it is a bug?

I would ask to especially to Nyall that git blames is the author of
this section:
https://github.com/qgis/QGIS/blob/master/src/core/qgsattributetableconfig.cpp#L200

***Details:
during hackmeeting I also worked on:
https://issues.qgis.org/issues/15803

in the team we had problem replicating the issue on QGIS 3.x so we
discovered that the origin of the problem is in
QgsAttributeTableConfig saved in Layer style section of the qgis
project.

here an example of a project I had with wrong values

      <attributetableconfig actionWidgetStyle="dropDown"
sortExpression="" sortOrder="158">
        <columns>
          <column width="-1" hidden="0" type="field" name="Cell"/>
          <column width="-1" hidden="0" type="field" name="Time"/>
          <column width="-1" hidden="0" type="field" name="Value"/>
          <column width="-1" hidden="1" type="actions"/>
        </columns>
      </attributetableconfig>

the value is casted to Qt:SortOrder enum with:
https://github.com/qgis/QGIS/blob/master/src/core/qgsattributetableconfig.cpp#L200

that is undefined in case sortOrder value does not belong to the enum
range, but in the implementation the value is leaved to 158 (as in the
example)

This generate some side effects in the attribute table => the
sortOnTop button does not work because of:
https://github.com/qgis/QGIS/blob/master/src/gui/attributetable/qgsattributetablefiltermodel.cpp#L53
and
https://github.com/qgis/QGIS/blob/master/src/gui/attributetable/qgsattributetablefiltermodel.cpp#L57

that obviously returns always false

The actual patch in:
2.18 - https://github.com/qgis/QGIS/pull/4306
3.x - https://github.com/qgis/QGIS/pull/4444

protect the attribute table from having wrong sortOrder values, but
does not try to fix it's value in AttributeTable config that can be a
value set for some reason by the user or other components.

***Workaroud
a simple workaround is apply a column sort and save the project to fix
the wrong value

Luigi Pirelli

**************************************************************************************************
* Boundless QGIS Support/Development: lpirelli AT boundlessgeo DOT com
* LinkedIn: https://www.linkedin.com/in/luigipirelli
* Stackexchange: http://gis.stackexchange.com/users/19667/luigi-pirelli
* GitHub: https://github.com/luipir
* Mastering QGIS 2nd Edition:
* https://www.packtpub.com/big-data-and-business-intelligence/mastering-qgis-second-edition
**************************************************************************************************


More information about the QGIS-Developer mailing list