mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Toc: collapse child when parent is collapsed
This commit is contained in:
committed by
Frans de Jonge
parent
73bb76f92d
commit
d8087b37e3
@@ -663,7 +663,8 @@ function ReaderToc:onShowToc()
|
||||
tmp:free()
|
||||
|
||||
local has_hidden_flows = self.ui.document:hasHiddenFlows()
|
||||
for _, v in ipairs(self.toc) do
|
||||
for k, v in ipairs(self.toc) do
|
||||
v.index = k
|
||||
v.indent = toc_indent * (v.depth-1)
|
||||
v.text = self:cleanUpTocTitle(v.title, true)
|
||||
v.mandatory = v.page
|
||||
@@ -715,6 +716,8 @@ function ReaderToc:onShowToc()
|
||||
icon_height = icon_size,
|
||||
bordersize = 0,
|
||||
show_parent = self,
|
||||
callback = function(index) self:expandToc(index) end,
|
||||
onTapSelectButton = function() end, -- pass through taps to onMenuSelect
|
||||
}
|
||||
|
||||
self.collapse_button = Button:new{
|
||||
@@ -724,6 +727,8 @@ function ReaderToc:onShowToc()
|
||||
icon_height = icon_size,
|
||||
bordersize = 0,
|
||||
show_parent = self,
|
||||
callback = function(index) self:collapseToc(index) end,
|
||||
onTapSelectButton = function() end, -- pass through taps to onMenuSelect
|
||||
}
|
||||
|
||||
-- update collapsible state
|
||||
@@ -733,9 +738,7 @@ function ReaderToc:onShowToc()
|
||||
local v = self.toc[i]
|
||||
-- node v has child node(s)
|
||||
if v.depth < depth then
|
||||
v.state = self.expand_button:new{
|
||||
callback = function() self:expandToc(i) end,
|
||||
}
|
||||
v.state = self.expand_button:new{}
|
||||
end
|
||||
if v.depth < self.collapse_depth then
|
||||
table.insert(self.collapsed_toc, 1, v)
|
||||
@@ -796,7 +799,7 @@ function ReaderToc:onShowToc()
|
||||
end
|
||||
end
|
||||
if do_toggle_state then
|
||||
item.state.callback()
|
||||
item.state.callback(item.index)
|
||||
else
|
||||
toc_menu:close_callback()
|
||||
self.ui.link:addCurrentLocationToStack()
|
||||
@@ -880,9 +883,8 @@ function ReaderToc:expandToc(index)
|
||||
end
|
||||
end
|
||||
-- change state of current node to expanded
|
||||
cur_node.state = self.collapse_button:new{
|
||||
callback = function() self:collapseToc(index) end,
|
||||
}
|
||||
if cur_node.state then cur_node.state:free() end
|
||||
cur_node.state = self.collapse_button:new{}
|
||||
self:updateCurrentNode()
|
||||
self.toc_menu:switchItemTable(nil, self.collapsed_toc, -1)
|
||||
end
|
||||
@@ -905,6 +907,16 @@ function ReaderToc:collapseToc(index)
|
||||
is_child_node = false
|
||||
end
|
||||
if is_child_node then
|
||||
if v.state then
|
||||
v.state:free()
|
||||
v.state = self.expand_button:new{}
|
||||
for y, z in ipairs(self.expanded_nodes) do
|
||||
if z == v.index then
|
||||
table.remove(self.expanded_nodes, y)
|
||||
break
|
||||
end
|
||||
end
|
||||
end
|
||||
table.remove(self.collapsed_toc, i)
|
||||
else
|
||||
i = i + 1
|
||||
@@ -915,9 +927,8 @@ function ReaderToc:collapseToc(index)
|
||||
end
|
||||
end
|
||||
-- change state of current node to collapsed
|
||||
cur_node.state = self.expand_button:new{
|
||||
callback = function() self:expandToc(index) end,
|
||||
}
|
||||
cur_node.state:free()
|
||||
cur_node.state = self.expand_button:new{}
|
||||
self:updateCurrentNode()
|
||||
self.toc_menu:switchItemTable(nil, self.collapsed_toc, -1)
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user