Merge pull request #1354 from psychon/menubar-fixes

Menubar fixes
This commit is contained in:
Daniel Hahler 2017-01-04 20:55:51 +01:00 committed by GitHub
commit 466988eb5a
1 changed files with 20 additions and 21 deletions

View File

@ -93,9 +93,7 @@ local current_item = 1
local previous_item = nil
local current_category = nil
local shownitems = nil
local instance = { prompt = nil,
widget = nil,
wibox = nil }
local instance = nil
local common_args = { w = wibox.layout.fixed.horizontal(),
data = setmetatable({}, { __mode = 'kv' }) }
@ -347,25 +345,14 @@ local function menulist_update(query, scr)
get_current_page(shownitems, query, scr))
end
--- Create the menubar wibox and widgets.
-- @tparam[opt] screen scr Screen.
local function initialize(scr)
instance.wibox = wibox({})
instance.widget = menubar.get(scr)
instance.wibox.ontop = true
instance.prompt = awful.widget.prompt()
local layout = wibox.layout.fixed.horizontal()
layout:add(instance.prompt)
layout:add(instance.widget)
instance.wibox:set_widget(layout)
end
--- Refresh menubar's cache by reloading .desktop files.
-- @tparam[opt] screen scr Screen.
function menubar.refresh(scr)
menubar.menu_gen.generate(function(entries)
menubar.menu_entries = entries
menulist_update(nil, scr)
if instance then
menulist_update(nil, scr)
end
end)
end
@ -416,9 +403,19 @@ end
--- Show the menubar on the given screen.
-- @param scr Screen.
function menubar.show(scr)
if not instance.wibox then
initialize(scr)
elseif instance.wibox.visible then -- Menu already shown, exit
if not instance then
instance = {
wibox = wibox({ ontop = true }),
widget = menubar.get(scr),
prompt = awful.widget.prompt(),
}
local layout = wibox.layout.fixed.horizontal()
layout:add(instance.prompt)
layout:add(instance.widget)
instance.wibox:set_widget(layout)
end
if instance.wibox.visible then -- Menu already shown, exit
return
elseif not menubar.cache_entries then
menubar.refresh(scr)
@ -456,7 +453,9 @@ end
--- Hide the menubar.
function menubar.hide()
instance.wibox.visible = false
if instance then
instance.wibox.visible = false
end
end
--- Get a menubar wibox.