From 0885e9947dead0fe4b30d816ffeafca4a3932a19 Mon Sep 17 00:00:00 2001 From: poire-z Date: Wed, 6 Nov 2019 21:26:17 +0100 Subject: [PATCH] Keyboard: avoid additional key stroke on hold release (#5573) --- frontend/ui/widget/virtualkeyboard.lua | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/frontend/ui/widget/virtualkeyboard.lua b/frontend/ui/widget/virtualkeyboard.lua index 3a7d0992c..339069d2e 100644 --- a/frontend/ui/widget/virtualkeyboard.lua +++ b/frontend/ui/widget/virtualkeyboard.lua @@ -58,7 +58,10 @@ function VirtualKey:init() self.skiptap = true elseif self.label == "Backspace" then self.callback = function () self.keyboard:delChar() end - self.hold_callback = function () self.keyboard:delToStartOfLine() end + self.hold_callback = function () + self.ignore_key_release = true -- don't have delChar called on release + self.keyboard:delToStartOfLine() + end --self.skiphold = true elseif self.label =="←" then self.callback = function() self.keyboard:leftChar() end @@ -241,21 +244,31 @@ function VirtualKey:onSwipeKey(arg, ges) end function VirtualKey:onHoldReleaseKey() + if self.ignore_key_release then + self.ignore_key_release = nil + return true + end Device:performHapticFeedback("LONG_PRESS") if self.keyboard.ignore_first_hold_release then self.keyboard.ignore_first_hold_release = false return true end self:onTapSelect() + return true end function VirtualKey:onPanReleaseKey() + if self.ignore_key_release then + self.ignore_key_release = nil + return true + end Device:performHapticFeedback("LONG_PRESS") if self.keyboard.ignore_first_hold_release then self.keyboard.ignore_first_hold_release = false return true end self:onTapSelect() + return true end function VirtualKey:invert(invert, hold) @@ -377,6 +390,7 @@ function VirtualKeyPopup:init() virtual_key.onHoldReleaseKey = function() virtual_key:onTapSelect(true) UIManager:close(self) + return true end virtual_key.onPanReleaseKey = virtual_key.onHoldReleaseKey