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

Matthias Kuhn matthias at opengis.ch
Tue May 9 23:53:16 PDT 2017


Hi Luigi,

Thanks for the detailed report. I think there are two different things
to fix

 1. XML Loading: the static_cast should be accompanied by a validity check
 2. Fix the reason for 158 ever appearing (might just be a default value
    assigned to mSortOrder in qgsattributetableconfig.h)

There's not much reason for flexibility here as far as I can tell, this
just reflects the Qt::SortOrder enum. If required, we can add additional
new flags for "SortOrderCaseSensitivity" and whatever might appear in
the future.

I hope that helps,
Matthias


On 5/9/17 11:24 AM, Luigi Pirelli wrote:
> 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
> **************************************************************************************************
> _______________________________________________
> QGIS-Developer mailing list
> QGIS-Developer at lists.osgeo.org
> List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer
> Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.osgeo.org/pipermail/qgis-developer/attachments/20170510/99a8bb91/attachment.html>


More information about the QGIS-Developer mailing list