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:36:21 +01:00
parent 0f1b84040d
commit 05b003eeb5
2 changed files with 14 additions and 4 deletions
+5 -4
View File
@@ -92,7 +92,7 @@ function TreeView:get_cached(dir, item, dirname)
end
t.name = basename
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
end
return t
@@ -231,9 +231,10 @@ function TreeView:on_mouse_pressed(button, x, y, clicks)
create_directory_in(hovered_item)
else
hovered_item.expanded = not hovered_item.expanded
if hovered_item.dir.files_limit then
core.update_project_subdir(hovered_item.dir, hovered_item.filename, hovered_item.expanded)
core.project_subdir_set_show(hovered_item.dir, hovered_item.filename, hovered_item.expanded)
local hovered_dir = core.project_dir_by_name(hovered_item.dir_name)
if hovered_dir and hovered_dir.files_limit then
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
else