diff options
-rw-r--r-- | button.lua | 2 | ||||
-rw-r--r-- | input.lua | 2 | ||||
-rw-r--r-- | keyboard.lua | 5 | ||||
-rw-r--r-- | mouse.lua | 10 |
4 files changed, 14 insertions, 5 deletions
@@ -72,6 +72,6 @@ return function(w) core.registerDraw(id, w.draw or core.style.Button, w.text, pos[1],pos[2], size[1],size[2]) - return mouse.releasedOn(id) or (keyboard.key == 'return' and keyboard.hasFocus(id)) + return mouse.releasedOn(id) or keyboard.pressedOn(id, 'return') end @@ -74,5 +74,5 @@ return function(w) core.registerDraw(id, w.draw or core.style.Input, w.info.text, w.info.cursor, pos[1],pos[2], size[1],size[2]) - return mouse.releasedOn(id) or (keyboard.key == 'return' and keyboard.hasFocus(id)) + return mouse.releasedOn(id) or keyboard.pressedOn(id, 'return') end diff --git a/keyboard.lua b/keyboard.lua index 50323ff..4850df3 100644 --- a/keyboard.lua +++ b/keyboard.lua @@ -70,6 +70,10 @@ local function makeCyclable(id) lastwidget = id end +local function pressedOn(id, k) + return (k or 'return') == key and hasFocus(id) and k +end + local function beginFrame() -- for future use? end @@ -88,6 +92,7 @@ return setmetatable({ clearFocus = clearFocus, hasFocus = hasFocus, makeCyclable = makeCyclable, + pressedOn = pressedOn, disable = disable, enable = clearFocus, @@ -27,7 +27,7 @@ THE SOFTWARE. local _M -- holds the module. needed to make widgetHit overridable local x,y = 0,0 -local down = false +local down, downLast = false, false local hot, active = nil, nil local NO_WIDGET = {} local function _NOP_() end @@ -55,13 +55,17 @@ local function updateWidget(id, pos, size, hit) end local function releasedOn(id) - return not down and isHot(id) and isActive(id) + return not down and isHot(id) and isActive(id) and downLast end local function beginFrame() hot = nil x,y = love.mouse.getPosition() - down = love.mouse.isDown('l') + downLast = down + down = false + for _,btn in ipairs{'l', 'm', 'r'} do + down = down or (love.mouse.isDown(btn) and btn) + end end local function endFrame() |