close the hotkey menu if the mouse "flicks" onto it

also initialize the selected item properly if the widget is anchored to
the bottom of the screen
develop
myk002 2022-11-30 18:11:02 -08:00
parent 3b7206777e
commit 1851a82fe1
No known key found for this signature in database
GPG Key ID: 8A39CA0FA0C16E78
1 changed files with 14 additions and 4 deletions

@ -37,7 +37,8 @@ function HotspotMenuWidget:overlay_trigger()
return MenuScreen{
hotspot_frame=self.frame,
hotkeys=hotkeys,
bindings=bindings}:show()
bindings=bindings,
mouseover=self.mouseover}:show()
end
-- register the menu hotspot with the overlay
@ -57,6 +58,7 @@ MenuScreen.ATTRS{
hotspot_frame=DEFAULT_NIL,
hotkeys=DEFAULT_NIL,
bindings=DEFAULT_NIL,
mouseover=false,
}
-- get a map from the binding string to a list of hotkey strings that all
@ -114,10 +116,9 @@ local function get_choices(hotkeys, bindings, is_inverted)
end
function MenuScreen:init()
self.mouseover = false
local is_inverted = not not self.hotspot_frame.b
local choices,list_width = get_choices(self.hotkeys, self.bindings,
self.hotspot_frame.b)
is_inverted)
local list_frame = copyall(self.hotspot_frame)
list_frame.w = list_width + 2
@ -173,6 +174,11 @@ function MenuScreen:init()
},
},
}
self.initialize = function()
print('initilize')
self.subviews.list:setSelected(is_inverted and #choices or 1)
end
end
function MenuScreen:onDismiss()
@ -219,6 +225,10 @@ function MenuScreen:onInput(keys)
end
function MenuScreen:onRenderFrame(dc, rect)
if self.initialize then
self.initialize()
self.initialize = nil
end
self:renderParent()
end