From a7fb8811f330e8d4ebb09e8c83ea3ac72887f0a1 Mon Sep 17 00:00:00 2001 From: chrox Date: Tue, 22 Jul 2014 21:54:05 +0800 Subject: [PATCH] add floating punctuation toggler for EPUBs --- .../apps/reader/modules/readertypeset.lua | 19 +++++++++++++++++++ frontend/document/credocument.lua | 1 + koreader-base | 2 +- 3 files changed, 21 insertions(+), 1 deletion(-) diff --git a/frontend/apps/reader/modules/readertypeset.lua b/frontend/apps/reader/modules/readertypeset.lua index 4b7705b5c..2b46dcd8f 100644 --- a/frontend/apps/reader/modules/readertypeset.lua +++ b/frontend/apps/reader/modules/readertypeset.lua @@ -31,11 +31,17 @@ function ReaderTypeset:onReadSettings(config) -- set page margins self:onSetPageMargins(config:readSetting("copt_page_margins") or DCREREADER_CONFIG_MARGIN_SIZES_MEDIUM) + + -- default to enable floating punctuation + self.floating_punctuation = config:readSetting("floating_punctuation") or + G_reader_settings:readSetting("floating_punctuation") or true + self:toggleFloatingPunctuation(self.floating_punctuation and 1 or 0) end function ReaderTypeset:onSaveSettings() self.ui.doc_settings:saveSetting("css", self.css) self.ui.doc_settings:saveSetting("embedded_css", self.embedded_css) + self.ui.doc_settings:saveSetting("floating_punctuation", self.floating_punctuation) end function ReaderTypeset:onToggleEmbeddedStyleSheet(toggle) @@ -106,12 +112,25 @@ function ReaderTypeset:toggleEmbeddedStyleSheet(toggle) self.ui:handleEvent(Event:new("UpdatePos")) end +function ReaderTypeset:toggleFloatingPunctuation(toggle) + self.ui.document:setFloatingPunctuation(toggle) + self.ui:handleEvent(Event:new("UpdatePos")) +end + function ReaderTypeset:addToMainMenu(tab_item_table) -- insert table to main reader menu table.insert(tab_item_table.typeset, { text = self.css_menu_title, sub_item_table = self:genStyleSheetMenu(), }) + table.insert(tab_item_table.typeset, { + text = _("Floating punctuation"), + checked_func = function() return self.floating_punctuation == true end, + callback = function() + self.floating_punctuation = not self.floating_punctuation + self:toggleFloatingPunctuation(self.floating_punctuation and 1 or 0) + end + }) end function ReaderTypeset:onSetPageMargins(margins) diff --git a/frontend/document/credocument.lua b/frontend/document/credocument.lua index 55fd0a909..c434a5d96 100644 --- a/frontend/document/credocument.lua +++ b/frontend/document/credocument.lua @@ -357,6 +357,7 @@ function CreDocument:setPageMargins(left, top, right, bottom) end function CreDocument:setFloatingPunctuation(enabled) + -- FIXME: occasional segmentation fault when toggling floating punctuation DEBUG("CreDocument: set floating punctuation", enabled) self._document:setIntProperty("crengine.style.floating.punctuation.enabled", enabled) end diff --git a/koreader-base b/koreader-base index 43defcb8e..efa6ab08a 160000 --- a/koreader-base +++ b/koreader-base @@ -1 +1 @@ -Subproject commit 43defcb8e00db8f78fed747a697e77983ba33819 +Subproject commit efa6ab08a52857e20e34c0b0f51dfee77d3d8c13