[PyQt] qt_handleMouseEvent - public API?
Phil Thompson
phil at riverbankcomputing.com
Tue Mar 29 09:13:27 BST 2016
On 29 Mar 2016, at 8:01 am, Florian Bruhin <me at the-compiler.org> wrote:
>
> Hey,
>
> on Archlinux, PyQt did break after updating Qt to 5.6:
>
> $ python -c "from PyQt5 import QtTest"
> Traceback (most recent call last):
> File "<string>", line 1, in <module>
> ImportError: /usr/lib/python3.5/site-packages/PyQt5/QtTest.so: undefined symbol:
> _Z19qt_handleMouseEventP7QWindowRK7QPointFS3_6QFlagsIN2Qt11MouseButtonEES4_INS5_16KeyboardModifierEE
>
> (bug report: [1])
>
> When I demangle the symbol, I get:
>
> qt_handleMouseEvent(QWindow*, QPointF const&, QPointF const&, QFlags<Qt::MouseButton>, QFlags<Qt::KeyboardModifier>)
>
> Looking at the Qt 5.6 header diff[2], it looks indeed like an overload
> was removed:
>
> -Q_GUI_EXPORT void qt_handleMouseEvent(QWindow *w, const QPointF & local, const QPointF & global, Qt::MouseButtons b, Qt::KeyboardModifiers mods = Qt::NoModifier);
> +Q_GUI_EXPORT void qt_handleMouseEvent(QWindow *w, const QPointF &local, const QPointF &global, Qt::MouseButtons b, Qt::KeyboardModifiers mods, int timestamp);
>
> I'm not sure what happened here: Does qt_handleMouseEvent count as
> public API (it has a Q_GUI_EXPORT and is in a public header), and this
> was an unintentional ABI break from Qt?
>
> Or doesn't it count as public (it's not documented?) and PyQt is using
> private/half-public APIs?
>
> If the latter is true, it means Archlinux should add PyQt to
> qt5-base's rebuild.list, i.e. it'll be rebuilt automatically as soon
> as Qt is updated.
>
> Would that make sense?
PyQt knows nothing about qt_handleMouseEvent().
Phil
More information about the PyQt
mailing list