1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 13:17:35 +00:00

LibGUI: Remove parent parameter to GUI::Widget constructor

This commit is contained in:
Andreas Kling 2020-02-23 12:07:13 +01:00
parent 4ce28c32d1
commit c5d913970a
114 changed files with 207 additions and 313 deletions

View file

@ -31,14 +31,8 @@
namespace GUI {
AbstractButton::AbstractButton(Widget* parent)
: AbstractButton({}, parent)
{
}
AbstractButton::AbstractButton(const StringView& text, Widget* parent)
: Widget(parent)
, m_text(text)
AbstractButton::AbstractButton(const StringView& text)
: m_text(text)
{
m_auto_repeat_timer = add<Core::Timer>();
m_auto_repeat_timer->on_timeout = [this] {

View file

@ -60,8 +60,7 @@ public:
void set_auto_repeat_interval(int interval) { m_auto_repeat_interval = interval; }
protected:
explicit AbstractButton(Widget* parent = nullptr);
AbstractButton(const StringView&, Widget* parent = nullptr);
explicit AbstractButton(const StringView& = {});
virtual void mousedown_event(MouseEvent&) override;
virtual void mousemove_event(MouseEvent&) override;

View file

@ -39,8 +39,7 @@ namespace GUI {
static const int minimum_column_width = 2;
AbstractTableView::AbstractTableView(Widget* parent)
: AbstractView(parent)
AbstractTableView::AbstractTableView()
{
set_should_hide_unnecessary_scrollbars(true);
}

View file

@ -72,7 +72,7 @@ public:
protected:
virtual ~AbstractTableView() override;
explicit AbstractTableView(Widget* parent = nullptr);
AbstractTableView();
virtual void did_update_model() override;
virtual void mouseup_event(MouseEvent&) override;

View file

@ -37,9 +37,8 @@
namespace GUI {
AbstractView::AbstractView(Widget* parent)
: ScrollableWidget(parent)
, m_selection(*this)
AbstractView::AbstractView()
: m_selection(*this)
{
}

View file

@ -73,7 +73,7 @@ public:
NonnullRefPtr<Gfx::Font> font_for_index(const ModelIndex&) const;
protected:
explicit AbstractView(Widget* parent = nullptr);
AbstractView();
virtual ~AbstractView() override;
virtual void mousedown_event(MouseEvent&) override;

View file

@ -36,13 +36,8 @@
namespace GUI {
Button::Button(Widget* parent)
: AbstractButton(parent)
{
}
Button::Button(const StringView& text, Widget* parent)
: AbstractButton(text, parent)
Button::Button(const StringView& text)
: AbstractButton(text)
{
}

View file

@ -62,8 +62,7 @@ public:
void set_focusable(bool b) { m_focusable = b; }
protected:
Button(const StringView& text, Widget* parent = nullptr);
explicit Button(Widget* parent = nullptr);
explicit Button(const StringView& text = {});
virtual void paint_event(PaintEvent&) override;
private:

View file

@ -52,13 +52,8 @@ static const int s_checked_bitmap_height = 9;
static const int s_box_width = 13;
static const int s_box_height = 13;
CheckBox::CheckBox(Widget* parent)
: AbstractButton(parent)
{
}
CheckBox::CheckBox(const StringView& text, Widget* parent)
: AbstractButton(text, parent)
CheckBox::CheckBox(const StringView& text)
: AbstractButton(text)
{
}

View file

@ -38,8 +38,7 @@ public:
virtual void click() override;
private:
CheckBox(const StringView&, Widget* parent = nullptr);
explicit CheckBox(Widget* parent = nullptr);
explicit CheckBox(const StringView& = {});
// These don't make sense for a check box, so hide them.
using AbstractButton::auto_repeat_interval;

View file

@ -47,8 +47,7 @@ static const char* s_arrow_bitmap_data = {
static const int s_arrow_bitmap_width = 9;
static const int s_arrow_bitmap_height = 9;
ColumnsView::ColumnsView(Widget* parent)
: AbstractView(parent)
ColumnsView::ColumnsView()
{
set_fill_with_background_color(true);
set_background_role(ColorRole::Base);

View file

@ -40,8 +40,8 @@ public:
virtual ModelIndex index_at_event_position(const Gfx::Point&) const override;
private:
ColumnsView(Widget* parent = nullptr);
virtual ~ColumnsView();
ColumnsView();
virtual ~ColumnsView() override;
void push_column(ModelIndex& parent_index);
void update_column_sizes();

View file

@ -35,8 +35,7 @@
namespace GUI {
ComboBox::ComboBox(Widget* parent)
: Widget(parent)
ComboBox::ComboBox()
{
m_editor = add<TextBox>();
m_editor->on_change = [this] {
@ -57,11 +56,11 @@ ComboBox::ComboBox(Widget* parent)
open();
};
m_list_window = Window::construct(this);
m_list_window = add<Window>();
// FIXME: This is obviously not a tooltip window, but it's the closest thing to what we want atm.
m_list_window->set_window_type(WindowType::Tooltip);
m_list_view = ListView::construct(nullptr);
m_list_view = ListView::construct();
m_list_view->horizontal_scrollbar().set_visible(false);
m_list_window->set_main_widget(m_list_view);

View file

@ -56,7 +56,7 @@ public:
Function<void()> on_return_pressed;
protected:
explicit ComboBox(Widget* parent = nullptr);
ComboBox();
virtual void resize_event(ResizeEvent&) override;
private:

View file

@ -31,8 +31,7 @@
namespace GUI {
Frame::Frame(Widget* parent)
: Widget(parent)
Frame::Frame()
{
set_frame_thickness(2);
set_frame_shape(Gfx::FrameShape::Container);

View file

@ -49,7 +49,7 @@ public:
Gfx::Rect frame_inner_rect() const { return frame_inner_rect_for_size(size()); }
protected:
explicit Frame(Widget* parent = nullptr);
Frame();
void paint_event(PaintEvent&) override;
private:

View file

@ -32,14 +32,8 @@
namespace GUI {
GroupBox::GroupBox(Widget* parent)
: GroupBox({}, parent)
{
}
GroupBox::GroupBox(const StringView& title, Widget* parent)
: Widget(parent)
, m_title(title)
GroupBox::GroupBox(const StringView& title)
: m_title(title)
{
}

View file

@ -39,8 +39,7 @@ public:
void set_title(const StringView&);
protected:
explicit GroupBox(Widget* parent = nullptr);
GroupBox(const StringView& title, Widget* parent = nullptr);
explicit GroupBox(const StringView& title = {});
virtual void paint_event(PaintEvent&) override;

View file

@ -37,8 +37,7 @@
namespace GUI {
ItemView::ItemView(Widget* parent)
: AbstractView(parent)
ItemView::ItemView()
{
set_background_role(ColorRole::Base);
set_foreground_role(ColorRole::BaseText);

View file

@ -48,7 +48,7 @@ public:
virtual ModelIndex index_at_event_position(const Gfx::Point&) const override;
private:
explicit ItemView(Widget* parent = nullptr);
ItemView();
virtual void did_update_model() override;
virtual void paint_event(PaintEvent&) override;

View file

@ -32,14 +32,8 @@
namespace GUI {
Label::Label(Widget* parent)
: Label({}, parent)
{
}
Label::Label(const StringView& text, Widget* parent)
: Frame(parent)
, m_text(text)
Label::Label(const StringView& text)
: m_text(text)
{
set_frame_thickness(0);
set_frame_shadow(Gfx::FrameShadow::Plain);

View file

@ -52,8 +52,7 @@ public:
void size_to_fit();
protected:
explicit Label(Widget* parent = nullptr);
Label(const StringView& text, Widget* parent = nullptr);
explicit Label(const StringView& text = {});
virtual void paint_event(PaintEvent&) override;

View file

@ -28,8 +28,7 @@
namespace GUI {
LazyWidget::LazyWidget(Widget* parent)
: Widget(parent)
LazyWidget::LazyWidget()
{
}

View file

@ -38,7 +38,7 @@ public:
Function<void(LazyWidget&)> on_first_show;
protected:
explicit LazyWidget(Widget* parent = nullptr);
LazyWidget();
private:
virtual void show_event(ShowEvent&) override;

View file

@ -33,8 +33,7 @@
namespace GUI {
ListView::ListView(Widget* parent)
: AbstractView(parent)
ListView::ListView()
{
set_background_role(ColorRole::Base);
set_foreground_role(ColorRole::BaseText);

View file

@ -33,7 +33,6 @@ namespace GUI {
class ListView : public AbstractView {
C_OBJECT(ListView)
public:
explicit ListView(Widget* parent = nullptr);
virtual ~ListView() override;
int item_height() const { return 16; }
@ -54,6 +53,8 @@ public:
void set_model_column(int column) { m_model_column = column; }
private:
ListView();
virtual void did_update_model() override;
virtual void paint_event(PaintEvent&) override;
virtual void doubleclick_event(MouseEvent&) override;

View file

@ -77,7 +77,7 @@ public:
virtual RefPtr<Widget> create_widget() override
{
auto textbox = TextBox::construct(nullptr);
auto textbox = TextBox::construct();
textbox->on_return_pressed = [this] {
commit();
};

View file

@ -32,8 +32,7 @@
namespace GUI {
ProgressBar::ProgressBar(Widget* parent)
: Frame(parent)
ProgressBar::ProgressBar()
{
}

View file

@ -56,7 +56,7 @@ public:
void set_format(Format format) { m_format = format; }
protected:
explicit ProgressBar(Widget* parent = nullptr);
ProgressBar();
virtual void paint_event(PaintEvent&) override;

View file

@ -33,13 +33,8 @@
namespace GUI {
RadioButton::RadioButton(Widget* parent)
: RadioButton({}, parent)
{
}
RadioButton::RadioButton(const StringView& text, Widget* parent)
: AbstractButton(text, parent)
RadioButton::RadioButton(const StringView& text)
: AbstractButton(text)
{
}

View file

@ -38,8 +38,7 @@ public:
virtual void click() override;
protected:
explicit RadioButton(Widget* parent = nullptr);
explicit RadioButton(const StringView& text, Widget* parent = nullptr);
explicit RadioButton(const StringView& text = {});
virtual void paint_event(PaintEvent&) override;
private:

View file

@ -75,8 +75,7 @@ static Gfx::CharacterBitmap* s_resize_corner_highlights_bitmap;
static const int s_resize_corner_bitmap_width = 16;
static const int s_resize_corner_bitmap_height = 16;
ResizeCorner::ResizeCorner(Widget* parent)
: Widget(parent)
ResizeCorner::ResizeCorner()
{
set_background_role(ColorRole::Button);
set_size_policy(SizePolicy::Fixed, SizePolicy::Fixed);

View file

@ -34,7 +34,7 @@ public:
virtual ~ResizeCorner() override;
protected:
explicit ResizeCorner(Widget* parent = nullptr);
ResizeCorner();
virtual void paint_event(PaintEvent&) override;
virtual void mousedown_event(MouseEvent&) override;

View file

@ -86,14 +86,8 @@ static Gfx::CharacterBitmap* s_down_arrow_bitmap;
static Gfx::CharacterBitmap* s_left_arrow_bitmap;
static Gfx::CharacterBitmap* s_right_arrow_bitmap;
ScrollBar::ScrollBar(Widget* parent)
: ScrollBar(Orientation::Vertical, parent)
{
}
ScrollBar::ScrollBar(Orientation orientation, Widget* parent)
: Widget(parent)
, m_orientation(orientation)
ScrollBar::ScrollBar(Orientation orientation)
: m_orientation(orientation)
{
m_automatic_scrolling_timer = add<Core::Timer>();
if (!s_up_arrow_bitmap)

View file

@ -65,8 +65,7 @@ public:
};
private:
explicit ScrollBar(Widget* parent = nullptr);
explicit ScrollBar(Orientation, Widget* parent = nullptr);
explicit ScrollBar(Gfx::Orientation = Gfx::Orientation::Vertical);
virtual void paint_event(PaintEvent&) override;
virtual void mousedown_event(MouseEvent&) override;

View file

@ -29,17 +29,16 @@
namespace GUI {
ScrollableWidget::ScrollableWidget(Widget* parent)
: Frame(parent)
ScrollableWidget::ScrollableWidget()
{
m_vertical_scrollbar = ScrollBar::construct(Orientation::Vertical, this);
m_vertical_scrollbar = add<ScrollBar>(Orientation::Vertical);
m_vertical_scrollbar->set_step(4);
m_vertical_scrollbar->on_change = [this](int) {
did_scroll();
update();
};
m_horizontal_scrollbar = ScrollBar::construct(Orientation::Horizontal, this);
m_horizontal_scrollbar = add<ScrollBar>(Orientation::Horizontal);
m_horizontal_scrollbar->set_step(4);
m_horizontal_scrollbar->set_big_step(30);
m_horizontal_scrollbar->on_change = [this](int) {
@ -47,7 +46,7 @@ ScrollableWidget::ScrollableWidget(Widget* parent)
update();
};
m_corner_widget = Widget::construct(this);
m_corner_widget = add<Widget>();
m_corner_widget->set_fill_with_background_color(true);
}

View file

@ -71,7 +71,7 @@ public:
Gfx::Point to_widget_position(const Gfx::Point& content_position) const;
protected:
explicit ScrollableWidget(Widget* parent = nullptr);
ScrollableWidget();
virtual void custom_layout() override;
virtual void resize_event(ResizeEvent&) override;
virtual void mousewheel_event(MouseEvent&) override;

View file

@ -33,14 +33,8 @@
namespace GUI {
Slider::Slider(Widget* parent)
: Slider(Orientation::Horizontal, parent)
{
}
Slider::Slider(Orientation orientation, Widget* parent)
: Widget(parent)
, m_orientation(orientation)
Slider::Slider(Orientation orientation)
: m_orientation(orientation)
{
}

View file

@ -74,8 +74,7 @@ public:
Function<void(int)> on_value_changed;
protected:
explicit Slider(Widget* = nullptr);
explicit Slider(Orientation, Widget* = nullptr);
explicit Slider(Orientation = Orientation::Vertical);
virtual void paint_event(PaintEvent&) override;
virtual void mousedown_event(MouseEvent&) override;
@ -106,8 +105,8 @@ public:
virtual ~VerticalSlider() override {}
private:
explicit VerticalSlider(Widget* parent = nullptr)
: Slider(Orientation::Vertical, parent)
VerticalSlider()
: Slider(Orientation::Vertical)
{
}
};
@ -118,8 +117,8 @@ public:
virtual ~HorizontalSlider() override {}
private:
explicit HorizontalSlider(Widget* parent = nullptr)
: Slider(Orientation::Horizontal, parent)
HorizontalSlider()
: Slider(Orientation::Horizontal)
{
}
};

View file

@ -30,8 +30,7 @@
namespace GUI {
SpinBox::SpinBox(Widget* parent)
: Widget(parent)
SpinBox::SpinBox()
{
m_editor = add<TextBox>();
m_editor->set_text("0");

View file

@ -47,7 +47,7 @@ public:
Function<void(int value)> on_change;
protected:
explicit SpinBox(Widget* parent = nullptr);
SpinBox();
virtual void resize_event(ResizeEvent&) override;

View file

@ -32,9 +32,8 @@
namespace GUI {
Splitter::Splitter(Orientation orientation, Widget* parent)
: Frame(parent)
, m_orientation(orientation)
Splitter::Splitter(Orientation orientation)
: m_orientation(orientation)
{
set_background_role(ColorRole::Button);
set_layout(make<BoxLayout>(orientation));

View file

@ -36,7 +36,7 @@ public:
virtual ~Splitter() override;
protected:
Splitter(Gfx::Orientation, Widget* parent = nullptr);
explicit Splitter(Gfx::Orientation);
virtual void paint_event(PaintEvent&) override;
virtual void resize_event(ResizeEvent&) override;
@ -68,8 +68,8 @@ public:
virtual ~VerticalSplitter() override {}
private:
explicit VerticalSplitter(Widget* parent = nullptr)
: Splitter(Gfx::Orientation::Vertical, parent)
VerticalSplitter()
: Splitter(Gfx::Orientation::Vertical)
{
}
};
@ -80,8 +80,8 @@ public:
virtual ~HorizontalSplitter() override {}
private:
explicit HorizontalSplitter(Widget* parent = nullptr)
: Splitter(Gfx::Orientation::Horizontal, parent)
HorizontalSplitter()
: Splitter(Gfx::Orientation::Horizontal)
{
}
};

View file

@ -29,8 +29,7 @@
namespace GUI {
StackWidget::StackWidget(Widget* parent)
: Widget(parent)
StackWidget::StackWidget()
{
}

View file

@ -42,7 +42,7 @@ public:
Function<void(Widget*)> on_active_widget_change;
protected:
explicit StackWidget(Widget* parent = nullptr);
StackWidget();
virtual void child_event(Core::ChildEvent&) override;
virtual void resize_event(ResizeEvent&) override;

View file

@ -34,13 +34,7 @@
namespace GUI {
StatusBar::StatusBar(Widget* parent)
: StatusBar(1, parent)
{
}
StatusBar::StatusBar(int label_count, Widget* parent)
: Widget(parent)
StatusBar::StatusBar(int label_count)
{
set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
set_preferred_size(0, 20);
@ -54,7 +48,7 @@ StatusBar::StatusBar(int label_count, Widget* parent)
for (auto i = 0; i < label_count; i++)
m_labels.append(create_label());
m_corner = ResizeCorner::construct(this);
m_corner = add<ResizeCorner>();
}
StatusBar::~StatusBar()
@ -63,7 +57,7 @@ StatusBar::~StatusBar()
NonnullRefPtr<Label> StatusBar::create_label()
{
auto label = Label::construct(this);
auto label = add<Label>();
label->set_frame_shadow(Gfx::FrameShadow::Sunken);
label->set_frame_shape(Gfx::FrameShape::Panel);
label->set_frame_thickness(1);

View file

@ -41,8 +41,7 @@ public:
void set_text(int index, const StringView&);
protected:
explicit StatusBar(Widget* parent = nullptr);
explicit StatusBar(int label_count, Widget* parent = nullptr);
explicit StatusBar(int label_count = 1);
virtual void paint_event(PaintEvent&) override;
private:

View file

@ -33,8 +33,7 @@
namespace GUI {
TabWidget::TabWidget(Widget* parent)
: Widget(parent)
TabWidget::TabWidget()
{
}

View file

@ -38,7 +38,6 @@ public:
Bottom,
};
explicit TabWidget(Widget* parent = nullptr);
virtual ~TabWidget() override;
TabPosition tab_position() const { return m_tab_position; }
@ -56,6 +55,8 @@ public:
void add_widget(const StringView&, Widget*);
protected:
TabWidget();
virtual void paint_event(PaintEvent&) override;
virtual void child_event(Core::ChildEvent&) override;
virtual void resize_event(ResizeEvent&) override;

View file

@ -38,8 +38,7 @@
namespace GUI {
TableView::TableView(Widget* parent)
: AbstractTableView(parent)
TableView::TableView()
{
set_background_role(ColorRole::Base);
set_foreground_role(ColorRole::BaseText);

View file

@ -36,7 +36,7 @@ public:
virtual ~TableView() override;
protected:
explicit TableView(Widget* parent = nullptr);
TableView();
virtual void paint_event(PaintEvent&) override;
};

View file

@ -28,8 +28,8 @@
namespace GUI {
TextBox::TextBox(Widget* parent)
: TextEditor(TextEditor::SingleLine, parent)
TextBox::TextBox()
: TextEditor(TextEditor::SingleLine)
{
}

View file

@ -33,7 +33,7 @@ namespace GUI {
class TextBox : public TextEditor {
C_OBJECT(TextBox)
public:
explicit TextBox(Widget* parent = nullptr);
TextBox();
virtual ~TextBox() override;
};

View file

@ -49,14 +49,8 @@
namespace GUI {
TextEditor::TextEditor(Widget* parent)
: TextEditor(Type::MultiLine, parent)
{
}
TextEditor::TextEditor(Type type, Widget* parent)
: ScrollableWidget(parent)
, m_type(type)
TextEditor::TextEditor(Type type)
: m_type(type)
{
set_background_role(ColorRole::Base);
set_foreground_role(ColorRole::BaseText);

View file

@ -130,8 +130,7 @@ public:
void set_syntax_highlighter(OwnPtr<SyntaxHighlighter>);
protected:
explicit TextEditor(Widget* parent = nullptr);
explicit TextEditor(Type, Widget* parent = nullptr);
explicit TextEditor(Type = Type::MultiLine);
virtual void did_change_font() override;
virtual void paint_event(PaintEvent&) override;

View file

@ -34,14 +34,8 @@
namespace GUI {
ToolBar::ToolBar(Widget* parent)
: ToolBar(Orientation::Horizontal, 16, parent)
{
}
ToolBar::ToolBar(Orientation orientation, int button_size, Widget* parent)
: Widget(parent)
, m_button_size(button_size)
ToolBar::ToolBar(Orientation orientation, int button_size)
: m_button_size(button_size)
{
if (orientation == Orientation::Horizontal) {
set_size_policy(SizePolicy::Fill, SizePolicy::Fixed);
@ -87,8 +81,7 @@ void ToolBar::add_action(Action& action)
class SeparatorWidget final : public Widget {
C_OBJECT(SeparatorWidget)
public:
SeparatorWidget(Widget* parent)
: Widget(parent)
SeparatorWidget()
{
set_size_policy(SizePolicy::Fixed, SizePolicy::Fixed);
set_preferred_size(8, 22);
@ -109,7 +102,7 @@ void ToolBar::add_separator()
{
auto item = make<Item>();
item->type = Item::Type::Separator;
new SeparatorWidget(this);
add<SeparatorWidget>();
m_items.append(move(item));
}

View file

@ -43,8 +43,7 @@ public:
void set_has_frame(bool has_frame) { m_has_frame = has_frame; }
protected:
explicit ToolBar(Widget* parent = nullptr);
explicit ToolBar(Orientation, int button_size, Widget* parent = nullptr);
explicit ToolBar(Gfx::Orientation = Gfx::Orientation::Horizontal, int button_size = 16);
virtual void paint_event(PaintEvent&) override;

View file

@ -51,8 +51,7 @@ TreeView::MetadataForIndex& TreeView::ensure_metadata_for_index(const ModelIndex
return new_metadata_ref;
}
TreeView::TreeView(Widget* parent)
: AbstractTableView(parent)
TreeView::TreeView()
{
set_background_role(ColorRole::Base);
set_foreground_role(ColorRole::BaseText);

View file

@ -41,7 +41,7 @@ public:
virtual int item_count() const override;
protected:
explicit TreeView(Widget* parent = nullptr);
TreeView();
virtual void paint_event(PaintEvent&) override;
virtual void doubleclick_event(MouseEvent&) override;

View file

@ -70,7 +70,7 @@ static HashMap<String, WidgetClassRegistration*>& widget_classes()
return *map;
}
WidgetClassRegistration::WidgetClassRegistration(const String& class_name, Function<NonnullRefPtr<Widget>(Widget*)> factory)
WidgetClassRegistration::WidgetClassRegistration(const String& class_name, Function<NonnullRefPtr<Widget>()> factory)
: m_class_name(class_name)
, m_factory(move(factory))
{
@ -93,8 +93,8 @@ const WidgetClassRegistration* WidgetClassRegistration::find(const String& class
return widget_classes().get(class_name).value_or(nullptr);
}
Widget::Widget(Widget* parent)
: Core::Object(parent, true)
Widget::Widget()
: Core::Object(nullptr, true)
, m_background_role(Gfx::ColorRole::Window)
, m_foreground_role(Gfx::ColorRole::WindowText)
, m_font(Gfx::Font::default_font())

View file

@ -37,7 +37,7 @@
#define REGISTER_GWIDGET(class_name) \
extern WidgetClassRegistration registration_##class_name; \
WidgetClassRegistration registration_##class_name(#class_name, [](Widget* parent) { return class_name::construct(parent); });
WidgetClassRegistration registration_##class_name(#class_name, []() { return class_name::construct(); });
template<>
inline bool Core::is<GUI::Widget>(const Core::Object& object)
@ -75,18 +75,18 @@ class WidgetClassRegistration {
AK_MAKE_NONCOPYABLE(WidgetClassRegistration)
AK_MAKE_NONMOVABLE(WidgetClassRegistration)
public:
WidgetClassRegistration(const String& class_name, Function<NonnullRefPtr<Widget>(Widget*)> factory);
WidgetClassRegistration(const String& class_name, Function<NonnullRefPtr<Widget>()> factory);
~WidgetClassRegistration();
String class_name() const { return m_class_name; }
NonnullRefPtr<Widget> construct(Widget* parent) const { return m_factory(parent); }
NonnullRefPtr<Widget> construct() const { return m_factory(); }
static void for_each(Function<void(const WidgetClassRegistration&)>);
static const WidgetClassRegistration* find(const String& class_name);
private:
String m_class_name;
Function<NonnullRefPtr<Widget>(Widget*)> m_factory;
Function<NonnullRefPtr<Widget>()> m_factory;
};
class Widget : public Core::Object {
@ -259,7 +259,7 @@ public:
void set_palette(const Gfx::Palette&);
protected:
explicit Widget(Widget* parent = nullptr);
Widget();
virtual void custom_layout() {}
virtual void did_change_font() {}