mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 17:17:44 +00:00
LibGUI: Add Widget::repaint() to force an immediate repaint
In most situations, Widget::update() is preferable, since that allows us to coalesce repaints and avoid redundant work, reducing system load. However, there are some cases where you really want a paint to happen right away, to make sure that the user has a chance to see a short-lived visual state.
This commit is contained in:
parent
da86f4e384
commit
24651f854c
4 changed files with 33 additions and 0 deletions
|
@ -616,6 +616,22 @@ void Widget::update(const Gfx::IntRect& rect)
|
|||
window->update(bound_by_widget.translated(window_relative_rect().location()));
|
||||
}
|
||||
|
||||
void Widget::repaint()
|
||||
{
|
||||
if (rect().is_empty())
|
||||
return;
|
||||
repaint(rect());
|
||||
}
|
||||
|
||||
void Widget::repaint(Gfx::IntRect const& rect)
|
||||
{
|
||||
auto* window = this->window();
|
||||
if (!window)
|
||||
return;
|
||||
update(rect);
|
||||
window->flush_pending_paints_immediately();
|
||||
}
|
||||
|
||||
Gfx::IntRect Widget::window_relative_rect() const
|
||||
{
|
||||
auto rect = relative_rect();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue