From 911584e816b1cc7446ca5f334931d0245e3c8331 Mon Sep 17 00:00:00 2001 From: Eduardo Bart Date: Mon, 9 Jan 2012 17:00:53 -0200 Subject: [PATCH] fix x11 keyboard modifiers --- TODO | 1 - modules/game/map.lua | 8 ++------ src/framework/platform/win32window.cpp | 1 + src/framework/platform/x11window.cpp | 17 ++++++++--------- 4 files changed, 11 insertions(+), 16 deletions(-) diff --git a/TODO b/TODO index 2280a6be..3a01d48d 100644 --- a/TODO +++ b/TODO @@ -41,7 +41,6 @@ [bart] find a way to add new widgets without focusing them [bart] fix moving windows and tooltips conflicts [bart] break UILabel lines -[bart] padding [bart] review and make more error prone with more warnings [bart] a real working border and background property in otui [bart] reapply anchor styles when adding new childs diff --git a/modules/game/map.lua b/modules/game/map.lua index 0cc877b3..a02a15d8 100644 --- a/modules/game/map.lua +++ b/modules/game/map.lua @@ -1,12 +1,9 @@ function UIMap:onMouseRelease(mousePos, mouseButton) - local tile = self:getTile(mousePos) if not tile then return false end - + local keyboardModifiers = g_window.getKeyboardModifiers() - print ("lol " .. keyboardModifiers) if not Options.classicControl then - if keyboardModifiers == KeyboardNoModifier and mouseButton == MouseLeftButton then -- auto walk return true @@ -23,8 +20,7 @@ function UIMap:onMouseRelease(mousePos, mouseButton) Game.attack(tile:getTopCreature()) return true end - end - + return false end diff --git a/src/framework/platform/win32window.cpp b/src/framework/platform/win32window.cpp index 2c460d5d..35193acd 100644 --- a/src/framework/platform/win32window.cpp +++ b/src/framework/platform/win32window.cpp @@ -35,6 +35,7 @@ WIN32Window::WIN32Window() m_maximized = false; m_minimumSize = Size(16,16); m_size = m_minimumSize; + m_inputEvent.keyboardModifiers = 0; m_keyMap[VK_ESCAPE] = Fw::KeyEscape; m_keyMap[VK_TAB] = Fw::KeyTab; diff --git a/src/framework/platform/x11window.cpp b/src/framework/platform/x11window.cpp index b01742d1..5c4fc920 100644 --- a/src/framework/platform/x11window.cpp +++ b/src/framework/platform/x11window.cpp @@ -37,6 +37,7 @@ X11Window::X11Window() m_screen = 0; m_wmDelete = 0; m_size = Size(16,16); + m_inputEvent.keyboardModifiers = 0; #ifndef OPENGL_ES2 m_glxContext = 0; @@ -543,6 +544,13 @@ void X11Window::poll() m_inputEvent.keyText = ""; m_inputEvent.mouseMoved = Point(); m_inputEvent.wheelDirection = Fw::MouseNoWheel; + m_inputEvent.keyboardModifiers = 0; + if(event.xkey.state & ControlMask) + m_inputEvent.keyboardModifiers |= Fw::KeyboardCtrlModifier; + if(event.xkey.state & ShiftMask) + m_inputEvent.keyboardModifiers |= Fw::KeyboardShiftModifier; + if(event.xkey.state & Mod1Mask) + m_inputEvent.keyboardModifiers |= Fw::KeyboardAltModifier; switch(event.type) { case ClientMessage: { @@ -611,15 +619,6 @@ void X11Window::poll() memset(buf, 0, 32); int len; - m_inputEvent.keyboardModifiers = 0; - m_inputEvent.keyText = ""; - if(event.xkey.state & ControlMask) - m_inputEvent.keyboardModifiers |= Fw::KeyboardCtrlModifier; - if(event.xkey.state & ShiftMask) - m_inputEvent.keyboardModifiers |= Fw::KeyboardShiftModifier; - if(event.xkey.state & Mod1Mask) - m_inputEvent.keyboardModifiers |= Fw::KeyboardAltModifier; - // lookup for keyText if(event.type == KeyPress && !(event.xkey.state & ControlMask) && !(event.xkey.state & Mod1Mask)) { if(m_xic) { // with xim we can get latin1 input correctly