From 1894e71b071ff4a7c2661dfc23b48b25427ef995 Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 3 Feb 2015 12:10:25 +0800 Subject: [PATCH] don't expand toc node when it's parent node is collapsed --- frontend/apps/reader/modules/readertoc.lua | 24 ++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/frontend/apps/reader/modules/readertoc.lua b/frontend/apps/reader/modules/readertoc.lua index d3438d082..5d263bcad 100644 --- a/frontend/apps/reader/modules/readertoc.lua +++ b/frontend/apps/reader/modules/readertoc.lua @@ -242,14 +242,19 @@ function ReaderToc:updateCurrentNode() end end -function ReaderToc:expandCurrentNode() - local current_node_index = self:getTocIndexByPage(self.pageno) - if current_node_index then - for i = current_node_index - 1, 1, -1 do - if self.toc[i+1].depth > self.toc[i].depth then - self:expandToc(i) - break +function ReaderToc:expandParentNode(index) + if index then + local nodes_to_expand = {} + local depth = self.toc[index].depth + for i = index - 1, 1, -1 do + if depth > self.toc[i].depth then + depth = self.toc[i].depth + table.insert(nodes_to_expand, i) end + if depth == 1 then break end + end + for i = #nodes_to_expand, 1, -1 do + self:expandToc(nodes_to_expand[i]) end end end @@ -349,7 +354,7 @@ function ReaderToc:onShowToc() self.toc_menu = toc_menu -- auto expand the parent node of current page - self:expandCurrentNode() + self:expandParentNode(self:getTocIndexByPage(self.pageno)) UIManager:show(menu_container) @@ -372,6 +377,9 @@ function ReaderToc:expandToc(index) break end end + -- either the toc entry of index has no child nodes + -- or it's parent nodes are not expanded yet + if not collapsed_index then return end for i = index + 1, #self.toc do local v = self.toc[i] if v.depth == cur_depth + 1 then