qtdeclarative/tests/auto/quickcontrols2/qquickdrawer
Shawn Rutledge 0568b3c4d4 Drawer: don't get stuck in open state after touches outside
If the Drawer does not cover the whole window, it's possible to tap
outside the dimmer overlay. In that case, next time you tap on the
dimmer, you hit this early return in handleRelease in which
pressPoint.isNull(), so it was not setting touchId back to -1 and doing
the other cleanup/reset tasks.  This is a touch release, and touchId
should always be eventually reset after a touch release, regardless of
the code path.

Now QQuickDrawerPrivate::handleRelease() has a QScopeGuard to ensure
that cleanup is done regardless of early returns. That's still not
enough; but when we receive TouchEnd in QPopupPriv::handleTouchEvent(),
it means that _all_ touchpoints are released. So as a fallback for
multi-touch cases, we now ensure that all releases are handled and
stored state is reset, regardless of whether an individual point ID
matches the stored touchId.

Fixes: QTBUG-103811
Change-Id: Ia637bae00d8edb7f7f4c8fb4337b4c3d72fe4e60
Reviewed-by: Doris Verria <doris.verria@qt.io>
(cherry picked from commit 730cdc5043)
Reviewed-by: Mitch Curtis <mitch.curtis@qt.io>
2022-12-19 10:01:36 +01:00
..
data Drawer: don't get stuck in open state after touches outside 2022-12-19 10:01:36 +01:00
BLACKLIST
CMakeLists.txt
tst_qquickdrawer.cpp Drawer: don't get stuck in open state after touches outside 2022-12-19 10:01:36 +01:00