Serenity Operating System
at master 36 lines 844 B view raw
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}