From b63ddb8736ab65a222a87a8d8c5b5ee13a4815f9 Mon Sep 17 00:00:00 2001 From: Qingping Hou Date: Tue, 16 Feb 2016 22:36:40 -0800 Subject: [PATCH] fix: kill in fly hinting event on document close --- frontend/apps/reader/modules/readerview.lua | 17 +++++++++++------ frontend/apps/reader/readerui.lua | 4 +++- frontend/ui/uimanager.lua | 4 ++++ 3 files changed, 18 insertions(+), 7 deletions(-) diff --git a/frontend/apps/reader/modules/readerview.lua b/frontend/apps/reader/modules/readerview.lua index 3a4e6b634..ad70102b9 100644 --- a/frontend/apps/reader/modules/readerview.lua +++ b/frontend/apps/reader/modules/readerview.lua @@ -77,6 +77,9 @@ function ReaderView:init() self.ui:registerPostInitCallback(function() self.ui.menu:registerToMainMenu(self.footer) end) + self.emitHintPageEvent = function() + self.ui:handleEvent(Event:new("HintPage", self.hinting)) + end end function ReaderView:resetDimArea() @@ -273,9 +276,7 @@ function ReaderView:drawScrollPages(bb, x, y) pos.y = pos.y + self.page_gap.height end end - UIManager:scheduleIn(0, function() - self.ui:handleEvent(Event:new("HintPage", self.hinting)) - end) + UIManager:nextTick(self.emitHintPageEvent) end function ReaderView:getCurrentPageList() @@ -347,9 +348,7 @@ function ReaderView:drawSinglePage(bb, x, y) self.state.rotation, self.state.gamma, self.render_mode) - UIManager:scheduleIn(0, function() - self.ui:handleEvent(Event:new("HintPage", self.hinting)) - end) + UIManager:nextTick(self.emitHintPageEvent) end function ReaderView:getSinglePagePosition(pos) @@ -748,4 +747,10 @@ function ReaderView:genOverlapStyleMenu() } end +function ReaderView:onCloseDocument() + self.hinting = false + -- stop any in fly HintPage event + UIManager:unschedule(self.emitHintPageEvent) +end + return ReaderView diff --git a/frontend/apps/reader/readerui.lua b/frontend/apps/reader/readerui.lua index 96018a20e..0cde63bb2 100644 --- a/frontend/apps/reader/readerui.lua +++ b/frontend/apps/reader/readerui.lua @@ -488,7 +488,9 @@ function ReaderUI:onClose() UIManager:close(self.dialog, "full") -- serialize last used items for later launch Cache:serialize() - running_instance = nil + if running_instance == self then + running_instance = nil + end return true end diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index 10cb3ffdd..1ba8d8e49 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -198,6 +198,10 @@ function UIManager:scheduleIn(seconds, action) self:schedule(when, action) end +function UIManager:nextTick(action) + return self:scheduleIn(0, action) +end + -- unschedule an execution task -- in order to unschedule anonymous functions, store a reference -- for example: