diff --git a/crereader.lua b/crereader.lua index 6fe0eebec..69bfc1ec5 100644 --- a/crereader.lua +++ b/crereader.lua @@ -287,14 +287,17 @@ end function CREReader:prevBookMarkedPage() local pre_item = nil for k,v in ipairs(self.bookmarks) do + Debug(v) if self.pos <= self.doc:getPosFromXPointer(v.page) then - if self.doc:getPosFromXPointer(pre_item.page) < self.pos then + if not pre_item then + break + elseif self.doc:getPosFromXPointer(pre_item.page) < self.pos then return pre_item end end pre_item = v end - return nil + return pre_item end function CREReader:showBookMarks() @@ -410,7 +413,7 @@ function CREReader:adjustCreReaderCommands() else bm = self:nextBookMarkedPage() end - if bm then self:goto(bm.page, "xpointer") end + if bm then self:goto(bm.page, nil, "xpointer") end end ) self.commands:addGroup(MOD_ALT.."< >",{ diff --git a/unireader.lua b/unireader.lua index f730ab3e4..06f106024 100644 --- a/unireader.lua +++ b/unireader.lua @@ -1750,13 +1750,15 @@ function UniReader:prevBookMarkedPage() local pre_item = nil for k,v in ipairs(self.bookmarks) do if self.pageno <= v.page then - if pre_item.page < self.pageno then + if not pre_item then + break + elseif pre_item.page < self.pageno then return pre_item end end pre_item = v end - return nil + return pre_item end function UniReader:showHighLight() @@ -1925,11 +1927,15 @@ function UniReader:addAllCommands() self.commands:addGroup(MOD_SHIFT.."< >",{ Keydef:new(KEY_PGBCK,MOD_SHIFT),Keydef:new(KEY_PGFWD,MOD_SHIFT), Keydef:new(KEY_LPGBCK,MOD_SHIFT),Keydef:new(KEY_LPGFWD,MOD_SHIFT)}, - "zoom out/in 20%", + "jump between bookmarks", function(unireader,keydef) - is_zoom_out = (keydef.keycode == KEY_PGBCK or keydef.keycode == KEY_LPGBCK) - unireader:setGlobalZoom(unireader.globalzoom_orig - + ( is_zoom_out and -1 or 1)*unireader.globalzoom_orig*0.2) + is_prev_bm = (keydef.keycode == KEY_PGBCK or keydef.keycode == KEY_LPGBCK) + if is_prev_bm then + bm = self:prevBookMarkedPage() + else + bm = self:nextBookMarkedPage() + end + if bm then self:goto(bm.page) end end) self.commands:add(KEY_BACK,nil,"Back", "go backward in jump history",