diff --git a/frontend/apps/reader/modules/readerfooter.lua b/frontend/apps/reader/modules/readerfooter.lua index fc82b6649..22a6dfaf5 100644 --- a/frontend/apps/reader/modules/readerfooter.lua +++ b/frontend/apps/reader/modules/readerfooter.lua @@ -267,21 +267,21 @@ function ReaderFooter:onTapFooter(arg, ges) self.mode = 0 end self:applyFooterMode() + local region = Geom:new{ + x = 0, + y = Screen:getHeight() - self.height, + w = Screen:getWidth(), + h = self.height + } + UIManager.update_regions_func = function() + return {region} + end end if self.pageno then self:updateFooterPage() else self:updateFooterPos() end - local region = Geom:new{ - x = 0, - y = Screen:getHeight() - self.height, - w = Screen:getWidth(), - h = self.height - } - UIManager.update_regions_func = function() - return {region} - end UIManager:setDirty(self.view.dialog, "partial") G_reader_settings:saveSetting("reader_footer_mode", self.mode) return true diff --git a/frontend/apps/reader/modules/readerhighlight.lua b/frontend/apps/reader/modules/readerhighlight.lua index ec3482de0..4b9f7954e 100644 --- a/frontend/apps/reader/modules/readerhighlight.lua +++ b/frontend/apps/reader/modules/readerhighlight.lua @@ -120,7 +120,7 @@ function ReaderHighlight:clear() else self.ui.document:clearSelection() end - UIManager:setDirty(self.dialog, "partial") + UIManager:setDirty(self.dialog, "full") if self.hold_pos then self.hold_pos = nil self.selected_text = nil diff --git a/frontend/ui/uimanager.lua b/frontend/ui/uimanager.lua index ce09407ca..0f1b69382 100644 --- a/frontend/ui/uimanager.lua +++ b/frontend/ui/uimanager.lua @@ -125,8 +125,8 @@ function UIManager:init() self.partial_refresh_waveform_mode = WAVEFORM_MODE_AUTO end else - -- See the note in the Kindle code path later, the stock reader might be using AUTO - self.partial_refresh_waveform_mode = NTX_WFM_MODE_GL16 + -- Let the driver handle it on those models (asking for NTX_WFM_MODE_GL16 appears to be a very bad idea, #1146) + self.partial_refresh_waveform_mode = WAVEFORM_MODE_AUTO self.wait_for_every_marker = false end -- Let the driver decide what to do with PARTIAL UI updates... @@ -462,7 +462,7 @@ function UIManager:run() end -- If the device is REAGL-aware, we're specifically asking for a REAGL update, and we're doing a PARTIAL *reader* refresh, apply some trickery to match the stock reader's behavior -- (On most device, REAGL updates are always FULL, but there's no black flash. On devices where this isn't the case [H2O], we're letting the driver do the job by using AUTO). - if not force_partial_refresh and refresh_type == UPDATE_MODE_PARTIAL and (waveform_mode == WAVEFORM_MODE_REAGL or waveform_mode == NTX_WFM_MODE_GLD16) then + if not force_partial_refresh and not force_fast_refresh and refresh_type == UPDATE_MODE_PARTIAL and (waveform_mode == WAVEFORM_MODE_REAGL or waveform_mode == NTX_WFM_MODE_GLD16) then refresh_type = UPDATE_MODE_FULL end -- On the other hand, if we asked for a PARTIAL *UI* refresh, fall back to the default waveform mode, which is tailored per-device to hopefully be more appropriate in this instance than the one we use in the reader. diff --git a/frontend/ui/widget/scrolltextwidget.lua b/frontend/ui/widget/scrolltextwidget.lua index 990dbf967..707ad1120 100644 --- a/frontend/ui/widget/scrolltextwidget.lua +++ b/frontend/ui/widget/scrolltextwidget.lua @@ -77,6 +77,9 @@ function ScrollTextWidget:onScrollText(arg, ges) self.text_widget:scrollUp() self:updateScrollBar(self.text_widget) end + UIManager.update_regions_func = function() + return {self.dimen} + end UIManager:setDirty(self.dialog, "partial") end