From 5b5f6856d30efd916e86bf653eda5035fd2a37dd Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Sun, 17 Feb 2013 13:12:51 +0800 Subject: [PATCH 1/3] fix visible_area recalculate for manual crop in reflow mode --- frontend/ui/reader/readercropping.lua | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/frontend/ui/reader/readercropping.lua b/frontend/ui/reader/readercropping.lua index 57d50f9e3..3a674e48c 100644 --- a/frontend/ui/reader/readercropping.lua +++ b/frontend/ui/reader/readercropping.lua @@ -9,7 +9,9 @@ function ReaderCropping:onPageCrop(mode) self.ui:handleEvent(Event:new("CloseConfig")) self.cropping_zoommode = true self.cropping_offset = true - self.ui:handleEvent(Event:new("SetZoomMode", "page")) + -- we are already in page mode, tell ReaderView to recalculate stuff + -- for non-reflow mode + self.view:recalculate() self.cropping_zoommode = false local ubbox = self.document:getPageBBox(self.current_page) --DEBUG("used page bbox", ubbox) From 0d1179a914f765570f73f966fcbe0123b5bfda83 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Mon, 18 Feb 2013 00:01:57 +0800 Subject: [PATCH 2/3] always make sure we switch to page mode in manual cropping --- frontend/ui/reader/readercropping.lua | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/frontend/ui/reader/readercropping.lua b/frontend/ui/reader/readercropping.lua index 3a674e48c..c2d9001f2 100644 --- a/frontend/ui/reader/readercropping.lua +++ b/frontend/ui/reader/readercropping.lua @@ -5,14 +5,17 @@ ReaderCropping = InputContainer:new{} function ReaderCropping:onPageCrop(mode) if mode == "auto" then return end local orig_reflow_mode = self.document.configurable.text_wrap - self.document.configurable.text_wrap = 0 self.ui:handleEvent(Event:new("CloseConfig")) self.cropping_zoommode = true self.cropping_offset = true - -- we are already in page mode, tell ReaderView to recalculate stuff - -- for non-reflow mode - self.view:recalculate() - self.cropping_zoommode = false + if self.document.configurable.text_wrap == 1 then + self.document.configurable.text_wrap = 0 + -- if we are in reflow mode, then we are already in page + -- mode, just force readerview to recalculate visible_area + self.view:recalculate() + else + self.ui:handleEvent(Event:new("SetZoomMode", "page")) + end local ubbox = self.document:getPageBBox(self.current_page) --DEBUG("used page bbox", ubbox) self.crop_bbox = BBoxWidget:new{ From dd96fa7b428e01d7da703b7f6cc333397b04557d Mon Sep 17 00:00:00 2001 From: chrox Date: Mon, 18 Feb 2013 12:19:57 +0800 Subject: [PATCH 3/3] fix visible_area recalculate for manual crop in reflow mode --- frontend/ui/bbox.lua | 8 ++------ frontend/ui/reader/readercropping.lua | 23 ++++++++++++++++++----- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/frontend/ui/bbox.lua b/frontend/ui/bbox.lua index 26e745108..35b67559a 100644 --- a/frontend/ui/bbox.lua +++ b/frontend/ui/bbox.lua @@ -147,14 +147,10 @@ function BBoxWidget:onConfirmCrop() self.ui:handleEvent(Event:new("BBoxUpdate"), self.page_bbox) self.document.bbox[self.pageno] = self.page_bbox self.document.bbox[self:oddEven(self.pageno)] = self.page_bbox - self.ui:handleEvent(Event:new("SetZoomMode", self.orig_zoom_mode)) - self.document.configurable.text_wrap = self.orig_reflow_mode - UIManager.repaint_all = true + self.ui:handleEvent(Event:new("ExitPageCrop")) end function BBoxWidget:onCancelCrop() UIManager:close(self) - self.ui:handleEvent(Event:new("SetZoomMode", self.orig_zoom_mode)) - self.document.configurable.text_wrap = self.orig_reflow_mode - UIManager.repaint_all = true + self.ui:handleEvent(Event:new("ExitPageCrop")) end diff --git a/frontend/ui/reader/readercropping.lua b/frontend/ui/reader/readercropping.lua index c2d9001f2..3a74cdecf 100644 --- a/frontend/ui/reader/readercropping.lua +++ b/frontend/ui/reader/readercropping.lua @@ -4,11 +4,11 @@ ReaderCropping = InputContainer:new{} function ReaderCropping:onPageCrop(mode) if mode == "auto" then return end - local orig_reflow_mode = self.document.configurable.text_wrap + self.orig_reflow_mode = self.document.configurable.text_wrap self.ui:handleEvent(Event:new("CloseConfig")) self.cropping_zoommode = true self.cropping_offset = true - if self.document.configurable.text_wrap == 1 then + if self.orig_reflow_mode == 1 then self.document.configurable.text_wrap = 0 -- if we are in reflow mode, then we are already in page -- mode, just force readerview to recalculate visible_area @@ -16,6 +16,7 @@ function ReaderCropping:onPageCrop(mode) else self.ui:handleEvent(Event:new("SetZoomMode", "page")) end + self.cropping_zoommode = false local ubbox = self.document:getPageBBox(self.current_page) --DEBUG("used page bbox", ubbox) self.crop_bbox = BBoxWidget:new{ @@ -24,13 +25,25 @@ function ReaderCropping:onPageCrop(mode) crop = self, document = self.document, pageno = self.current_page, - orig_zoom_mode = self.orig_zoom_mode, - orig_reflow_mode = orig_reflow_mode, } UIManager:show(self.crop_bbox) return true end +function ReaderCropping:onExitPageCrop() + self.document.configurable.text_wrap = self.orig_reflow_mode + self.view:recalculate() + -- Exiting should have the same look and feel with entering. + if self.orig_reflow_mode == 1 then + self.document.configurable.text_wrap = 1 + self.view:recalculate() + else + self.ui:handleEvent(Event:new("SetZoomMode", self.orig_zoom_mode)) + end + UIManager.repaint_all = true + return true +end + function ReaderCropping:onPageUpdate(page_no) --DEBUG("page updated to", page_no) self.current_page = page_no @@ -43,7 +56,7 @@ end function ReaderCropping:onScreenOffsetUpdate(screen_offset) if self.cropping_offset then - DEBUG("offset updated to", screen_offset) + --DEBUG("offset updated to", screen_offset) self.screen_offset = screen_offset self.cropping_offset = false end