diff options
author | Andrew Kaster <andrewdkaster@gmail.com> | 2021-01-02 16:30:13 -0700 |
---|---|---|
committer | Andreas Kling <kling@serenityos.org> | 2021-01-03 10:31:42 +0100 |
commit | 39908fd56989024b2684a5e8e1052e8f93bdbc09 (patch) | |
tree | 74afe183763564f936ba56bc5b2d34b4d31d7014 | |
parent | 0bf44ac9d87714c0d6a7fea2a229e4b10bd791f7 (diff) | |
download | serenity-39908fd56989024b2684a5e8e1052e8f93bdbc09.zip |
LibGUI: Move widget registrations to the corresponding cpp file
This gets a lot of unecessary includes out of Widget.cpp. Doing this
didn't work before, but improvements in the C library and using dynamic
libraries have likely un-broken it :^).
Also, move the registration global object to an anonymous namespace. No
reason it has to be an extern symbol.
27 files changed, 59 insertions, 56 deletions
diff --git a/Libraries/LibGUI/BreadcrumbBar.cpp b/Libraries/LibGUI/BreadcrumbBar.cpp index 690db38466..3670ad59ce 100644 --- a/Libraries/LibGUI/BreadcrumbBar.cpp +++ b/Libraries/LibGUI/BreadcrumbBar.cpp @@ -29,6 +29,8 @@ #include <LibGUI/Button.h> #include <LibGfx/Font.h> +REGISTER_WIDGET(GUI, BreadcrumbBar) + namespace GUI { // FIXME: Move this somewhere else diff --git a/Libraries/LibGUI/Button.cpp b/Libraries/LibGUI/Button.cpp index d1f20f4b80..94f7db79ae 100644 --- a/Libraries/LibGUI/Button.cpp +++ b/Libraries/LibGUI/Button.cpp @@ -34,6 +34,8 @@ #include <LibGfx/Palette.h> #include <LibGfx/StylePainter.h> +REGISTER_WIDGET(GUI, Button) + namespace GUI { Button::Button(String text) diff --git a/Libraries/LibGUI/CheckBox.cpp b/Libraries/LibGUI/CheckBox.cpp index c2329d5abe..b2f4a10456 100644 --- a/Libraries/LibGUI/CheckBox.cpp +++ b/Libraries/LibGUI/CheckBox.cpp @@ -31,6 +31,8 @@ #include <LibGfx/Palette.h> #include <LibGfx/StylePainter.h> +REGISTER_WIDGET(GUI, CheckBox) + namespace GUI { static const int s_box_width = 13; diff --git a/Libraries/LibGUI/ColorInput.cpp b/Libraries/LibGUI/ColorInput.cpp index 94a5e22203..f37522a1d9 100644 --- a/Libraries/LibGUI/ColorInput.cpp +++ b/Libraries/LibGUI/ColorInput.cpp @@ -30,6 +30,8 @@ #include <LibGUI/Painter.h> #include <LibGfx/Palette.h> +REGISTER_WIDGET(GUI, ColorInput) + namespace GUI { ColorInput::ColorInput() diff --git a/Libraries/LibGUI/ComboBox.cpp b/Libraries/LibGUI/ComboBox.cpp index 538f132820..73721a4357 100644 --- a/Libraries/LibGUI/ComboBox.cpp +++ b/Libraries/LibGUI/ComboBox.cpp @@ -33,6 +33,8 @@ #include <LibGUI/TextBox.h> #include <LibGUI/Window.h> +REGISTER_WIDGET(GUI, ComboBox) + namespace GUI { class ComboBoxEditor final : public TextEditor { diff --git a/Libraries/LibGUI/Frame.cpp b/Libraries/LibGUI/Frame.cpp index de0fba6270..47a82b6e14 100644 --- a/Libraries/LibGUI/Frame.cpp +++ b/Libraries/LibGUI/Frame.cpp @@ -29,6 +29,8 @@ #include <LibGfx/Palette.h> #include <LibGfx/StylePainter.h> +REGISTER_WIDGET(GUI, Frame) + namespace GUI { Frame::Frame() diff --git a/Libraries/LibGUI/GroupBox.cpp b/Libraries/LibGUI/GroupBox.cpp index 7b10ada0d2..4a60905452 100644 --- a/Libraries/LibGUI/GroupBox.cpp +++ b/Libraries/LibGUI/GroupBox.cpp @@ -30,6 +30,8 @@ #include <LibGfx/Palette.h> #include <LibGfx/StylePainter.h> +REGISTER_WIDGET(GUI, GroupBox) + namespace GUI { GroupBox::GroupBox(const StringView& title) diff --git a/Libraries/LibGUI/ImageWidget.cpp b/Libraries/LibGUI/ImageWidget.cpp index 69b251f4a0..ca3a736ad6 100644 --- a/Libraries/LibGUI/ImageWidget.cpp +++ b/Libraries/LibGUI/ImageWidget.cpp @@ -30,6 +30,8 @@ #include <LibGfx/Bitmap.h> #include <LibGfx/ImageDecoder.h> +REGISTER_WIDGET(GUI, ImageWidget) + namespace GUI { ImageWidget::ImageWidget(const StringView&) diff --git a/Libraries/LibGUI/Label.cpp b/Libraries/LibGUI/Label.cpp index 605072c36a..de4508f421 100644 --- a/Libraries/LibGUI/Label.cpp +++ b/Libraries/LibGUI/Label.cpp @@ -30,6 +30,8 @@ #include <LibGfx/Font.h> #include <LibGfx/Palette.h> +REGISTER_WIDGET(GUI, Label) + namespace GUI { Label::Label(String text) diff --git a/Libraries/LibGUI/LinkLabel.cpp b/Libraries/LibGUI/LinkLabel.cpp index a3045f2e70..db6dd09188 100644 --- a/Libraries/LibGUI/LinkLabel.cpp +++ b/Libraries/LibGUI/LinkLabel.cpp @@ -31,6 +31,8 @@ #include <LibGfx/Font.h> #include <LibGfx/Palette.h> +REGISTER_WIDGET(GUI, LinkLabel) + namespace GUI { LinkLabel::LinkLabel(String text) diff --git a/Libraries/LibGUI/ListView.cpp b/Libraries/LibGUI/ListView.cpp index 0c76f85acb..4b304f6751 100644 --- a/Libraries/LibGUI/ListView.cpp +++ b/Libraries/LibGUI/ListView.cpp @@ -30,6 +30,8 @@ #include <LibGUI/ScrollBar.h> #include <LibGfx/Palette.h> +REGISTER_WIDGET(GUI, ListView) + namespace GUI { ListView::ListView() diff --git a/Libraries/LibGUI/OpacitySlider.cpp b/Libraries/LibGUI/OpacitySlider.cpp index 3bfb7e0938..2766226203 100644 --- a/Libraries/LibGUI/OpacitySlider.cpp +++ b/Libraries/LibGUI/OpacitySlider.cpp @@ -29,6 +29,8 @@ #include <LibGfx/Palette.h> #include <LibGfx/StylePainter.h> +REGISTER_WIDGET(GUI, OpacitySlider) + namespace GUI { OpacitySlider::OpacitySlider(Gfx::Orientation orientation) diff --git a/Libraries/LibGUI/ProgressBar.cpp b/Libraries/LibGUI/ProgressBar.cpp index 227016c00c..0e6cd4acbe 100644 --- a/Libraries/LibGUI/ProgressBar.cpp +++ b/Libraries/LibGUI/ProgressBar.cpp @@ -30,6 +30,8 @@ #include <LibGUI/ProgressBar.h> #include <LibGfx/Palette.h> +REGISTER_WIDGET(GUI, ProgressBar) + namespace GUI { ProgressBar::ProgressBar() diff --git a/Libraries/LibGUI/RadioButton.cpp b/Libraries/LibGUI/RadioButton.cpp index bafefffa07..0ee428fe3c 100644 --- a/Libraries/LibGUI/RadioButton.cpp +++ b/Libraries/LibGUI/RadioButton.cpp @@ -31,6 +31,8 @@ #include <LibGfx/Palette.h> #include <LibGfx/StylePainter.h> +REGISTER_WIDGET(GUI, RadioButton) + namespace GUI { RadioButton::RadioButton(String text) diff --git a/Libraries/LibGUI/ScrollBar.cpp b/Libraries/LibGUI/ScrollBar.cpp index 93da0c3d62..ad8bf27e48 100644 --- a/Libraries/LibGUI/ScrollBar.cpp +++ b/Libraries/LibGUI/ScrollBar.cpp @@ -31,6 +31,8 @@ #include <LibGfx/Palette.h> #include <LibGfx/StylePainter.h> +REGISTER_WIDGET(GUI, ScrollBar) + namespace GUI { static const char* s_up_arrow_bitmap_data = { diff --git a/Libraries/LibGUI/Slider.cpp b/Libraries/LibGUI/Slider.cpp index 6989f251c2..9aac47ee11 100644 --- a/Libraries/LibGUI/Slider.cpp +++ b/Libraries/LibGUI/Slider.cpp @@ -31,6 +31,10 @@ #include <LibGfx/Palette.h> #include <LibGfx/StylePainter.h> +REGISTER_WIDGET(GUI, HorizontalSlider) +REGISTER_WIDGET(GUI, Slider) +REGISTER_WIDGET(GUI, VerticalSlider) + namespace GUI { Slider::Slider(Orientation orientation) diff --git a/Libraries/LibGUI/SpinBox.cpp b/Libraries/LibGUI/SpinBox.cpp index 9c608df3ad..943497c918 100644 --- a/Libraries/LibGUI/SpinBox.cpp +++ b/Libraries/LibGUI/SpinBox.cpp @@ -28,6 +28,8 @@ #include <LibGUI/SpinBox.h> #include <LibGUI/TextBox.h> +REGISTER_WIDGET(GUI, SpinBox) + namespace GUI { SpinBox::SpinBox() diff --git a/Libraries/LibGUI/Splitter.cpp b/Libraries/LibGUI/Splitter.cpp index 7c81cff3b0..246ade1ac4 100644 --- a/Libraries/LibGUI/Splitter.cpp +++ b/Libraries/LibGUI/Splitter.cpp @@ -30,6 +30,9 @@ #include <LibGUI/Window.h> #include <LibGfx/Palette.h> +REGISTER_WIDGET(GUI, HorizontalSplitter) +REGISTER_WIDGET(GUI, VerticalSplitter) + namespace GUI { Splitter::Splitter(Orientation orientation) diff --git a/Libraries/LibGUI/StatusBar.cpp b/Libraries/LibGUI/StatusBar.cpp index 61484b0fc3..c32b45cf0b 100644 --- a/Libraries/LibGUI/StatusBar.cpp +++ b/Libraries/LibGUI/StatusBar.cpp @@ -33,6 +33,8 @@ #include <LibGfx/Palette.h> #include <LibGfx/StylePainter.h> +REGISTER_WIDGET(GUI, StatusBar) + namespace GUI { StatusBar::StatusBar(int label_count) diff --git a/Libraries/LibGUI/TabWidget.cpp b/Libraries/LibGUI/TabWidget.cpp index 83aa025b5e..4bafddd049 100644 --- a/Libraries/LibGUI/TabWidget.cpp +++ b/Libraries/LibGUI/TabWidget.cpp @@ -35,6 +35,8 @@ #include <LibGfx/Palette.h> #include <LibGfx/StylePainter.h> +REGISTER_WIDGET(GUI, TabWidget) + namespace GUI { TabWidget::TabWidget() diff --git a/Libraries/LibGUI/TextBox.cpp b/Libraries/LibGUI/TextBox.cpp index dd9743bb42..046f8d13a7 100644 --- a/Libraries/LibGUI/TextBox.cpp +++ b/Libraries/LibGUI/TextBox.cpp @@ -26,6 +26,8 @@ #include <LibGUI/TextBox.h> +REGISTER_WIDGET(GUI, TextBox) + namespace GUI { TextBox::TextBox() diff --git a/Libraries/LibGUI/TextEditor.cpp b/Libraries/LibGUI/TextEditor.cpp index 0e44875c7c..fe662612b4 100644 --- a/Libraries/LibGUI/TextEditor.cpp +++ b/Libraries/LibGUI/TextEditor.cpp @@ -51,6 +51,8 @@ //#define DEBUG_TEXTEDITOR +REGISTER_WIDGET(GUI, TextEditor) + namespace GUI { TextEditor::TextEditor(Type type) diff --git a/Libraries/LibGUI/ToolBar.cpp b/Libraries/LibGUI/ToolBar.cpp index 71994eabdc..c2486ee884 100644 --- a/Libraries/LibGUI/ToolBar.cpp +++ b/Libraries/LibGUI/ToolBar.cpp @@ -35,6 +35,8 @@ #include <LibGUI/ToolBar.h> #include <LibGfx/Palette.h> +REGISTER_WIDGET(GUI, ToolBar) + namespace GUI { ToolBar::ToolBar(Orientation orientation, int button_size) diff --git a/Libraries/LibGUI/ToolBarContainer.cpp b/Libraries/LibGUI/ToolBarContainer.cpp index 717bfb34d4..753691e51b 100644 --- a/Libraries/LibGUI/ToolBarContainer.cpp +++ b/Libraries/LibGUI/ToolBarContainer.cpp @@ -30,6 +30,8 @@ #include <LibGfx/Palette.h> #include <LibGfx/StylePainter.h> +REGISTER_WIDGET(GUI, ToolBarContainer) + namespace GUI { void ToolBarContainer::child_event(Core::ChildEvent& event) diff --git a/Libraries/LibGUI/TreeView.cpp b/Libraries/LibGUI/TreeView.cpp index 80f2bef9f6..0ba87e5617 100644 --- a/Libraries/LibGUI/TreeView.cpp +++ b/Libraries/LibGUI/TreeView.cpp @@ -34,6 +34,8 @@ //#define DEBUG_ITEM_RECTS +REGISTER_WIDGET(GUI, TreeView) + namespace GUI { struct TreeView::MetadataForIndex { diff --git a/Libraries/LibGUI/Widget.cpp b/Libraries/LibGUI/Widget.cpp index d7fbd00dd4..5a60d1c87e 100644 --- a/Libraries/LibGUI/Widget.cpp +++ b/Libraries/LibGUI/Widget.cpp @@ -29,34 +29,11 @@ #include <LibGUI/Action.h> #include <LibGUI/Application.h> #include <LibGUI/BoxLayout.h> -#include <LibGUI/BreadcrumbBar.h> -#include <LibGUI/Button.h> -#include <LibGUI/CheckBox.h> -#include <LibGUI/ColorInput.h> -#include <LibGUI/ComboBox.h> #include <LibGUI/Event.h> #include <LibGUI/GMLParser.h> -#include <LibGUI/GroupBox.h> -#include <LibGUI/ImageWidget.h> -#include <LibGUI/Label.h> #include <LibGUI/Layout.h> -#include <LibGUI/LinkLabel.h> -#include <LibGUI/ListView.h> #include <LibGUI/Menu.h> -#include <LibGUI/OpacitySlider.h> #include <LibGUI/Painter.h> -#include <LibGUI/ProgressBar.h> -#include <LibGUI/RadioButton.h> -#include <LibGUI/ScrollBar.h> -#include <LibGUI/Slider.h> -#include <LibGUI/SpinBox.h> -#include <LibGUI/Splitter.h> -#include <LibGUI/StatusBar.h> -#include <LibGUI/TabWidget.h> -#include <LibGUI/TextBox.h> -#include <LibGUI/ToolBar.h> -#include <LibGUI/ToolBarContainer.h> -#include <LibGUI/TreeView.h> #include <LibGUI/Widget.h> #include <LibGUI/Window.h> #include <LibGUI/WindowServerConnection.h> @@ -66,38 +43,10 @@ #include <LibGfx/Palette.h> #include <unistd.h> -namespace GUI { - -REGISTER_WIDGET(GUI, BreadcrumbBar) -REGISTER_WIDGET(GUI, Button) -REGISTER_WIDGET(GUI, CheckBox) -REGISTER_WIDGET(GUI, ColorInput) -REGISTER_WIDGET(GUI, ComboBox) -REGISTER_WIDGET(GUI, Frame) -REGISTER_WIDGET(GUI, GroupBox) -REGISTER_WIDGET(GUI, HorizontalSlider) -REGISTER_WIDGET(GUI, HorizontalSplitter) -REGISTER_WIDGET(GUI, ImageWidget) -REGISTER_WIDGET(GUI, Label) -REGISTER_WIDGET(GUI, LinkLabel) -REGISTER_WIDGET(GUI, ListView) -REGISTER_WIDGET(GUI, OpacitySlider) -REGISTER_WIDGET(GUI, ProgressBar) -REGISTER_WIDGET(GUI, RadioButton) -REGISTER_WIDGET(GUI, ScrollBar) -REGISTER_WIDGET(GUI, Slider) -REGISTER_WIDGET(GUI, SpinBox) -REGISTER_WIDGET(GUI, StatusBar) -REGISTER_WIDGET(GUI, TabWidget) -REGISTER_WIDGET(GUI, TextBox) -REGISTER_WIDGET(GUI, TextEditor) -REGISTER_WIDGET(GUI, ToolBar) -REGISTER_WIDGET(GUI, ToolBarContainer) -REGISTER_WIDGET(GUI, TreeView) -REGISTER_WIDGET(GUI, VerticalSlider) -REGISTER_WIDGET(GUI, VerticalSplitter) REGISTER_WIDGET(GUI, Widget) +namespace GUI { + static HashMap<String, WidgetClassRegistration*>& widget_classes() { static HashMap<String, WidgetClassRegistration*>* map; diff --git a/Libraries/LibGUI/Widget.h b/Libraries/LibGUI/Widget.h index cde61ef20e..786eb8c371 100644 --- a/Libraries/LibGUI/Widget.h +++ b/Libraries/LibGUI/Widget.h @@ -39,9 +39,10 @@ #include <LibGfx/Rect.h> #include <LibGfx/StandardCursor.h> -#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(); }); +#define REGISTER_WIDGET(namespace_, class_name) \ + namespace { \ + GUI::WidgetClassRegistration registration_##class_name(#namespace_ "::" #class_name, []() { return namespace_::class_name::construct(); }); \ + } namespace GUI { |