mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 20:57:35 +00:00
LibGUI: Add GLazyWidget, a convenience widget for lazily-built UI's
Here's how you can use this to speed up startup time: auto widget = GLazyWidget::construct(); widget->on_first_show = [](auto& self) { self.set_layout(...); ... }; Basically, it allows you to delay building the widget subtree until it's shown for the first time.
This commit is contained in:
parent
7e2b9c3c40
commit
183f7c9830
3 changed files with 40 additions and 0 deletions
19
Libraries/LibGUI/GLazyWidget.h
Normal file
19
Libraries/LibGUI/GLazyWidget.h
Normal file
|
@ -0,0 +1,19 @@
|
|||
#pragma once
|
||||
|
||||
#include <LibGUI/GWidget.h>
|
||||
|
||||
class GLazyWidget : public GWidget {
|
||||
C_OBJECT(GLazyWidget)
|
||||
public:
|
||||
virtual ~GLazyWidget() override;
|
||||
|
||||
Function<void(GLazyWidget&)> on_first_show;
|
||||
|
||||
protected:
|
||||
explicit GLazyWidget(GWidget* parent = nullptr);
|
||||
|
||||
private:
|
||||
virtual void show_event(GShowEvent&) override;
|
||||
|
||||
bool m_has_been_shown { false };
|
||||
};
|
Loading…
Add table
Add a link
Reference in a new issue