--
-- ion/mod_menu/mod_menu.lua -- Menu opening helper routines.
--
--- Copyright (c) Tuomo Valkonen 2004-2006.
+-- Copyright (c) Tuomo Valkonen 2004-2007.
--
-- Ion is free software; you can redistribute it and/or modify it under
-- the terms of the GNU Lesser General Public License as published by
local function menu_(reg, sub, menu_or_name, fn, check)
if check then
-- Check that no other menus are open in reg.
- local l=reg:managed_list()
- for i, r in pairs(l) do
- if obj_is(r, "WMenu") then
- return
- end
+ local ok=reg:managed_i(function(r)
+ return not obj_is(r, "WMenu")
+ end)
+ if not ok then
+ return
end
end
- menu=menudb.evalmenu(menu_or_name, {reg, sub})
+ menu=menudb.evalmenu(menu_or_name, reg, sub)
return fn(reg, function(e) e.func(reg, sub) end, menu)
end
-- to use a bigger style by setting the field \var{big} to \code{true}.
function mod_menu.menu(mplex, sub, menu_or_name, param)
local function menu_stdmenu(m, s, menu)
- return mod_menu.do_menu(m, s, menu, param)
+ return ioncore.unsqueeze(mod_menu.do_menu(m, s, menu, param))
end
return menu_(mplex, sub, menu_or_name, menu_stdmenu, true)
end
-- Compatibility
function mod_menu.bigmenu(mplex, sub, menu_or_name, initial)
- local function menu_bigmenu(m, s, menu)
- return mod_menu.do_menu(m, s, menu, {big=true, initial=initial})
- end
- return menu_(mplex, sub, menu_or_name, menu_bigmenu, true)
+ local param={big=true, initial=initial}
+ return mod_menu.menu(mplex, sub, menu_or_name, param)
end
--DOC