mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Merge pull request #760 from chrox/restore_zoom_mode
restore zoom mode when toggling reflow on/off
This commit is contained in:
@@ -134,7 +134,7 @@ KoptOptions = {
|
||||
event = "RedrawCurrentPage",
|
||||
},
|
||||
{
|
||||
event = "SetZoomMode",
|
||||
event = "RestoreZoomMode",
|
||||
args = {"page", nil},
|
||||
},
|
||||
}
|
||||
|
||||
@@ -131,7 +131,7 @@ function BBoxWidget:onConfirmCrop()
|
||||
self.ui:handleEvent(Event:new("BBoxUpdate"), self.page_bbox)
|
||||
self.document.bbox[self.pageno] = self.page_bbox
|
||||
self.document.bbox[math.oddEven(self.pageno)] = self.page_bbox
|
||||
self.ui:handleEvent(Event:new("ExitPageCrop"))
|
||||
self.ui:handleEvent(Event:new("ExitPageCrop", true))
|
||||
end
|
||||
|
||||
function BBoxWidget:onCancelCrop()
|
||||
|
||||
@@ -6,7 +6,6 @@ function ReaderCropping:onPageCrop(mode)
|
||||
if mode == "auto" then return end
|
||||
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.orig_reflow_mode == 1 then
|
||||
self.document.configurable.text_wrap = 0
|
||||
@@ -14,9 +13,8 @@ function ReaderCropping:onPageCrop(mode)
|
||||
-- mode, just force readerview to recalculate visible_area
|
||||
self.view:recalculate()
|
||||
else
|
||||
self.ui:handleEvent(Event:new("SetZoomMode", "page"))
|
||||
self.ui:handleEvent(Event:new("SetZoomMode", "page", "cropping"))
|
||||
end
|
||||
self.cropping_zoommode = false
|
||||
local ubbox = self.document:getPageBBox(self.current_page)
|
||||
--DEBUG("used page bbox", ubbox)
|
||||
self.crop_bbox = BBoxWidget:new{
|
||||
@@ -30,7 +28,7 @@ function ReaderCropping:onPageCrop(mode)
|
||||
return true
|
||||
end
|
||||
|
||||
function ReaderCropping:onExitPageCrop()
|
||||
function ReaderCropping:onExitPageCrop(confirmed)
|
||||
self.document.configurable.text_wrap = self.orig_reflow_mode
|
||||
self.view:recalculate()
|
||||
-- Exiting should have the same look and feel with entering.
|
||||
@@ -38,7 +36,12 @@ function ReaderCropping:onExitPageCrop()
|
||||
self.document.configurable.text_wrap = 1
|
||||
self.view:recalculate()
|
||||
else
|
||||
self.ui:handleEvent(Event:new("SetZoomMode", self.orig_zoom_mode))
|
||||
if confirmed then
|
||||
-- if original zoom mode is not "content", set zoom mode to "content"
|
||||
self.ui:handleEvent(Event:new("SetZoomMode", self.orig_zoom_mode:find("content") and self.orig_zoom_mode or "content"))
|
||||
else
|
||||
self.ui:handleEvent(Event:new("SetZoomMode", self.orig_zoom_mode))
|
||||
end
|
||||
end
|
||||
UIManager.repaint_all = true
|
||||
return true
|
||||
@@ -62,8 +65,8 @@ function ReaderCropping:onScreenOffsetUpdate(screen_offset)
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderCropping:onSetZoomMode(mode)
|
||||
if not self.cropping_zoommode then
|
||||
function ReaderCropping:onSetZoomMode(mode, orig)
|
||||
if orig ~= "cropping" and mode then
|
||||
--DEBUG("backup zoom mode", mode)
|
||||
self.orig_zoom_mode = mode
|
||||
end
|
||||
|
||||
22
frontend/ui/reader/readerkopt.lua
Normal file
22
frontend/ui/reader/readerkopt.lua
Normal file
@@ -0,0 +1,22 @@
|
||||
|
||||
ReaderKoptinterface = InputContainer:new{}
|
||||
|
||||
function ReaderKoptinterface:onReadSettings(config)
|
||||
self.normal_zoom_mode = config:readSetting("zoom_mode") or "page"
|
||||
if self.document.configurable.text_wrap == 1 then
|
||||
self.ui:handleEvent(Event:new("SetZoomMode", "page", "koptinterface"))
|
||||
else
|
||||
self.ui:handleEvent(Event:new("SetZoomMode", self.normal_zoom_mode, "koptinterface"))
|
||||
end
|
||||
end
|
||||
|
||||
function ReaderKoptinterface:onRestoreZoomMode(zoom_mode)
|
||||
self.ui:handleEvent(Event:new("SetZoomMode", zoom_mode or self.normal_zoom_mode, "koptinterface"))
|
||||
return true
|
||||
end
|
||||
|
||||
function ReaderKoptinterface:onSetZoomMode(zoom_mode, orig)
|
||||
if orig ~= "koptinterface" then
|
||||
self.normal_zoom_mode = zoom_mode
|
||||
end
|
||||
end
|
||||
@@ -12,6 +12,7 @@ require "ui/reader/readertypeset"
|
||||
require "ui/reader/readermenu"
|
||||
require "ui/reader/readerconfig"
|
||||
require "ui/reader/readercropping"
|
||||
require "ui/reader/readerkopt"
|
||||
|
||||
--[[
|
||||
This is an abstraction for a reader interface
|
||||
@@ -158,6 +159,14 @@ function ReaderUI:init()
|
||||
ui = self
|
||||
}
|
||||
table.insert(self, config_dialog)
|
||||
-- koptinterface controller
|
||||
local koptinterface = ReaderKoptinterface:new{
|
||||
dialog = self.dialog,
|
||||
view = self[1],
|
||||
ui = self,
|
||||
document = self.document,
|
||||
}
|
||||
table.insert(self, koptinterface)
|
||||
end
|
||||
--DEBUG(self.doc_settings)
|
||||
-- we only read settings after all the widgets are initialized
|
||||
|
||||
Reference in New Issue
Block a user