1
0
Fork 0
mirror of https://github.com/juce-framework/JUCE.git synced 2026-01-10 23:44:24 +00:00

Linux: Make ComponentPeer::getCurrentModifiersRealtime() update shift and ctrl modifiers

This commit is contained in:
attila 2024-01-11 20:04:44 +01:00 committed by Anthony Nicholls
parent 3548e51ef6
commit c320a42c36

View file

@ -2514,7 +2514,7 @@ ModifierKeys XWindowSystem::getNativeRealtimeModifiers() const
::Window root, child;
int x, y, winx, winy;
unsigned int mask;
int mouseMods = 0;
int mouseMods = 0, keyboardMods = 0, keyboardClearMods = 0;
XWindowSystemUtilities::ScopedXLock xLock;
@ -2526,9 +2526,15 @@ ModifierKeys XWindowSystem::getNativeRealtimeModifiers() const
if ((mask & Button1Mask) != 0) mouseMods |= ModifierKeys::leftButtonModifier;
if ((mask & Button2Mask) != 0) mouseMods |= ModifierKeys::middleButtonModifier;
if ((mask & Button3Mask) != 0) mouseMods |= ModifierKeys::rightButtonModifier;
((mask & ShiftMask) != 0 ? keyboardMods : keyboardClearMods) |= ModifierKeys::shiftModifier;
((mask & ControlMask) != 0 ? keyboardMods : keyboardClearMods) |= ModifierKeys::ctrlModifier;
}
ModifierKeys::currentModifiers = ModifierKeys::currentModifiers.withoutMouseButtons().withFlags (mouseMods);
ModifierKeys::currentModifiers = ModifierKeys::currentModifiers.withoutMouseButtons()
.withFlags (mouseMods)
.withoutFlags (keyboardClearMods)
.withFlags (keyboardMods);
// We are keeping track of the state of modifier keys and mouse buttons with the assumption that
// for every mouse down we are going to receive a mouse up etc.