Avoid references to project's dir in TreeView

It is not a good practice to keep a reference to the project's
directory object outside of the "core" module itself.

The TreeView was using such a reference in the cache item for each
file or directory entry. Replace the reference to the object with
the absolute name of the project directory.
This commit is contained in:
Francesco Abbate 2021-12-28 14:32:39 +01:00
parent 0f1b84040d
commit 05b003eeb5
2 changed files with 14 additions and 4 deletions

View File

@ -371,6 +371,15 @@ function core.add_project_directory(path)
end end
function core.project_dir_by_name(name)
for i = 1, #core.project_directories do
if core.project_directories[i].name == name then
return core.project_directories[i]
end
end
end
function core.update_project_subdir(dir, filename, expanded) function core.update_project_subdir(dir, filename, expanded)
local index, n, file = project_subdir_bounds(dir, filename) local index, n, file = project_subdir_bounds(dir, filename)
if index then if index then

View File

@ -92,7 +92,7 @@ function TreeView:get_cached(dir, item, dirname)
end end
t.name = basename t.name = basename
t.type = item.type t.type = item.type
t.dir = dir -- points to top level "dir" item t.dir_name = dir.name -- points to top level "dir" item
dir_cache[cache_name] = t dir_cache[cache_name] = t
end end
return t return t
@ -231,9 +231,10 @@ function TreeView:on_mouse_pressed(button, x, y, clicks)
create_directory_in(hovered_item) create_directory_in(hovered_item)
else else
hovered_item.expanded = not hovered_item.expanded hovered_item.expanded = not hovered_item.expanded
if hovered_item.dir.files_limit then local hovered_dir = core.project_dir_by_name(hovered_item.dir_name)
core.update_project_subdir(hovered_item.dir, hovered_item.filename, hovered_item.expanded) if hovered_dir and hovered_dir.files_limit then
core.project_subdir_set_show(hovered_item.dir, hovered_item.filename, hovered_item.expanded) core.update_project_subdir(hovered_dir, hovered_item.filename, hovered_item.expanded)
core.project_subdir_set_show(hovered_dir, hovered_item.filename, hovered_item.expanded)
end end
end end
else else