mirror of
				https://github.com/RGBCube/serenity
				synced 2025-10-31 08:12:43 +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)
 | 
