mirror of
https://github.com/RGBCube/serenity
synced 2025-07-06 04:17:35 +00:00
LibGUI: Notify widgets when their enabled state changes.
This is done by dispatching a (synchronous) "EnabledChange" event that can be picked up in change_event(). Use this event to kick widgets out of their "being pressed"-type modes if the user is interacting with them while the state is programmatically changed.
This commit is contained in:
parent
e478a2fb0a
commit
d12857fc36
9 changed files with 44 additions and 0 deletions
|
@ -124,3 +124,16 @@ void GAbstractButton::paint_text(GPainter& painter, const Rect& rect, const Font
|
|||
if (is_focused())
|
||||
painter.draw_rect(clipped_rect.inflated(6, 4), Color(140, 140, 140));
|
||||
}
|
||||
|
||||
void GAbstractButton::change_event(GEvent& event)
|
||||
{
|
||||
if (event.type() == GEvent::Type::EnabledChange) {
|
||||
if (!is_enabled()) {
|
||||
bool was_being_pressed = m_being_pressed;
|
||||
m_being_pressed = false;
|
||||
if (was_being_pressed)
|
||||
update();
|
||||
}
|
||||
}
|
||||
GWidget::change_event(event);
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue