mirror of
https://github.com/RGBCube/serenity
synced 2025-05-15 17:54:57 +00:00
50 lines
1.1 KiB
Markdown
50 lines
1.1 KiB
Markdown
## Name
|
|
|
|
Library or Application Defined Widgets
|
|
|
|
## Description
|
|
|
|
Some applications and libraries find it useful to define their own widgets.
|
|
|
|
This is done using `REGISTER_WIDGET()`, just as in **LibGUI**. The syntax of the macro is as follows:
|
|
|
|
```cpp
|
|
REGISTER_WIDGET(namespace, class_name)
|
|
```
|
|
|
|
This means that every registered widget has to be placed in a namespace. For applications that usually do not need their own namespace, a common approach is to use the application name as the namespace for these registered widgets.
|
|
|
|
Note that registered widgets need to be constructible without any arguments.
|
|
|
|
## Examples
|
|
|
|
```gml
|
|
@Web::OutOfProcessWebView {
|
|
name: "web_view"
|
|
min_width: 340
|
|
min_height: 160
|
|
visible: false
|
|
}
|
|
```
|
|
|
|
```cpp
|
|
// OutOfProcessWebView.cpp
|
|
|
|
REGISTER_WIDGET(Web, OutOfProcessWebView)
|
|
|
|
...
|
|
|
|
OutOfProcessWebView::OutOfProcessWebView()
|
|
{
|
|
set_should_hide_unnecessary_scrollbars(true);
|
|
set_focus_policy(GUI::FocusPolicy::StrongFocus);
|
|
|
|
create_client();
|
|
}
|
|
|
|
...
|
|
```
|
|
|
|
## See also
|
|
|
|
- [GML Define property(5)](help://man/5/GML/Define-property)
|