1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-16 20:15:07 +00:00
serenity/Base/usr/share/man/man5/GML-Define-widget.md
kleines Filmröllchen 426a09ca4a Base: Extend and improve the GML documentation
This is a bundle of changes to the "new" GML documentation that I just
noticed two hours ago.
- Fix a bunch of typos, wording and style
- Rework layout object documentation (they're not widgets!)
- Document most of the common properties
- Finish (as for now) GML syntax documentation
- Extend GML usage explanation
- Add symlink "GML" so that man gml works
- Add a categorized GML page list to the introduction man page
- Cross-link much more

Much of the editing of existing docs is clearing up incorrect or
imprecise statements.

Note that because of massive changes in some places, git won't recognize
renames as such.
2022-03-31 22:13:49 -07:00

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)