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:
NiLuJe
2021-02-20 18:22:48 +01:00
committed by GitHub
parent 1cdc6c61e0
commit fe10d0bce5
25 changed files with 707 additions and 685 deletions

View File

@@ -103,6 +103,9 @@ local TextBoxWidget = InputContainer:new{
-- (set to 0 to disable any tab handling and display a tofu glyph)
_xtext = nil, -- for internal use
_alt_color_for_rtl = nil, -- (for debugging) draw LTR glyphs in black, RTL glyphs in gray
-- for internal use
for_measurement_only = nil, -- When the widget is a one-off used to compute text height
}
function TextBoxWidget:init()
@@ -1523,6 +1526,9 @@ function TextBoxWidget:moveCursorToCharPos(charpos)
if x > self.width - self.cursor_line.dimen.w then
x = self.width - self.cursor_line.dimen.w
end
if self.for_measurement_only then
return -- we're a dummy widget used for computing text height, don't render/refresh anything
end
if not self._bb then
return -- no bb yet to render the cursor too
end