瀏覽代碼

LibGUI: Correctly suggest layout classes

Previously when the GMLAutocompleteProvider was invoked just after the
'layout:' tag it would suggest nothing. This is because Layouts do not
inherit from Widget, so the two checks would always eliminate every
suggestion from the list. This patch makes it always suggest any
(registered) object that inherits from GUI::Layout.

This should make layouts more discoverable and easier to quickly use.
thislooksfun 3 年之前
父節點
當前提交
f048d16be5
共有 1 個文件被更改,包括 3 次插入3 次删除
  1. 3 3
      Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp

+ 3 - 3
Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp

@@ -105,6 +105,7 @@ void GMLAutocompleteProvider::provide_completions(Function<void(Vector<Entry>)>
     }
 
     auto& widget_class = *Core::ObjectClassRegistration::find("GUI::Widget");
+    auto& layout_class = *Core::ObjectClassRegistration::find("GUI::Layout");
 
     Vector<GUI::AutocompleteProvider::Entry> class_entries, identifier_entries;
     switch (state) {
@@ -190,10 +191,9 @@ void GMLAutocompleteProvider::provide_completions(Function<void(Vector<Entry>)>
             break;
         if (identifier_string == "layout") {
             Core::ObjectClassRegistration::for_each([&](const Core::ObjectClassRegistration& registration) {
-                if (!registration.is_derived_from(widget_class))
+                if (&registration == &layout_class || !registration.is_derived_from(layout_class))
                     return;
-                if (registration.class_name().contains("Layout"))
-                    class_entries.empend(String::formatted("@{}", registration.class_name()), 0u);
+                class_entries.empend(String::formatted("@{}", registration.class_name()), 0u);
             });
         }
         break;