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:
parent
0f1b84040d
commit
05b003eeb5
|
@ -371,6 +371,15 @@ function core.add_project_directory(path)
|
|||
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)
|
||||
local index, n, file = project_subdir_bounds(dir, filename)
|
||||
if index then
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue