fix origin widget for PressEnd events generated by keyboard shortcuts

This commit is contained in:
airstruck
2016-01-19 12:53:11 -05:00
parent ab43dabcb9
commit 78e02c190e
2 changed files with 9 additions and 12 deletions

View File

@@ -170,7 +170,7 @@ end
function Input:handlePressEnd (layout, button, x, y, widget, shortcut) function Input:handlePressEnd (layout, button, x, y, widget, shortcut)
local hit, widget = checkHit(widget or layout:getWidgetAt(x, y), layout) local hit, widget = checkHit(widget or layout:getWidgetAt(x, y), layout)
local originWidget = self.pressedWidgets[button] local originWidget = widget or self.pressedWidgets[button]
if not originWidget then return end if not originWidget then return end
if hit then if hit then
originWidget.pressed[button] = nil originWidget.pressed[button] = nil

View File

@@ -313,14 +313,13 @@ function Layout:addDefaultHandlers ()
end) end)
self:onKeyPress(function (event) self:onKeyPress(function (event)
-- keyboard shortcuts -- keyboard shortcuts
local entry = self.shortcuts[event.modifierFlags] local entry = self.shortcuts[event.modifierFlags]
local acceleratedWidget = entry and entry[event.key] local widget = entry and entry[event.key]
if acceleratedWidget then if widget then
acceleratedWidget.hovered = true widget.hovered = true
self.input:handlePressStart(self, 'left', event.x, event.y, self.input:handlePressStart(self, 'left', event.x, event.y,
acceleratedWidget, event.key) widget, widget.shortcut)
return false return false
end end
@@ -345,15 +344,13 @@ function Layout:addDefaultHandlers ()
end) end)
self:onKeyRelease(function (event) self:onKeyRelease(function (event)
-- shortcuts -- shortcuts
local entry = self.shortcuts[event.modifierFlags] local entry = self.shortcuts[event.modifierFlags]
local acceleratedWidget = entry and entry[event.key] local widget = entry and entry[event.key]
if widget then
if acceleratedWidget then widget.hovered = false
acceleratedWidget.hovered = false
self.input:handlePressEnd(self, 'left', event.x, event.y, self.input:handlePressEnd(self, 'left', event.x, event.y,
acceleratedWidget, event.key) widget, widget.shortcut)
return false return false
end end