add item.info and item.disabled
This commit is contained in:
parent
5155f7a2a4
commit
084012ed60
|
@ -49,7 +49,7 @@ function ContextMenu:register(predicate, items)
|
||||||
local width, height = 0, 0 --precalculate the size of context menu
|
local width, height = 0, 0 --precalculate the size of context menu
|
||||||
for i, item in ipairs(items) do
|
for i, item in ipairs(items) do
|
||||||
if item ~= DIVIDER then
|
if item ~= DIVIDER then
|
||||||
item.info = keymap.reverse_map[item.command]
|
item.info = item.info or keymap.reverse_map[item.command]
|
||||||
end
|
end
|
||||||
local lw, lh = get_item_size(item)
|
local lw, lh = get_item_size(item)
|
||||||
width = math.max(width, lw)
|
width = math.max(width, lw)
|
||||||
|
@ -129,6 +129,7 @@ function ContextMenu:on_mouse_moved(px, py)
|
||||||
end
|
end
|
||||||
|
|
||||||
function ContextMenu:on_selected(item)
|
function ContextMenu:on_selected(item)
|
||||||
|
if item.disabled then return end
|
||||||
if type(item.command) == "string" then
|
if type(item.command) == "string" then
|
||||||
command.perform(item.command)
|
command.perform(item.command)
|
||||||
else
|
else
|
||||||
|
@ -203,11 +204,12 @@ function ContextMenu:draw_context_menu()
|
||||||
if item == DIVIDER then
|
if item == DIVIDER then
|
||||||
renderer.draw_rect(x, y, w, h, style.caret)
|
renderer.draw_rect(x, y, w, h, style.caret)
|
||||||
else
|
else
|
||||||
if i == self.selected then
|
if i == self.selected and not self.disabled then
|
||||||
renderer.draw_rect(x, y, w, h, style.selection)
|
renderer.draw_rect(x, y, w, h, style.selection)
|
||||||
end
|
end
|
||||||
|
|
||||||
common.draw_text(style.font, style.text, item.text, "left", x + style.padding.x, y, w, h)
|
local text_color = item.disabled and style.dim or style.text
|
||||||
|
common.draw_text(style.font, text_color, item.text, "left", x + style.padding.x, y, w, h)
|
||||||
if item.info then
|
if item.info then
|
||||||
common.draw_text(style.font, style.dim, item.info, "right", x, y, w - style.padding.x, h)
|
common.draw_text(style.font, style.dim, item.info, "right", x, y, w - style.padding.x, h)
|
||||||
end
|
end
|
||||||
|
|
Loading…
Reference in New Issue