LibCore+LibGUI: Add is<T>(CObject&) and to<T>(CObject&) helpers.

This commit is contained in:
Andreas Kling 2019-05-27 04:06:01 +02:00
parent 723ba91f74
commit 0c85d3dba9
Notes: sideshowbarker 2024-07-19 13:55:24 +09:00
5 changed files with 53 additions and 30 deletions

View file

@ -33,9 +33,9 @@ void GStackWidget::resize_event(GResizeEvent& event)
void GStackWidget::child_event(CChildEvent& event)
{
if (!event.child() || !event.child()->is_widget())
if (!event.child() || !is<GWidget>(*event.child()))
return GWidget::child_event(event);
auto& child = static_cast<GWidget&>(*event.child());
auto& child = to<GWidget>(*event.child());
if (event.type() == GEvent::ChildAdded) {
if (!m_active_widget)
set_active_widget(&child);
@ -44,12 +44,10 @@ void GStackWidget::child_event(CChildEvent& event)
} else if (event.type() == GEvent::ChildRemoved) {
if (m_active_widget == &child) {
GWidget* new_active_widget = nullptr;
for (auto* new_child : children()) {
if (new_child->is_widget()) {
new_active_widget = static_cast<GWidget*>(new_child);
break;
}
}
for_each_child_widget([&] (auto& new_child) {
new_active_widget = &new_child;
return IterationDecision::Abort;
});
set_active_widget(new_active_widget);
}
}