From 1a2be0453dfe18fa63adf63a142518ebe2f58cc2 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sat, 21 Apr 2012 09:46:30 +0800 Subject: [PATCH] fix bug in highlight engine handle left end of line in highlight delete. --- unireader.lua | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) diff --git a/unireader.lua b/unireader.lua index 97be99b79..72fad45e5 100644 --- a/unireader.lua +++ b/unireader.lua @@ -638,6 +638,10 @@ function UniReader:startHighLightMode() end end elseif ev.code == KEY_DEL then + -- handle left end of line as special case + if w.cur == 0 then + w.cur = 1 + end if self.highlight[self.pageno] then for k, text_item in ipairs(self.highlight[self.pageno]) do for _, line_item in ipairs(text_item) do @@ -646,14 +650,15 @@ function UniReader:startHighLightMode() and t[l.cur][w.cur].x0 >= line_item.x0 and t[l.cur][w.cur].x1 <= line_item.x1 then self.highlight[self.pageno][k] = nil + -- remove page entry if empty + if #self.highlight[self.pageno] == 0 then + self.highlight[self.pageno] = nil + end + return end end -- for line_item end -- for text_item end -- if not highlight table - if #self.highlight[self.pageno] == 0 then - self.highlight[self.pageno] = nil - end - return elseif ev.code == KEY_FW_PRESS then l.new, w.new = l.cur, w.cur l.start, w.start = l.cur, w.cur