From 1bfad22af0c388c39c6891e89cb2181e5b9b858e Mon Sep 17 00:00:00 2001 From: Robert Date: Tue, 8 Aug 2017 19:06:11 +0200 Subject: [PATCH] Fix: Footer hides text (#3056) This patch should resolve issue #2257 (Footer hides text) Sometimes, depending on an epub style, some text is hidden by the progress bar (the mini one at the bottom). --- frontend/apps/reader/modules/readerfooter.lua | 19 +++++++++++++++++-- .../apps/reader/modules/readertypeset.lua | 15 ++++++++++----- spec/unit/readerfooter_spec.lua | 2 +- spec/unit/readerhighlight_spec.lua | 6 +++--- 4 files changed, 31 insertions(+), 11 deletions(-) diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index bba7ec2f8..b11b9c05f 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -16,7 +16,6 @@ local util = require("util") local _ = require("gettext") local Screen = Device.screen - local MODE = { off = 0, page_progress = 1, @@ -195,13 +194,17 @@ function ReaderFooter:init() self[1] = self.footer_positioner self.mode = G_reader_settings:readSetting("reader_footer_mode") or self.mode + if self.has_no_mode then + self.mode = MODE.off + self.view.footer_visible = false + self:resetLayout() + end if self.settings.all_at_once then self.view.footer_visible = (self.mode ~= MODE.off) self:updateFooterTextGenerator() else self:applyFooterMode() end - if self.settings.auto_refresh_time then self:setupAutoRefreshTime() end @@ -369,6 +372,15 @@ function ReaderFooter:addToMainMenu(menu_items) break end end + -- refresh margins position + if self.has_no_mode then + self.ui:handleEvent(Event:new("SetPageMargins", self.view.document.configurable.page_margins)) + self.genFooterText = footerTextGeneratorMap.empty + self.mode = MODE.off + elseif prev_has_no_mode then + self.ui:handleEvent(Event:new("SetPageMargins", self.view.document.configurable.page_margins)) + G_reader_settings:saveSetting("reader_footer_mode", first_enabled_mode_num) + end if callback then should_update = callback(self) elseif self.settings.all_at_once then @@ -603,6 +615,9 @@ function ReaderFooter:onExitFlippingMode() end function ReaderFooter:onTapFooter(ges) + if self.has_no_mode then + return + end if self.view.flipping_visible then local pos = ges.pos local dimen = self.progress_bar.dimen diff --git a/frontend/apps/reader/modules/readertypeset.lua b/frontend/apps/reader/modules/readertypeset.lua index b51fcc25e..e542e2a48 100644 --- a/frontend/apps/reader/modules/readertypeset.lua +++ b/frontend/apps/reader/modules/readertypeset.lua @@ -1,11 +1,11 @@ -local InputContainer = require("ui/widget/container/inputcontainer") local ConfirmBox = require("ui/widget/confirmbox") -local lfs = require("libs/libkoreader-lfs") +local Event = require("ui/event") +local InputContainer = require("ui/widget/container/inputcontainer") local UIManager = require("ui/uimanager") +local lfs = require("libs/libkoreader-lfs") +local _ = require("gettext") local Screen = require("device").screen -local Event = require("ui/event") local T = require("ffi/util").template -local _ = require("gettext") local ReaderTypeset = InputContainer:new{ css_menu_title = _("Set render style"), @@ -196,7 +196,12 @@ function ReaderTypeset:onSetPageMargins(margins) local left = Screen:scaleBySize(margins[1]) local top = Screen:scaleBySize(margins[2]) local right = Screen:scaleBySize(margins[3]) - local bottom = Screen:scaleBySize(margins[4]) + local bottom + if self.view.footer.has_no_mode then + bottom = Screen:scaleBySize(margins[4]) + else + bottom = Screen:scaleBySize(margins[4] + DMINIBAR_HEIGHT) + end self.ui.document:setPageMargins(left, top, right, bottom) self.ui:handleEvent(Event:new("UpdatePos")) return true diff --git a/spec/unit/readerfooter_spec.lua b/spec/unit/readerfooter_spec.lua index c676ba5ce..c0a72f10b 100644 --- a/spec/unit/readerfooter_spec.lua +++ b/spec/unit/readerfooter_spec.lua @@ -595,7 +595,7 @@ describe("Readerfooter module", function() local footer = readerui.view.footer assert.truthy(footer.has_no_mode) - assert.truthy(readerui.view.footer_visible) + assert.falsy(readerui.view.footer_visible) assert.is.same(21, footer:getHeight()) end) diff --git a/spec/unit/readerhighlight_spec.lua b/spec/unit/readerhighlight_spec.lua index 39ac874fa..a94dc1411 100644 --- a/spec/unit/readerhighlight_spec.lua +++ b/spec/unit/readerhighlight_spec.lua @@ -99,9 +99,9 @@ describe("Readerhighlight module", function() end) it("should response on tap gesture", function() tap_highlight_text(readerui, - Geom:new{ x = 26, y = 374 }, - Geom:new{ x = 484, y = 574 }, - Geom:new{ x = 331, y = 474 }) + Geom:new{ x = 151, y = 120 }, + Geom:new{ x = 290, y = 301 }, + Geom:new{ x = 200, y = 268 }) Screen:shot("screenshots/reader_tap_highlight_text_epub.png") end) end)