diff --git a/frontend/document/koptinterface.lua b/frontend/document/koptinterface.lua index 8200a08b0..b659b70b9 100644 --- a/frontend/document/koptinterface.lua +++ b/frontend/document/koptinterface.lua @@ -134,7 +134,7 @@ KoptOptions = { event = "RedrawCurrentPage", }, { - event = "SetZoomMode", + event = "RestoreZoomMode", args = {"page", nil}, }, } diff --git a/frontend/ui/reader/readerkopt.lua b/frontend/ui/reader/readerkopt.lua new file mode 100644 index 000000000..a2e81f456 --- /dev/null +++ b/frontend/ui/reader/readerkopt.lua @@ -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 diff --git a/frontend/ui/readerui.lua b/frontend/ui/readerui.lua index 52177e84e..c92edae01 100644 --- a/frontend/ui/readerui.lua +++ b/frontend/ui/readerui.lua @@ -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