GML/Define-widget(5) - SerenityOS man pages

#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:

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

@Web::OutOfProcessWebView {
    name: "web_view"
    min_width: 340
    min_height: 160
    visible: false
}
// OutOfProcessWebView.cpp

REGISTER_WIDGET(Web, OutOfProcessWebView)

...

OutOfProcessWebView::OutOfProcessWebView()
{
    set_should_hide_unnecessary_scrollbars(true);
    set_focus_policy(GUI::FocusPolicy::StrongFocus);

    create_client();
}

...

#See also