Serenity Operating System
1/*
2 * Copyright (c) 2018-2020, Andreas Kling <kling@serenityos.org>
3 * Copyright (c) 2022, the SerenityOS developers.
4 *
5 * SPDX-License-Identifier: BSD-2-Clause
6 */
7
8#pragma once
9
10#include <LibGUI/Widget.h>
11
12namespace GUI {
13
14class StackWidget : public Widget {
15 C_OBJECT(StackWidget)
16public:
17 virtual ~StackWidget() override = default;
18
19 Widget* active_widget() { return m_active_widget.ptr(); }
20 Widget const* active_widget() const { return m_active_widget.ptr(); }
21 void set_active_widget(Widget*);
22
23 Function<void(Widget*)> on_active_widget_change;
24
25 virtual Optional<UISize> calculated_min_size() const override;
26
27protected:
28 StackWidget() = default;
29 virtual void child_event(Core::ChildEvent&) override;
30 virtual void resize_event(ResizeEvent&) override;
31
32private:
33 RefPtr<Widget> m_active_widget;
34};
35
36}