From bfff863861f98341ba34eabc049dba9ffa6c827e Mon Sep 17 00:00:00 2001 From: chrox Date: Wed, 22 Jan 2014 17:16:37 +0800 Subject: [PATCH] fix cannot highlight hyphenated words in crereader --- frontend/document/credocument.lua | 9 +++++++-- frontend/ui/reader/readerhighlight.lua | 16 +++++++++++----- 2 files changed, 18 insertions(+), 7 deletions(-) diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index 5acd6a61d..ad106eab3 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -135,9 +135,10 @@ end function CreDocument:getWordFromPosition(pos) local word_box = self._document:getWordFromPosition(pos.x, pos.y) + local text_range = self._document:getTextFromPositions(pos.x, pos.y, pos.x, pos.y) if word_box.word then return { - word = word_box.word, + word = text_range.text == "" and word_box.word or text_range.text, page = self._document:getCurrentPage(), sbox = Geom:new{ x = word_box.x0, y = word_box.y0, @@ -156,7 +157,7 @@ function CreDocument:getTextFromPositions(pos0, pos1) text = text_range.text, pos0 = text_range.pos0, pos1 = text_range.pos1, - sboxes = line_boxes, -- boxes on screen + --sboxes = line_boxes, -- boxes on screen } end @@ -273,6 +274,10 @@ function CreDocument:setFontFace(new_font_face) end end +function CreDocument:clearSelection() + self._document:clearSelection() +end + function CreDocument:getFontSize() return self._document:getFontSize() end diff --git a/frontend/ui/reader/readerhighlight.lua b/frontend/ui/reader/readerhighlight.lua index af930664e..2962af039 100644 --- a/frontend/ui/reader/readerhighlight.lua +++ b/frontend/ui/reader/readerhighlight.lua @@ -159,9 +159,13 @@ end function ReaderHighlight:onTap(arg, ges) if self.hold_pos then - self.view.highlight.temp[self.hold_pos.page] = nil - UIManager:setDirty(self.dialog, "partial") + if self.ui.document.info.has_pages then + self.view.highlight.temp[self.hold_pos.page] = nil + else + self.ui.document:clearSelection() + end self.hold_pos = nil + UIManager:setDirty(self.dialog, "partial") return true end if self.ui.document.info.has_pages then @@ -260,9 +264,11 @@ function ReaderHighlight:onHold(arg, ges) self.selected_word = self.ui.document:getWordFromPosition(self.hold_pos) DEBUG("selected word:", self.selected_word) if self.selected_word then - local boxes = {} - table.insert(boxes, self.selected_word.sbox) - self.view.highlight.temp[self.hold_pos.page] = boxes + if self.ui.document.info.has_pages then + local boxes = {} + table.insert(boxes, self.selected_word.sbox) + self.view.highlight.temp[self.hold_pos.page] = boxes + end UIManager:setDirty(self.dialog, "partial") end return true