Serenity Operating System
at master 40 lines 1.0 kB view raw
1/* 2 * Copyright (c) 2021, 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/AbstractScrollableWidget.h> 11 12namespace GUI { 13 14class ScrollableContainerWidget : public GUI::AbstractScrollableWidget { 15 C_OBJECT(ScrollableContainerWidget); 16 17public: 18 virtual ~ScrollableContainerWidget() = default; 19 20 void set_widget(GUI::Widget*); 21 GUI::Widget* widget() { return m_widget; } 22 GUI::Widget const* widget() const { return m_widget; } 23 24protected: 25 virtual void did_scroll() override; 26 virtual void resize_event(GUI::ResizeEvent&) override; 27 virtual void layout_relevant_change_occurred() override; 28 29private: 30 void update_widget_size(); 31 void update_widget_position(); 32 void update_widget_min_size(); 33 virtual ErrorOr<void> load_from_gml_ast(NonnullRefPtr<GUI::GML::Node const> ast, UnregisteredChildHandler) override; 34 35 ScrollableContainerWidget(); 36 37 RefPtr<GUI::Widget> m_widget; 38}; 39 40}