diff --git a/src/Classes/ControlHost.lua b/src/Classes/ControlHost.lua index 4f795135b8..c8c092fdcb 100644 --- a/src/Classes/ControlHost.lua +++ b/src/Classes/ControlHost.lua @@ -40,6 +40,7 @@ function ControlHostClass:ProcessControlsInput(inputEvents, viewPort) local processedImbuedControl for id, event in ipairs(inputEvents) do if event.type == "KeyDown" then + local prevSelControl = self.selControl if self.selControl then processedImbuedControl = self.selControl.imbuedSelect and self.selControl.dropped and event.key:match("BUTTON") self:SelectControl(self.selControl:OnKeyDown(event.key, event.doubleClick)) @@ -52,7 +53,8 @@ function ControlHostClass:ProcessControlsInput(inputEvents, viewPort) self:SelectControl() if isMouseInRegion(viewPort) then local mOverControl = self:GetMouseOverControl() - if mOverControl and mOverControl.OnKeyDown then + -- Skip the control that just handled this event and released focus, otherwise it would process the same click twice + if mOverControl and mOverControl ~= prevSelControl and mOverControl.OnKeyDown then self:SelectControl(mOverControl:OnKeyDown(event.key, event.doubleClick)) inputEvents[id] = nil end