Details
-
Bug
-
Resolution: Fixed
-
P2: Important
-
5.14
-
None
-
-
df401d596 (tqtc/lts-5.15), 2eaba7e89 (6.4), 471b21234 (dev), 4015d0cda (tqtc/lts-6.2)
Description
Setting an override cursor with QApplication::setOverrideCursor() only has effect as long as the mouse isn't moved. As soon as the mouse is moved, QWaylandWindow::restoreMouseCursor() kicks in and replaces the override cursor.
First breakpoint hit when setting the override cursor:
#0 QtWaylandClient::QWaylandInputDevice::setCursor (this=0x55555559c4e0, cursor=cursor@entry=0x7fffffffd8a8, cachedBuffer=..., fallbackOutputScale=fallbackOutputScale@entry=1) at qwaylandinputdevice.cpp:542 #1 0x00007ffff77e968d in QtWaylandClient::QWaylandCursor::changeCursor (this=<optimized out>, cursor=0x7fffffffd8a8, window=<optimized out>) at qwaylandcursor.cpp:266 #2 0x00007ffff7205197 in applyCursor (c=..., w=0x5555555d53b0) at kernel/qguiapplication.cpp:3766 #3 applyCursor (c=..., l=...) at kernel/qguiapplication.cpp:3781 #4 QGuiApplication::setOverrideCursor (cursor=...) at kernel/qguiapplication.cpp:3848 #5 0x000055555555fdfe in MainWindow::<lambda()>::operator()(void) const (__closure=0x5555555d3c80) at /home/user/eclipse/macroburst-ui/application/MainWindow.cpp:307 #6 0x00005555555635b5 in QtPrivate::FunctorCall<QtPrivate::IndexesList<>, QtPrivate::List<>, void, MainWindow::createActions()::<lambda()> >::call(MainWindow::<lambda()> &, void **) (f=..., arg=0x7fffffffda88) at /home/user/nobackup/test/qt-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:146 #7 0x00005555555634db in QtPrivate::Functor<MainWindow::createActions()::<lambda()>, 0>::call<QtPrivate::List<>, void>(MainWindow::<lambda()> &, void *, void **) (f=..., arg=0x7fffffffda88) at /home/user/nobackup/test/qt-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:256 #8 0x00005555555633f6 in QtPrivate::QFunctorSlotObject<MainWindow::createActions()::<lambda()>, 0, QtPrivate::List<>, void>::impl(int, QtPrivate::QSlotObjectBase *, QObject *, void **, bool *) (which=1, this_=0x5555555d3c70, r=0x5555555d3bd0, a=0x7fffffffda88, ret=0x0) at /home/user/nobackup/test/qt-dev/qtbase/src/corelib/kernel/qobjectdefs_impl.h:439 #9 0x00007ffff6d6c4e9 in QtPrivate::QSlotObjectBase::call (a=0x7fffffffda88, r=0x5555555d3bd0, this=0x5555555d3c70) at ../../include/QtCore/../../src/corelib/kernel/qobjectdefs_impl.h:394 #10 doActivate<false> (sender=sender@entry=0x5555555d3bd0, signal_index=<optimized out>, argv=<optimized out>, argv@entry=0x0) at kernel/qobject.cpp:3768 #11 0x00007ffff6d647e7 in QMetaObject::activate (sender=sender@entry=0x5555555d3bd0, m=m@entry=0x7ffff7f9f0e0 <QShortcut::staticMetaObject>, local_signal_index=local_signal_index@entry=0, argv=argv@entry=0x0) at kernel/qobject.cpp:3827 #12 0x00007ffff7a9a5c4 in QShortcut::activated (this=this@entry=0x5555555d3bd0) at .moc/moc_qshortcut.cpp:202 #13 0x00007ffff7a9a694 in QShortcut::event (this=0x5555555d3bd0, e=0x7fffffffdde0) at kernel/qshortcut.cpp:676 #14 0x00007ffff7a719f0 in QApplicationPrivate::notify_helper (this=this@entry=0x55555558e3a0, receiver=receiver@entry=0x5555555d3bd0, e=e@entry=0x7fffffffdde0) at kernel/qapplication.cpp:3736 #15 0x00007ffff7a78eab in QApplication::notify (this=0x7fffffffe2e0, receiver=0x5555555d3bd0, e=0x7fffffffdde0) at kernel/qapplication.cpp:3092 #16 0x00007ffff6d326a8 in QCoreApplication::notifyInternal2 (receiver=0x5555555d3bd0, event=0x7fffffffdde0) at kernel/qcoreapplication.cpp:1046 #17 0x00007ffff6d328c8 in QCoreApplication::sendEvent (receiver=<optimized out>, event=<optimized out>) at kernel/qcoreapplication.cpp:1441 #18 0x00007ffff723c666 in QShortcutMap::dispatchEvent (this=this@entry=0x55555558e468, e=e@entry=0x7fffffffde90) at kernel/qshortcutmap.cpp:700 #19 0x00007ffff723c6d3 in QShortcutMap::tryShortcut (this=this@entry=0x55555558e468, e=e@entry=0x7fffffffde90) at kernel/qshortcutmap.cpp:351 #20 0x00007ffff71e6ccf in QWindowSystemInterface::handleShortcutEvent (window=window@entry=0x5555555d53b0, timestamp=473303, keyCode=16777275, modifiers=..., nativeScanCode=96, nativeVirtualKey=65481, nativeModifiers=1, text=..., autorepeat=false, count=1) at kernel/qwindowsysteminterface.cpp:465 #21 0x00007ffff7209c8d in QGuiApplicationPrivate::processKeyEvent (e=0x55555569a060) at kernel/qguiapplication.cpp:2218 #22 0x00007ffff720e10b in QGuiApplicationPrivate::processWindowSystemEvent (e=e@entry=0x55555569a060) at kernel/qguiapplication.cpp:1854 #23 0x00007ffff71e3d97 in QWindowSystemInterface::sendWindowSystemEvents (flags=...) at kernel/qwindowsysteminterface.cpp:1152 #24 0x00007ffff785b8d3 in userEventSourceDispatch (source=<optimized out>) at qeventdispatcher_glib.cpp:74 #25 0x00007ffff61e2f2e in g_main_context_dispatch () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #26 0x00007ffff61e31c8 in ?? () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #27 0x00007ffff61e325c in g_main_context_iteration () from /lib/x86_64-linux-gnu/libglib-2.0.so.0 #28 0x00007ffff6d92d08 in QEventDispatcherGlib::processEvents (this=0x55555559e9f0, flags=...) at kernel/qeventdispatcher_glib.cpp:423 #29 0x00007ffff785ba18 in QPAEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at qeventdispatcher_glib.cpp:120 #30 0x00007ffff6d30615 in QEventLoop::processEvents (this=this@entry=0x7fffffffe220, flags=..., flags@entry=...) at /usr/include/c++/8/bits/atomic_base.h:707 #31 0x00007ffff6d30a34 in QEventLoop::exec (this=this@entry=0x7fffffffe220, flags=flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:120 #32 0x00007ffff6d3a762 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:118 #33 0x00007ffff7203f22 in QGuiApplication::exec () at kernel/qguiapplication.cpp:1786 #34 0x00007ffff7a71965 in QApplication::exec () at kernel/qapplication.cpp:2892 #35 0x000055555555e82b in main (argc=1, argv=0x7fffffffe448) at /home/user/eclipse/macroburst-ui/application/main.cpp:32
Second hit immediately afterwards:
#0 QtWaylandClient::QWaylandInputDevice::setCursor (this=this@entry=0x55555559c4e0, cursor=cursor@entry=0x7fffffffd988, cachedBuffer=..., fallbackOutputScale=1) at qwaylandinputdevice.cpp:542 #1 0x00007ffff77bc17e in QtWaylandClient::QWaylandWindow::setMouseCursor (this=this@entry=0x55555567fef0, device=device@entry=0x55555559c4e0, cursor=...) at /home/user/nobackup/test/qt-dev/qtbase/include/QtCore/../../src/corelib/tools/qsharedpointer_impl.h:316 #2 0x00007ffff77bc231 in QtWaylandClient::QWaylandWindow::restoreMouseCursor (this=0x55555567fef0, device=device@entry=0x55555559c4e0) at qwaylandwindow.cpp:967 #3 0x00007ffff437d2c0 in QtWaylandClient::QWaylandBradientDecoration::handleMouse (this=0x5555556656d0, inputDevice=0x55555559c4e0, local=..., global=..., b=..., mods=...) at main.cpp:281 #4 0x00007ffff77bc27b in QtWaylandClient::QWaylandWindow::handleMouseEventWithDecoration (this=this@entry=0x55555567fef0, inputDevice=inputDevice@entry=0x55555559c4e0, e=...) at /home/user/nobackup/test/qt-dev/qtbase/include/QtCore/../../src/corelib/global/qflags.h:133 #5 0x00007ffff77bc5be in QtWaylandClient::QWaylandWindow::handleMouse (this=0x55555567fef0, inputDevice=0x55555559c4e0, e=...) at qwaylandwindow.cpp:846 #6 0x00007ffff77ae0bb in QtWaylandClient::QWaylandInputDevice::Pointer::flushFrameEvent (this=this@entry=0x555555591290) at qwaylandinputdevice.cpp:1025 #7 0x00007ffff77ae8da in QtWaylandClient::QWaylandInputDevice::Pointer::setFrameEvent (this=this@entry=0x555555591290, event=<optimized out>) at qwaylandinputdevice.cpp:924 #8 0x00007ffff77aec03 in QtWaylandClient::QWaylandInputDevice::Pointer::pointer_motion (this=0x555555591290, time=474564, surface_x=<optimized out>, surface_y=<optimized out>) at /home/user/nobackup/test/qt-dev/qtbase/include/QtCore/../../src/corelib/tools/qpoint.h:120 #9 0x00007ffff77f19e1 in QtWayland::wl_pointer::handle_motion (data=<optimized out>, object=<optimized out>, time=<optimized out>, surface_x=<optimized out>, surface_y=<optimized out>) at qwayland-wayland.cpp:1641 #10 0x00007ffff60a38ee in ffi_call_unix64 () from /lib/x86_64-linux-gnu/libffi.so.6 #11 0x00007ffff60a32bf in ffi_call () from /lib/x86_64-linux-gnu/libffi.so.6 #12 0x00007ffff772a28d in ?? () from /lib/x86_64-linux-gnu/libwayland-client.so.0 #13 0x00007ffff7726ac9 in ?? () from /lib/x86_64-linux-gnu/libwayland-client.so.0 #14 0x00007ffff7727f94 in wl_display_dispatch_queue_pending () from /lib/x86_64-linux-gnu/libwayland-client.so.0 #15 0x00007ffff77b2f66 in QtWaylandClient::QWaylandDisplay::flushRequests (this=0x5555555955b0) at qwaylanddisplay.cpp:206 #16 0x00007ffff77f43de in QtWaylandClient::QWaylandDisplay::qt_static_metacall (_o=<optimized out>, _c=<optimized out>, _id=<optimized out>, _a=<optimized out>) at .moc/moc_qwaylanddisplay_p.cpp:77 #17 0x00007ffff6d6c67c in doActivate<false> (sender=sender@entry=0x55555559e9f0, signal_index=<optimized out>, argv=<optimized out>, argv@entry=0x0) at kernel/qobject_p.h:207 #18 0x00007ffff6d647e7 in QMetaObject::activate (sender=sender@entry=0x55555559e9f0, m=m@entry=0x7ffff70eae20 <QAbstractEventDispatcher::staticMetaObject>, local_signal_index=local_signal_index@entry=1, argv=argv@entry=0x0) at kernel/qobject.cpp:3827 #19 0x00007ffff6d2f0c6 in QAbstractEventDispatcher::awake (this=this@entry=0x55555559e9f0) at .moc/moc_qabstracteventdispatcher.cpp:149 #20 0x00007ffff6d92d59 in QEventDispatcherGlib::processEvents (this=0x55555559e9f0, flags=...) at kernel/qeventdispatcher_glib.cpp:430 #21 0x00007ffff785ba18 in QPAEventDispatcherGlib::processEvents (this=<optimized out>, flags=...) at qeventdispatcher_glib.cpp:120 #22 0x00007ffff6d30615 in QEventLoop::processEvents (this=this@entry=0x7fffffffe220, flags=..., flags@entry=...) at /usr/include/c++/8/bits/atomic_base.h:707 #23 0x00007ffff6d30a34 in QEventLoop::exec (this=this@entry=0x7fffffffe220, flags=flags@entry=...) at ../../include/QtCore/../../src/corelib/global/qflags.h:120 #24 0x00007ffff6d3a762 in QCoreApplication::exec () at ../../include/QtCore/../../src/corelib/global/qflags.h:118 #25 0x00007ffff7203f22 in QGuiApplication::exec () at kernel/qguiapplication.cpp:1786 #26 0x00007ffff7a71965 in QApplication::exec () at kernel/qapplication.cpp:2892 #27 0x000055555555e82b in main (argc=1, argv=0x7fffffffe448) at /home/user/eclipse/macroburst-ui/application/main.cpp:32
Attachments
Issue Links
- relates to
-
QTBUG-105843 Broken cursor changing on Wayland with tablet input
- Closed
For Gerrit Dashboard: QTBUG-75919 | ||||||
---|---|---|---|---|---|---|
# | Subject | Branch | Project | Status | CR | V |
444747,3 | Client: Honor QGuiApplication::overrideCursor() | dev | qt/qtwayland | Status: MERGED | +2 | 0 |
446119,2 | Client: Honor QGuiApplication::overrideCursor() | 6.4 | qt/qtwayland | Status: MERGED | +2 | 0 |
446120,2 | Client: Honor QGuiApplication::overrideCursor() | tqtc/lts-6.2 | qt/tqtc-qtwayland | Status: MERGED | +2 | 0 |
446121,2 | Client: Honor QGuiApplication::overrideCursor() | tqtc/lts-5.15 | qt/tqtc-qtwayland | Status: MERGED | +2 | 0 |