fix: rendering fails when no file type style is matched (#721)

This commit is contained in:
三咲雅 · Misaki Masa 2024-02-25 00:28:12 +08:00 committed by GitHub
parent 8ea7556625
commit 5e43f878c6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 20 additions and 9 deletions

View file

@ -95,7 +95,13 @@ impl File {
})
});
reg.add_method("is_selected", |_, me, ()| Ok(me.tab().selected.contains(&me.url)));
reg.add_method("in_parent", |_, me, ()| {
Ok(me.tab().parent.as_ref().is_some_and(|f| me.folder().cwd == f.cwd))
});
reg.add_method("in_current", |_, me, ()| Ok(me.folder().cwd == me.tab().current.cwd));
reg.add_method("in_preview", |_, me, ()| {
Ok(me.tab().current.hovered().is_some_and(|f| me.folder().cwd == f.url))
});
reg.add_method("found", |lua, me, ()| {
let cx = lua.named_registry_value::<CtxRef>("cx")?;
let Some(finder) = &cx.manager.active().finder else {

View file

@ -12,9 +12,7 @@ function Current:render(area)
local items, markers = {}, {}
for i, f in ipairs(files) do
local style = f:style()
items[#items + 1] = ui.ListItem(ui.Line(File:full(f)))
:style(f:is_hovered() and style:patch(THEME.manager.hovered) or style)
items[#items + 1] = ui.ListItem(ui.Line(File:full(f))):style(File:style(f))
-- Yanked/marked/selected files
local marker = File:marker(f)

View file

@ -72,6 +72,17 @@ function File:full(file)
}
end
function File:style(file)
local style = file:style()
if not file:is_hovered() then
return style
elseif file:in_preview() then
return style and style:patch(THEME.manager.preview_hovered) or THEME.manager.preview_hovered
else
return style and style:patch(THEME.manager.hovered) or THEME.manager.hovered
end
end
function File:marker(file)
local yanked = file:is_yanked()
if yanked ~= 0 then

View file

@ -12,9 +12,7 @@ function Parent:render(area)
local items, markers = {}, {}
for i, f in ipairs(folder.window) do
local style = f:style()
items[#items + 1] = ui.ListItem(ui.Line(File:full(f)))
:style(f:is_hovered() and style:patch(THEME.manager.hovered) or style)
items[#items + 1] = ui.ListItem(ui.Line(File:full(f))):style(File:style(f))
-- Yanked/marked/selected files
local marker = File:marker(f)

View file

@ -13,9 +13,7 @@ function M:peek()
local items, markers = {}, {}
for i, f in ipairs(folder.window) do
local style = f:style()
items[#items + 1] = ui.ListItem(ui.Line(File:full(f)))
:style(f:is_hovered() and style:patch(THEME.manager.preview_hovered) or style)
items[#items + 1] = ui.ListItem(ui.Line(File:full(f))):style(File:style(f))
-- Yanked/marked/selected files
local marker = File:marker(f)