From 3c580233d1bb8fd1c39ac127fe5c11e2e9e53bc3 Mon Sep 17 00:00:00 2001 From: Andreas Kling Date: Mon, 14 Sep 2020 09:56:00 +0200 Subject: [PATCH] LibGUI: Improve widget registration mechanism a bit Allow registering widgets from namespaces other than GUI. :^) Also add a few widgets. --- Libraries/LibGUI/Widget.cpp | 29 +++++++++++++++++++---------- Libraries/LibGUI/Widget.h | 6 +++--- 2 files changed, 22 insertions(+), 13 deletions(-) diff --git a/Libraries/LibGUI/Widget.cpp b/Libraries/LibGUI/Widget.cpp index c79990c9ca..a467fcf3b4 100644 --- a/Libraries/LibGUI/Widget.cpp +++ b/Libraries/LibGUI/Widget.cpp @@ -40,7 +40,11 @@ #include #include #include +#include +#include #include +#include +#include #include #include #include @@ -51,16 +55,21 @@ namespace GUI { -REGISTER_WIDGET(Button) -REGISTER_WIDGET(CheckBox) -REGISTER_WIDGET(GroupBox) -REGISTER_WIDGET(Label) -REGISTER_WIDGET(RadioButton) -REGISTER_WIDGET(ScrollBar) -REGISTER_WIDGET(Slider) -REGISTER_WIDGET(SpinBox) -REGISTER_WIDGET(TextBox) -REGISTER_WIDGET(Widget) +REGISTER_WIDGET(GUI, Button) +REGISTER_WIDGET(GUI, CheckBox) +REGISTER_WIDGET(GUI, GroupBox) +REGISTER_WIDGET(GUI, HorizontalSplitter) +REGISTER_WIDGET(GUI, Label) +REGISTER_WIDGET(GUI, RadioButton) +REGISTER_WIDGET(GUI, ScrollBar) +REGISTER_WIDGET(GUI, Slider) +REGISTER_WIDGET(GUI, SpinBox) +REGISTER_WIDGET(GUI, StatusBar) +REGISTER_WIDGET(GUI, TextBox) +REGISTER_WIDGET(GUI, TextEditor) +REGISTER_WIDGET(GUI, ToolBar) +REGISTER_WIDGET(GUI, ToolBarContainer) +REGISTER_WIDGET(GUI, Widget) static HashMap& widget_classes() { diff --git a/Libraries/LibGUI/Widget.h b/Libraries/LibGUI/Widget.h index 72c9d83731..1ee830c305 100644 --- a/Libraries/LibGUI/Widget.h +++ b/Libraries/LibGUI/Widget.h @@ -38,9 +38,9 @@ #include #include -#define REGISTER_WIDGET(class_name) \ - extern WidgetClassRegistration registration_##class_name; \ - WidgetClassRegistration registration_##class_name(#class_name, []() { return class_name::construct(); }); +#define REGISTER_WIDGET(namespace_, class_name) \ + extern GUI::WidgetClassRegistration registration_##class_name; \ + GUI::WidgetClassRegistration registration_##class_name(#namespace_ "::" #class_name, []() { return namespace_::class_name::construct(); }); namespace GUI {