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:
Andreas Kling 2021-10-23 17:53:11 +02:00
commit 24651f854c
Notes: sideshowbarker 2024-07-18 02:00:53 +09:00
4 changed files with 33 additions and 0 deletions

View file

@ -1204,4 +1204,14 @@ void Window::set_modified(bool modified)
WindowServerConnection::the().async_set_window_modified(m_window_id, modified);
}
void Window::flush_pending_paints_immediately()
{
if (!m_window_id)
return;
if (m_pending_paint_event_rects.is_empty())
return;
MultiPaintEvent paint_event(move(m_pending_paint_event_rects), size());
handle_multi_paint_event(paint_event);
}
}