When there are not associated button events, assume there is no button

events until one is found. This prevents errant cursor moves that occur
before the Wintab button event is reported. We need to skip these events
because if no button event exists, we generate one assuming it will either
arrive later in the Wintab queue or that the button was from a non-Wintab
device. For the case that this was generated by a non-wintab device, such
as buttons mapped to mouse on the tablet pad, these cursor move events can
significantly move the cursor from the intended click position.

Signed-off-by: Nicholas Rishel <rishel.nick@gmail.com>
This commit is contained in:
Nicholas Rishel 2020-05-25 21:10:17 -07:00
parent 1f25235ec3
commit a080accdb6
1 changed files with 4 additions and 1 deletions

View File

@ -990,7 +990,10 @@ GHOST_TSuccess GHOST_SystemWin32::processWintabEvents(GHOST_TEventType type,
* skip those and find the last button down mapped to mouse buttons.
*/
if (!window->wintabSysButPressed()) {
for (auto it = wtiIter; it != wintabInfo.end(); it++) {
// Assume there may be no button down event currently in the queue.
wtiIter = wintabInfo.end();
for (auto it = wintabInfo.begin(); it != wintabInfo.end(); it++) {
if (it->type == GHOST_kEventButtonDown) {
wtiIter = it;
}