[UX] VirtualKeyPopup: respond to hold & pan release (#4887)

As suggested by @poire-z in https://github.com/koreader/koreader/pull/4886#discussion_r273569802

This is actually much better than before.

It subtly changes the behavior of every key this way, but I don't think that's a bad thing.
pull/4888/head
Frans de Jonge 5 years ago committed by GitHub
parent 23f903274a
commit 69e3830bc1
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -131,6 +131,18 @@ function VirtualKey:init()
range = self.dimen,
},
},
HoldReleaseKey = {
GestureRange:new{
ges = "hold_release",
range = self.dimen,
},
},
PanReleaseKey = {
GestureRange:new{
ges = "pan_release",
range = self.dimen,
},
},
SwipeKey = {
GestureRange:new{
ges = "swipe",
@ -219,6 +231,9 @@ function VirtualKey:onSwipeKey(arg, ges)
return true
end
VirtualKey.onHoldReleaseKey = VirtualKey.onTapSelect
VirtualKey.onPanReleaseKey = VirtualKey.onTapSelect
function VirtualKey:invert(invert, hold)
if invert then
self[1].inner_bordersize = self.focused_bordersize
@ -298,11 +313,21 @@ function VirtualKeyPopup:init()
key_chars = key_chars,
width = parent_key.width,
height = parent_key.height,
hold_callback = nil,
}
virtual_key.hold_callback = nil
if v == key_char_orig then
virtual_key[1].background = Blitbuffer.COLOR_LIGHT_GRAY
-- restore ability to hold/pan release on central key after opening popup
virtual_key._keyOrigHoldPanHandler = function()
virtual_key.onHoldReleaseKey = virtual_key._onHoldReleaseKey
virtual_key.onPanReleaseKey = virtual_key._onPanReleaseKey
end
virtual_key._onHoldReleaseKey = virtual_key.onHoldReleaseKey
virtual_key.onHoldReleaseKey = virtual_key._keyOrigHoldPanHandler
virtual_key._onPanReleaseKey = virtual_key.onPanReleaseKey
virtual_key.onPanReleaseKey = virtual_key._keyOrigHoldPanHandler
end
table.insert(group, virtual_key)

Loading…
Cancel
Save