Fix button state validation in windows platform during drag and drop
The button state from windows when we use GetAsynckeyState() provides both MK_LBUTTON and MK_RIGHTBUTTON at the same time. This creates an issue when we validate only with single state to determine DRAGDROP_S_DROP operation. Normally, The MK_RBUTTON will be delivered when we have long press during drag. But sometimes (no definitive reason identified) the key state from windows contains both the key state (MK_LBUTTON | Mk_RBUTTON) during drag and drop operation with touch. This patch set fixes the issue by validating all key state instead of a particular state. Fixes: QTBUG-112995 Change-Id: I67bf5f4956b68279ecc5fbeca8e8e7aef46d0482 Reviewed-by: Timothée Keller <timothee.keller@qt.io> Reviewed-by: Qt CI Bot <qt_ci_bot@qt-project.org> Reviewed-by: Wladimir Leuschner <wladimir.leuschner@qt.io> Reviewed-by: Shawn Rutledge <shawn.rutledge@qt.io> (cherry picked from commit 3902fb0438d946a466b67f2b82ba8779c731e55d) Reviewed-by: Qt Cherry-pick Bot <cherrypick_bot@qt-project.org>
This commit is contained in:
parent
8bd70959f8
commit
865bfc531c
@ -348,7 +348,7 @@ QWindowsOleDropSource::QueryContinueDrag(BOOL fEscapePressed, DWORD grfKeyState)
|
|||||||
} else {
|
} else {
|
||||||
if (buttons && !m_currentButtons) {
|
if (buttons && !m_currentButtons) {
|
||||||
m_currentButtons = buttons;
|
m_currentButtons = buttons;
|
||||||
} else if (!(m_currentButtons & buttons)) { // Button changed: Complete Drop operation.
|
} else if (m_currentButtons != buttons) { // Button changed: Complete Drop operation.
|
||||||
result = DRAGDROP_S_DROP;
|
result = DRAGDROP_S_DROP;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user