mirror of
https://github.com/edubart/otclient.git
synced 2025-10-22 23:35:54 +02:00
fix issues in ctrl/shift/alt states on win32
This commit is contained in:
@@ -45,19 +45,26 @@ void PlatformWindow::updateUnmaximizedCoords()
|
||||
|
||||
void PlatformWindow::processKeyDown(Fw::Key keyCode)
|
||||
{
|
||||
if(keyCode == Fw::KeyUnknown || m_keysState[keyCode])
|
||||
if(keyCode == Fw::KeyUnknown)
|
||||
return;
|
||||
|
||||
if(keyCode == Fw::KeyCtrl) {
|
||||
m_inputEvent.keyboardModifiers |= Fw::KeyboardCtrlModifier;
|
||||
return;
|
||||
} else if(keyCode == Fw::KeyAlt) {
|
||||
m_inputEvent.keyboardModifiers |= Fw::KeyboardAltModifier;
|
||||
return;
|
||||
} else if(keyCode == Fw::KeyShift) {
|
||||
m_inputEvent.keyboardModifiers |= Fw::KeyboardShiftModifier;
|
||||
return;
|
||||
}
|
||||
|
||||
if(m_keysState[keyCode])
|
||||
return;
|
||||
|
||||
m_keysState[keyCode] = true;
|
||||
m_lastKeysPress[keyCode] = -1;
|
||||
|
||||
if(keyCode == Fw::KeyCtrl)
|
||||
m_inputEvent.keyboardModifiers |= Fw::KeyboardCtrlModifier;
|
||||
else if(keyCode == Fw::KeyAlt)
|
||||
m_inputEvent.keyboardModifiers |= Fw::KeyboardAltModifier;
|
||||
else if(keyCode == Fw::KeyShift)
|
||||
m_inputEvent.keyboardModifiers |= Fw::KeyboardShiftModifier;
|
||||
|
||||
m_inputEvent.reset(Fw::KeyDownInputEvent);
|
||||
m_inputEvent.type = Fw::KeyDownInputEvent;
|
||||
m_inputEvent.keyCode = keyCode;
|
||||
@@ -75,18 +82,25 @@ void PlatformWindow::processKeyDown(Fw::Key keyCode)
|
||||
|
||||
void PlatformWindow::processKeyUp(Fw::Key keyCode)
|
||||
{
|
||||
if(keyCode == Fw::KeyUnknown || !m_keysState[keyCode])
|
||||
if(keyCode == Fw::KeyUnknown)
|
||||
return;
|
||||
|
||||
if(keyCode == Fw::KeyCtrl) {
|
||||
m_inputEvent.keyboardModifiers &= ~Fw::KeyboardCtrlModifier;
|
||||
return;
|
||||
} else if(keyCode == Fw::KeyAlt) {
|
||||
m_inputEvent.keyboardModifiers &= ~Fw::KeyboardAltModifier;
|
||||
return;
|
||||
} else if(keyCode == Fw::KeyShift) {
|
||||
m_inputEvent.keyboardModifiers &= ~Fw::KeyboardShiftModifier;
|
||||
return;
|
||||
}
|
||||
|
||||
if(!m_keysState[keyCode])
|
||||
return;
|
||||
|
||||
m_keysState[keyCode] = false;
|
||||
|
||||
if(keyCode == Fw::KeyCtrl)
|
||||
m_inputEvent.keyboardModifiers &= ~Fw::KeyboardCtrlModifier;
|
||||
else if(keyCode == Fw::KeyAlt)
|
||||
m_inputEvent.keyboardModifiers &= ~Fw::KeyboardAltModifier;
|
||||
else if(keyCode == Fw::KeyShift)
|
||||
m_inputEvent.keyboardModifiers &= ~Fw::KeyboardShiftModifier;
|
||||
|
||||
if(m_onInputEvent) {
|
||||
m_inputEvent.reset(Fw::KeyUpInputEvent);
|
||||
m_onInputEvent(m_inputEvent);
|
||||
|
||||
Reference in New Issue
Block a user