diff --git a/unireader.lua b/unireader.lua index 0074216bf..cabb9bce8 100644 --- a/unireader.lua +++ b/unireader.lua @@ -2960,18 +2960,22 @@ function UniReader:addAllCommands() local face = Font:getFace("rifont", font_size) local page_links = 0 + local visible_links = {} for i, link in ipairs(links) do if link.page then local x,y,w,h = self:zoomedRectCoordTransform( link.x0,link.y0, link.x1,link.y1 ) - fb.bb:dimRect(x,y,w,h) -- black 50% - fb.bb:dimRect(x,y,w,h) -- black 25% - page_links = page_links + 1 + if x > 0 and y > 0 and x < G_width and y < G_height then + fb.bb:dimRect(x,y,w,h) -- black 50% + fb.bb:dimRect(x,y,w,h) -- black 25% + page_links = page_links + 1 + visible_links[page_links] = link + end end end if page_links == 0 then - InfoMessage:inform("No links on this page ", 2000, 1, MSG_WARN) + InfoMessage:inform("No visible links on this page ", 2000, 1, MSG_WARN) return end @@ -2987,7 +2991,7 @@ function UniReader:addAllCommands() shortcut_map = {} for i = 1, #SelectMenu.item_shortcuts, 1 do - local link = links[ i + shortcut_offset ] + local link = visible_links[ i + shortcut_offset ] if link == nil then break end Debug("link", i, shortcut_offset, link) if link.page then @@ -3032,7 +3036,7 @@ function UniReader:addAllCommands() link = 30 elseif ev.code == KEY_BACK then goto_page = unireader.pageno - elseif ( ev.code == KEY_FW_RIGHT or ev.code == KEY_FW_DOWN ) and shortcut_offset <= #links - 30 then + elseif ( ev.code == KEY_FW_RIGHT or ev.code == KEY_FW_DOWN ) and shortcut_offset <= #visible_links - 30 then shortcut_offset = shortcut_offset + 30 render_shortcuts() elseif ( ev.code == KEY_FW_LEFT or ev.code == KEY_FW_UP ) and shortcut_offset >= 30 then @@ -3043,7 +3047,7 @@ function UniReader:addAllCommands() if link then link = shortcut_map[link] - if links[link] ~= nil and links[link].page ~= nil then + if visible_links[link] ~= nil and visible_links[link].page ~= nil then goto_page = links[link].page + 1 else Debug("missing link", link)