From 4f46f9fa7a27440e8981e1b2aed6953b9cbe0356 Mon Sep 17 00:00:00 2001 From: HW Date: Sun, 4 Mar 2012 21:39:34 +0100 Subject: [PATCH] proper exit when pressing HOME, store settings etc --- pdfreader.lua | 28 +++++++++++++++++----------- reader.lua | 2 +- 2 files changed, 18 insertions(+), 12 deletions(-) diff --git a/pdfreader.lua b/pdfreader.lua index 9988f593d..b40d6218e 100644 --- a/pdfreader.lua +++ b/pdfreader.lua @@ -380,6 +380,7 @@ end -- wait for input and handle it function PDFReader:inputloop() + local keep_running = true while 1 do local ev = input.waitForEvent() ev.code = adjustKeyEvents(ev) @@ -412,16 +413,7 @@ function PDFReader:inputloop() elseif ev.code == KEY_BACK then if Keys.altmode then -- altmode, exit pdfreader - self:clearcache() - if self.doc ~= nil then - self.doc:close() - end - if self.settings ~= nil then - self.settings:savesetting("last_page", self.pageno) - self.settings:savesetting("gamma", self.globalgamma) - self.settings:close() - end - return + break else -- not altmode, back to last jump if #self.jump_stack ~= 0 then @@ -465,7 +457,9 @@ function PDFReader:inputloop() elseif ev.code == KEY_K then self:setrotate( self.globalrotate - 10 ) elseif ev.code == KEY_HOME then - os.exit(0); + -- signal quit + keep_running = false + break end if self.globalzoommode == self.ZOOM_BY_VALUE then @@ -555,6 +549,18 @@ function PDFReader:inputloop() print("E: T="..ev.type.." V="..ev.value.." C="..ev.code.." DUR="..dur) end end + + self:clearcache() + if self.doc ~= nil then + self.doc:close() + end + if self.settings ~= nil then + self.settings:savesetting("last_page", self.pageno) + self.settings:savesetting("gamma", self.globalgamma) + self.settings:close() + end + + return keep_running end diff --git a/reader.lua b/reader.lua index c25ea7ec0..1863eae8c 100755 --- a/reader.lua +++ b/reader.lua @@ -100,7 +100,7 @@ if lfs.attributes(ARGV[optind], "mode") == "directory" then if pdffile ~= nil then if PDFReader:open(pdffile,"") then -- TODO: query for password PDFReader:goto(tonumber(PDFReader.settings:readsetting("last_page") or 1)) - PDFReader:inputloop() + running = PDFReader:inputloop() end else running = false