diff options
author | Andreas Kling <awesomekling@gmail.com> | 2019-09-22 00:17:53 +0200 |
---|---|---|
committer | Andreas Kling <awesomekling@gmail.com> | 2019-09-22 00:25:25 +0200 |
commit | bc319d9e8873734bb8e8cea3d762d7fab2ded887 (patch) | |
tree | c8648b92fe32e6c48454a99356f7b3ca59b5e423 /Applications/DisplayProperties/DisplayProperties.cpp | |
parent | 0c72e0c09f085a371b0abdba172325e56b1e6a06 (diff) | |
download | serenity-bc319d9e8873734bb8e8cea3d762d7fab2ded887.zip |
LibCore: Make CObject reference-counted
Okay, I've spent a whole day on this now, and it finally kinda works!
With this patch, CObject and all of its derived classes are reference
counted instead of tree-owned.
The previous, Qt-like model was nice and familiar, but ultimately also
outdated and difficult to reason about.
CObject-derived types should now be stored in RefPtr/NonnullRefPtr and
each class can be constructed using the forwarding construct() helper:
auto widget = GWidget::construct(parent_widget);
Note that construct() simply forwards all arguments to an existing
constructor. It is inserted into each class by the C_OBJECT macro,
see CObject.h to understand how that works.
CObject::delete_later() disappears in this patch, as there is no longer
a single logical owner of a CObject.
Diffstat (limited to 'Applications/DisplayProperties/DisplayProperties.cpp')
-rw-r--r-- | Applications/DisplayProperties/DisplayProperties.cpp | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/Applications/DisplayProperties/DisplayProperties.cpp b/Applications/DisplayProperties/DisplayProperties.cpp index fcac85dce1..92f155b46f 100644 --- a/Applications/DisplayProperties/DisplayProperties.cpp +++ b/Applications/DisplayProperties/DisplayProperties.cpp @@ -97,7 +97,7 @@ void DisplayPropertiesWidget::create_frame() auto background_splitter = GSplitter::construct(Orientation::Vertical, nullptr); tab_widget->add_widget("Wallpaper", background_splitter); - auto background_content = GWidget::construct(background_splitter); + auto background_content = GWidget::construct(background_splitter.ptr()); background_content->set_layout(make<GBoxLayout>(Orientation::Vertical)); background_content->layout()->set_margins({ 4, 4, 4, 4 }); @@ -120,7 +120,7 @@ void DisplayPropertiesWidget::create_frame() auto settings_splitter = GSplitter::construct(Orientation::Vertical, nullptr); tab_widget->add_widget("Settings", settings_splitter); - auto settings_content = GWidget::construct(settings_splitter); + auto settings_content = GWidget::construct(settings_splitter.ptr()); settings_content->set_layout(make<GBoxLayout>(Orientation::Vertical)); settings_content->layout()->set_margins({ 4, 4, 4, 4 }); @@ -135,7 +135,7 @@ void DisplayPropertiesWidget::create_frame() settings_content->layout()->add_spacer(); // Add the apply and cancel buttons - auto bottom_widget = GWidget::construct(m_root_widget); + auto bottom_widget = GWidget::construct(m_root_widget.ptr()); bottom_widget->set_layout(make<GBoxLayout>(Orientation::Horizontal)); bottom_widget->layout()->add_spacer(); bottom_widget->set_size_policy(Orientation::Vertical, SizePolicy::Fixed); |