From 1894e71b071ff4a7c2661dfc23b48b25427ef995 Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 3 Feb 2015 12:10:25 +0800 Subject: [PATCH 1/3] 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 From 5b7680591133d8b38a9451ce45b8feff366881e6 Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 3 Feb 2015 12:48:09 +0800 Subject: [PATCH 2/3] disable follow link by default because it may cause trouble in reflowing mode --- frontend/apps/reader/modules/readerlink.lua | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/frontend/apps/reader/modules/readerlink.lua b/frontend/apps/reader/modules/readerlink.lua index b4972ad88..66d762d45 100644 --- a/frontend/apps/reader/modules/readerlink.lua +++ b/frontend/apps/reader/modules/readerlink.lua @@ -59,11 +59,10 @@ function ReaderLink:addToMainMenu(tab_item_table) table.insert(tab_item_table.navi, { text = _("Follow links"), checked_func = function() - return G_reader_settings:readSetting("follow_links") ~= false + return G_reader_settings:readSetting("follow_links") == true end, callback = function() local follow_links = G_reader_settings:readSetting("follow_links") - if follow_links == nil then follow_links = true end G_reader_settings:saveSetting("follow_links", not follow_links) end }) @@ -77,7 +76,7 @@ function ReaderLink:onSetDimensions(dimen) end function ReaderLink:onTap(arg, ges) - if G_reader_settings:readSetting("follow_links") == false then return end + if G_reader_settings:readSetting("follow_links") ~= true then return end if self.ui.document.info.has_pages then local pos = self.view:screenToPageTransform(ges.pos) if pos then From 3a0960d391640846980720ffdfdc855c5dbb5845 Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 3 Feb 2015 15:34:35 +0800 Subject: [PATCH 3/3] goto current toc entry automatically when open TOC window --- frontend/apps/reader/modules/readertoc.lua | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/frontend/apps/reader/modules/readertoc.lua b/frontend/apps/reader/modules/readertoc.lua index 5d263bcad..0837d2092 100644 --- a/frontend/apps/reader/modules/readertoc.lua +++ b/frontend/apps/reader/modules/readertoc.lua @@ -303,8 +303,6 @@ function ReaderToc:onShowToc() end end - self:updateCurrentNode() - local button_size = self.expand_button:getSize() local toc_menu = Menu:new{ title = _("Table of Contents"), @@ -353,8 +351,11 @@ function ReaderToc:onShowToc() self.toc_menu = toc_menu + self:updateCurrentNode() -- auto expand the parent node of current page self:expandParentNode(self:getTocIndexByPage(self.pageno)) + -- auto goto page of the current toc entry + self.toc_menu:swithItemTable(nil, self.collapsed_toc, self.collapsed_toc.current or -1) UIManager:show(menu_container)