mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
[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.
This commit is contained in:
@@ -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)
|
||||
|
||||
Reference in New Issue
Block a user