convert hotkeys_popup to awful.popup instead of wibox

This commit is contained in:
Seth Barberee 2020-03-05 08:37:56 -06:00
parent 2da1cb9ba0
commit 5c7574bce8
2 changed files with 30 additions and 21 deletions

View File

@ -570,7 +570,16 @@ function widget.new(args)
end end
table.insert(pages, columns) table.insert(pages, columns)
local mywibox = wibox({ -- Function to place the widget in the center and account for the
-- workarea. This will be called in the placement field of the
-- awful.popup constructor.
local place_func = function(c)
awful.placement.centered(c, {honor_workarea = true})
end
-- Construct the popup with the widget
local mypopup = awful.popup {
widget = pages[1],
ontop = true, ontop = true,
bg=self.bg, bg=self.bg,
fg=self.fg, fg=self.fg,
@ -578,20 +587,20 @@ function widget.new(args)
border_width = self.border_width, border_width = self.border_width,
border_color = self.border_color, border_color = self.border_color,
shape = self.shape, shape = self.shape,
}) placement = place_func,
minimum_width = wibox_width,
minimum_height = wibox_height,
}
local widget_obj = { local widget_obj = {
current_page = 1, current_page = 1,
wibox = mywibox, popup = mypopup,
} }
mywibox:geometry({
x = wa.x + math.floor((wa.width - wibox_width - self.border_width*2) / 2),
y = wa.y + math.floor((wa.height - wibox_height - self.border_width*2) / 2),
width = wibox_width,
height = wibox_height,
})
mywibox:set_widget(pages[1])
mywibox.buttons = { -- Set up the mouse buttons to hide the popup
-- Any keybinding except what the keygrabber wants wil hide the popup
-- too
mypopup.buttons = {
awful.button({ }, 1, function () widget_obj:hide() end), awful.button({ }, 1, function () widget_obj:hide() end),
awful.button({ }, 3, function () widget_obj:hide() end) awful.button({ }, 3, function () widget_obj:hide() end)
} }
@ -599,18 +608,18 @@ function widget.new(args)
function widget_obj.page_next(_self) function widget_obj.page_next(_self)
if _self.current_page == #pages then return end if _self.current_page == #pages then return end
_self.current_page = _self.current_page + 1 _self.current_page = _self.current_page + 1
_self.wibox:set_widget(pages[_self.current_page]) _self.popup:set_widget(pages[_self.current_page])
end end
function widget_obj.page_prev(_self) function widget_obj.page_prev(_self)
if _self.current_page == 1 then return end if _self.current_page == 1 then return end
_self.current_page = _self.current_page - 1 _self.current_page = _self.current_page - 1
_self.wibox:set_widget(pages[_self.current_page]) _self.popup:set_widget(pages[_self.current_page])
end end
function widget_obj.show(_self) function widget_obj.show(_self)
_self.wibox.visible = true _self.popup.visible = true
end end
function widget_obj.hide(_self) function widget_obj.hide(_self)
_self.wibox.visible = false _self.popup.visible = false
if _self.keygrabber then if _self.keygrabber then
awful.keygrabber.stop(_self.keygrabber) awful.keygrabber.stop(_self.keygrabber)
end end

View File

@ -270,23 +270,23 @@ local steps = {
assert(num_pairs(cached_wiboxes[s]) == 2) assert(num_pairs(cached_wiboxes[s]) == 2)
end end
local hotkeys_wibox local hotkeys_popup
local visible_hotkeys_widget local visible_hotkeys_widget
for _, widget in pairs(cached_wiboxes[s]) do for _, widget in pairs(cached_wiboxes[s]) do
hotkeys_wibox = widget.wibox hotkeys_popup = widget.popup
if hotkeys_wibox.visible then if hotkeys_popup.visible then
visible_hotkeys_widget = widget visible_hotkeys_widget = widget
end end
end end
if count == 2 then if count == 2 then
assert(hotkeys_wibox ~= nil) assert(hotkeys_popup ~= nil)
assert(hotkeys_wibox.visible) assert(hotkeys_popup.visible)
-- Should disappear on anykey -- Should disappear on anykey
root.fake_input("key_press", "Super_L") root.fake_input("key_press", "Super_L")
elseif count == 3 then elseif count == 3 then
assert(not hotkeys_wibox.visible) assert(not hotkeys_popup.visible)
root.fake_input("key_release", "Super_L") root.fake_input("key_release", "Super_L")
test_context.hotkeys01_clients_before = #client.get() test_context.hotkeys01_clients_before = #client.get()
-- imitate fake client with name "vim" -- imitate fake client with name "vim"