mirror of
https://github.com/koreader/koreader.git
synced 2025-08-10 00:52:38 +00:00
Revamp flash_ui handling, once more, with feeling ;) (#7262)
* Simplify flash_ui handling (by handling the unhighlight pre-callback, c.f., #7262 for more details). * UIManager: Handle translucent window-level widgets (and those wrapped in a translucent MovableContainer) properly in setDirty directly, making sure what's *underneath* them gets repainted to avoid alpha layering glitches. (This was previously handled via localized hacks). * Update UIManager's documentation, and format it properly for ldoc parsing, making the HTML docs more useful. * ReaderView: Reinitialize the various page areas when opening a new document, to prevent poisoning from the previous document. * Event: Handle nils in an event's arguments. * CheckButton/RadioButton: Switch to simple inversion to handle highlighting * CheckButton: Make the highlight span the inner frame's width, instead of just the text's width, if possible. * AlphaContainer: Fix & simplify, given the UIManager alpha handling. * MovableContainer: When translucent, cache the canvas bb used for composition. * Avoid spurious refreshes in a few widgets using various dummy *TextWidgets in order to first compute a text height. * KeyValuePage: Avoid floats in size computations.
This commit is contained in:
@@ -59,9 +59,9 @@ local ReaderView = OverlapGroup:extend{
|
||||
hinting = true,
|
||||
|
||||
-- visible area within current viewing page
|
||||
visible_area = Geom:new{x = 0, y = 0},
|
||||
visible_area = nil,
|
||||
-- dimen for current viewing page
|
||||
page_area = Geom:new{},
|
||||
page_area = nil,
|
||||
-- dimen for area to dim
|
||||
dim_area = nil,
|
||||
-- has footer
|
||||
@@ -78,8 +78,12 @@ function ReaderView:init()
|
||||
self.view_modules = {}
|
||||
-- fix recalculate from close document pageno
|
||||
self.state.page = nil
|
||||
-- fix inherited dim_area for following opened documents
|
||||
self.dim_area = Geom:new{w = 0, h = 0}
|
||||
|
||||
-- Reset the various areas across documents
|
||||
self.visible_area = Geom:new{x = 0, y = 0, w = 0, h = 0}
|
||||
self.page_area = Geom:new{x = 0, y = 0, w = 0, h = 0}
|
||||
self.dim_area = Geom:new{x = 0, y = 0, w = 0, h = 0}
|
||||
|
||||
self:addWidgets()
|
||||
self.emitHintPageEvent = function()
|
||||
self.ui:handleEvent(Event:new("HintPage", self.hinting))
|
||||
|
||||
Reference in New Issue
Block a user