mirror of
https://github.com/koreader/koreader
synced 2024-10-31 21:20:20 +00:00
fe10d0bce5
* 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.
44 lines
1.1 KiB
Lua
44 lines
1.1 KiB
Lua
--[[--
|
|
Events are messages that are passed through the widget tree.
|
|
|
|
Events need a "name" attribute as minimal data.
|
|
|
|
To see how event propagation works and how to make
|
|
widgets event-aware see the implementation in @{ui.widget.container.widgetcontainer}.
|
|
|
|
A detailed guide to events can be found in @{Events.md|the event programmer's guide}.
|
|
]]
|
|
|
|
--[[--
|
|
@field handler name for the handler method: `"on"..Event.name`
|
|
@field args array of arguments for the event
|
|
@table Event
|
|
]]
|
|
local Event = {}
|
|
|
|
--[[--
|
|
Creates a new event.
|
|
|
|
@string name
|
|
@tparam[opt] ... arguments for the event
|
|
@treturn Event
|
|
|
|
@usage
|
|
local Event = require("ui/event")
|
|
Event:new("GotoPage", 1)
|
|
]]
|
|
function Event:new(name, ...)
|
|
local o = {
|
|
handler = "on"..name,
|
|
-- Minor trickery to handle nils, c.f., http://lua-users.org/wiki/VarargTheSecondClassCitizen
|
|
--- @fixme: Move to table.pack() (which stores the count in the field `n`) here & table.unpack() in @{ui.widget.eventlistener|EventListener} once we build LuaJIT w/ 5.2 compat.
|
|
argc = select('#', ...),
|
|
args = {...}
|
|
}
|
|
setmetatable(o, self)
|
|
self.__index = self
|
|
return o
|
|
end
|
|
|
|
return Event
|