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
|
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
|
||||||
|
|
|
@ -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
|
||||||
|
|
Loading…
Reference in New Issue