Touch docker/QML does not response to tablet input with WinInk on my SP5. Works with WinTab though. I feel like I've fixed something similar in the past, but I forgot what it was exactly...
Can confirm this on Surface Pro 4.
I can reproduce with Intuos 5. Let's fix it :)
Please test the package in this task: https://phabricator.kde.org/T10935 It should fix at least some of the problems.
Git commit d684bc557d4fe1782d78896d007fb75ecf6c0bf1 by Dmitry Kazakov. Committed on 16/05/2019 at 09:08. Pushed by dkazakov into branch 'master'. Add workaround for handling table press correctly in WinInk mode Original problem: widgets do not get synthesized mouse-down and mouse-press events until the stylus is released Reason: if the app accepts the event, WndProc should report that to the system (by returning true). This is the only way to prevent Windows from starting some system-wide gestures, like click+hold -> right button click. If we ignore the event, then OS postpones all synthesized mouse events until the entire gesture is completed. The patch implements a "hackish" workaround for the original problem by using the following rules: 1) All tablet-move events are ignored (without synthesized mouse events OS doesn't generate any Enter/Leave events) 2) All not-accepted tablet press- and release-events and also reported as ignored (without it D&D doesn't work). 3) All accepted tablet press- and release-events are reported as "accepted", **but** we artificially synthesize mouse events for them. TODO: there are still two problems: 1) Perhaps this synthesizeMouseEvent() is not needed at all. But we should first check if Qt relies on these synthesized messages anywhere in the code or not. 2) If we still keep synthesizeMouseEvent(), then it should fetch actual tablet buttons from QGuiApplicationPrivate::tabletDevicePoint(). Right now it always synthesizes left-click, whatever the button was pressed/ released. A +243 -0 3rdparty/ext_qt/0051-Add-workaround-for-handling-table-press-correctly-in.patch M +1 -0 3rdparty/ext_qt/CMakeLists.txt M +17 -0 plugins/dockers/touchdocker/TouchDockerDock.cpp M +2 -0 plugins/dockers/touchdocker/TouchDockerDock.h https://invent.kde.org/kde/krita/commit/d684bc557d4fe1782d78896d007fb75ecf6c0bf1
Git commit 8dd4d8b98361eab3acfa7a6f05d7b38fc532d0de by Dmitry Kazakov. Committed on 16/05/2019 at 09:08. Pushed by dkazakov into branch 'master'. Fix using tablet on QML widgets In previous versions of Qt (wintab impeplementation) the events were marked by Qt::MouseEventSynthesizedBySystem flag only when they were synthesized from touch, not from tablet events. This is what QWindowsTabletSupport does and what QQuickWindow expects (it filters out all synthesized events). This patch recovers the old behavior for the new QWindowsPointerHandler tablet API implementation. A +52 -0 3rdparty/ext_qt/0050-Fix-using-tablet-on-QML-widgets.patch M +1 -0 3rdparty/ext_qt/CMakeLists.txt https://invent.kde.org/kde/krita/commit/8dd4d8b98361eab3acfa7a6f05d7b38fc532d0de
Git commit 37f4021dfee6a07d0385181f5181657d0457f644 by Boudewijn Rempt, on behalf of Dmitry Kazakov. Committed on 16/05/2019 at 09:44. Pushed by rempt into branch 'krita/4.2'. Fix using tablet on QML widgets In previous versions of Qt (wintab impeplementation) the events were marked by Qt::MouseEventSynthesizedBySystem flag only when they were synthesized from touch, not from tablet events. This is what QWindowsTabletSupport does and what QQuickWindow expects (it filters out all synthesized events). This patch recovers the old behavior for the new QWindowsPointerHandler tablet API implementation. A +52 -0 3rdparty/ext_qt/0050-Fix-using-tablet-on-QML-widgets.patch M +1 -0 3rdparty/ext_qt/CMakeLists.txt https://invent.kde.org/kde/krita/commit/37f4021dfee6a07d0385181f5181657d0457f644
Git commit ae31080ac4fa4f7a571a196bbdf2f203c6c0dc87 by Dmitry Kazakov. Committed on 21/05/2019 at 21:09. Pushed by dkazakov into branch 'master'. Fix popup palette in WinInk mode We should eat synthesized events more carefully in the popup palette. The events may come either to the triangle widget or to its parent widget, depending on the implementaiton. Therefore we use a special event filter for that (KisMouseClickEater). Ref T10935 M +29 -21 3rdparty/ext_qt/0051-Add-workaround-for-handling-table-press-correctly-in.patch M +1 -1 libs/ui/CMakeLists.txt A +70 -0 libs/ui/KisMouseClickEater.cpp [License: UNKNOWN] * A +29 -0 libs/ui/KisMouseClickEater.h [License: UNKNOWN] * M +20 -27 libs/ui/kis_popup_palette.cpp M +3 -4 libs/ui/kis_popup_palette.h The files marked with a * at the end have a non valid license. Please read: https://community.kde.org/Policies/Licensing_Policy and use the headers which are listed at that page. https://invent.kde.org/kde/krita/commit/ae31080ac4fa4f7a571a196bbdf2f203c6c0dc87
Git commit 47b63a2d3e9e6f9efe686861ee220afc73b7e737 by Boudewijn Rempt, on behalf of Dmitry Kazakov. Committed on 23/05/2019 at 11:57. Pushed by rempt into branch 'krita/4.2'. Fix popup palette in WinInk mode We should eat synthesized events more carefully in the popup palette. The events may come either to the triangle widget or to its parent widget, depending on the implementaiton. Therefore we use a special event filter for that (KisMouseClickEater). Ref T10935 M +29 -21 3rdparty/ext_qt/0051-Add-workaround-for-handling-table-press-correctly-in.patch M +1 -1 libs/ui/CMakeLists.txt A +70 -0 libs/ui/KisMouseClickEater.cpp [License: UNKNOWN] * A +29 -0 libs/ui/KisMouseClickEater.h [License: UNKNOWN] * M +20 -27 libs/ui/kis_popup_palette.cpp M +3 -4 libs/ui/kis_popup_palette.h The files marked with a * at the end have a non valid license. Please read: https://community.kde.org/Policies/Licensing_Policy and use the headers which are listed at that page. https://invent.kde.org/kde/krita/commit/47b63a2d3e9e6f9efe686861ee220afc73b7e737
I think the bug can be considered as closed now after this commit:) https://invent.kde.org/kde/krita/commit/ae31080ac4fa4f7a571a196bbdf2f203c6c0dc87
Okay, Alvin reported that QML dialogs (not widgets) do not respond to tablet clicks on his surface pro. So I will reopen the bug, but unset release-blocker tag. On my Wacom5 device in WinInk mode, the QML dialogs respond to clicks fine.
Okay, I think I should check that on the Yoga device
Hi, Alvin! Could you please check if the bug is still reproducible in Krita 4.3 Beta1? https://krita.org/en/item/first-beta-of-krita-4-3-0-released/ I have checked on touch-enabled Lenovo Yoga device in WinInk mode and it seems to work perfectly fine...
Not reproducible with 4.3.0 beta1.