Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 583662 - dev-qt/qtgui-4.8.7 with gcc-6: error: invalid conversion from ‘int’ to ‘QFlags<QItemSelectionModel::SelectionFlag>::Zero
Summary: dev-qt/qtgui-4.8.7 with gcc-6: error: invalid conversion from ‘int’ to ‘QFlag...
Status: RESOLVED FIXED
Alias: None
Product: Gentoo Linux
Classification: Unclassified
Component: Current packages (show other bugs)
Hardware: All Linux
: Normal normal (vote)
Assignee: Qt Bug Alias
URL:
Whiteboard:
Keywords:
Depends on:
Blocks: gcc-6
  Show dependency tree
 
Reported: 2016-05-21 13:26 UTC by Mark Wright
Modified: 2016-11-25 17:50 UTC (History)
5 users (show)

See Also:
Package list:
Runtime testing required: ---


Attachments
qtgui-4.8.7-gcc-6.0.patch (qtgui-4.8.7-gcc-6.0.patch,913 bytes, patch)
2016-05-21 13:26 UTC, Mark Wright
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Mark Wright gentoo-dev 2016-05-21 13:26:43 UTC
Created attachment 434858 [details, diff]
qtgui-4.8.7-gcc-6.0.patch

Compiling with gcc 6.1.0 fails with this error:

/var/tmp/portage/dev-qt/qtgui-4.8.7/work/qt-everywhere-opensource-src-4.8.7/src/plugins/accessible/widgets/itemviews.cpp: In member function ‘virtual bool QAccessibleTable2::unselectColumn(int)’:
/var/tmp/portage/dev-qt/qtgui-4.8.7/work/qt-everywhere-opensource-src-4.8.7/src/plugins/accessible/widgets/itemviews.cpp:396:105: error: conversion from ‘int’ to ‘QItemSelectionModel::SelectionFlags {aka QFlags<QItemSelectionModel::SelectionFlag>}’ is ambiguous
     view()->selectionModel()->select(index, QItemSelectionModel::Columns & QItemSelectionModel::Deselect);
                                                                                                         ^
In file included from ../../../../include/QtCore/qglobal.h:1:0,
                 from ../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/global/qnamespace.h:45,
                 from ../../../../include/QtCore/qnamespace.h:1,
                 from ../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qobjectdefs.h:45,
                 from ../../../../include/QtCore/qobjectdefs.h:1,
                 from ../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qobject.h:47,
                 from ../../../../include/QtCore/qobject.h:1,
                 from ../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qpointer.h:45,
                 from ../../../../include/QtCore/qpointer.h:1,
                 from /var/tmp/portage/dev-qt/qtgui-4.8.7/work/qt-everywhere-opensource-src-4.8.7/src/plugins/accessible/widgets/itemviews.h:45,
                 from /var/tmp/portage/dev-qt/qtgui-4.8.7/work/qt-everywhere-opensource-src-4.8.7/src/plugins/accessible/widgets/itemviews.cpp:42:
../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h:2436:29: note: candidate: constexpr QFlags<Enum>::QFlags(QFlags<Enum>::Zero) [with Enum = QItemSelectionModel::SelectionFlag; QFlags<Enum>::Zero = void**] <near match>
     Q_DECL_CONSTEXPR inline QFlags(Zero = 0) : i(0) {}
                             ^~~~~~
../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h:2436:29: note:   conversion of argument 1 would be ill-formed:
/var/tmp/portage/dev-qt/qtgui-4.8.7/work/qt-everywhere-opensource-src-4.8.7/src/plugins/accessible/widgets/itemviews.cpp:396:74: error: invalid conversion from ‘int’ to ‘QFlags<QItemSelectionModel::SelectionFlag>::Zero {aka void**}’ [-fpermissive]
     view()->selectionModel()->select(index, QItemSelectionModel::Columns & QItemSelectionModel::Deselect);
                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
In file included from ../../../../include/QtCore/qglobal.h:1:0,
                 from ../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/global/qnamespace.h:45,
                 from ../../../../include/QtCore/qnamespace.h:1,
                 from ../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qobjectdefs.h:45,
                 from ../../../../include/QtCore/qobjectdefs.h:1,
                 from ../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qobject.h:47,
                 from ../../../../include/QtCore/qobject.h:1,
                 from ../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/kernel/qpointer.h:45,
                 from ../../../../include/QtCore/qpointer.h:1,
                 from /var/tmp/portage/dev-qt/qtgui-4.8.7/work/qt-everywhere-opensource-src-4.8.7/src/plugins/accessible/widgets/itemviews.h:45,
                 from /var/tmp/portage/dev-qt/qtgui-4.8.7/work/qt-everywhere-opensource-src-4.8.7/src/plugins/accessible/widgets/itemviews.cpp:42:
../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h:2435:29: note: candidate: constexpr QFlags<Enum>::QFlags(Enum) [with Enum = QItemSelectionModel::SelectionFlag] <near match>
     Q_DECL_CONSTEXPR inline QFlags(Enum f) : i(f) {}
                             ^~~~~~
../../../../include/QtCore/../../../qt-everywhere-opensource-src-4.8.7/src/corelib/global/qglobal.h:2435:29: note:   conversion of argument 1 would be ill-formed:
/var/tmp/portage/dev-qt/qtgui-4.8.7/work/qt-everywhere-opensource-src-4.8.7/src/plugins/accessible/widgets/itemviews.cpp:396:74: error: invalid conversion from ‘int’ to ‘QItemSelectionModel::SelectionFlag’ [-fpermissive]
     view()->selectionModel()->select(index, QItemSelectionModel::Columns & QItemSelectionModel::Deselect);
                                             ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~^~~~~~~~~~~~~~~~~~~~~
Comment 1 Matthew Dawson 2016-11-06 07:30:07 UTC
I looked into this bug some myself, and I think this whole block of code is incorrect as it doesn't make sense.  Anding these two flags together will give a value of 0, causing the function to do nothing, instead of the intended unselecting the column.  However, the behvaiour has been this way since the code was introduced, so changing it might break other code which I can understand the Gentoo devs not wanting to risk on such an old library.

Looking at the best Qt5 equivalent version, the Qt devs do use an or operation as one would expect here.  So it does seem to be a bug, not a feature.  The change was done here: https://codereview.qt-project.org/#/c/42715/ .

The patch as attached should work otherwise.  If you want this patch instead, would it help to submit a PR on Github with it with a revbump?