[PyQt] qt_handleMouseEvent - public API?

Florian Bruhin me at the-compiler.org
Tue Mar 29 08:01:51 BST 2016


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:

(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?


[1] https://bugs.archlinux.org/task/48734
[2] https://www.mail-archive.com/development@qt-project.org/msg22054.html

http://www.the-compiler.org | me at the-compiler.org (Mail/XMPP)
   GPG: 916E B0C8 FD55 A072 | http://the-compiler.org/pubkey.asc
         I love long mails! | http://email.is-not-s.ms/
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 819 bytes
Desc: Digital signature
URL: <https://www.riverbankcomputing.com/pipermail/pyqt/attachments/20160329/c13cc877/attachment.sig>

More information about the PyQt mailing list