From d73d044f2bdefba1ee7eb16f654c09af4d56627c Mon Sep 17 00:00:00 2001 From: thislooksfun Date: Wed, 27 Oct 2021 19:39:10 -0500 Subject: [PATCH] LibGUI: Suggest classes when typing identifiers We now suggest classes even if the line does not start with an @. After all, we now have fuzzy matching, so why *shouldn't* "color" match @GUI::ColorInput as well as background_color? --- .../Libraries/LibGUI/GMLAutocompleteProvider.cpp | 15 ++++++++++++--- 1 file changed, 12 insertions(+), 3 deletions(-) diff --git a/Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp b/Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp index 6c329e129b..de05c2bb77 100644 --- a/Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp +++ b/Userland/Libraries/LibGUI/GMLAutocompleteProvider.cpp @@ -184,15 +184,24 @@ void GMLAutocompleteProvider::provide_completions(Function)> break; } case InIdentifier: { - if (class_names.is_empty()) - break; if (last_seen_token && last_seen_token->m_end.column != cursor.column() && last_seen_token->m_end.line == cursor.line()) { // After an identifier, but with extra space // TODO: Maybe suggest a colon? break; } - register_class_properties_matching_pattern(make_fuzzy(identifier_string), identifier_string.length()); + auto fuzzy_pattern = make_fuzzy(identifier_string); + if (!class_names.is_empty()) { + register_class_properties_matching_pattern(fuzzy_pattern, identifier_string.length()); + + auto parent_registration = Core::ObjectClassRegistration::find(class_names.last()); + if (parent_registration && parent_registration->is_derived_from(layout_class)) { + // Layouts can't have child classes, so why suggest them? + break; + } + } + + register_widgets_matching_pattern(fuzzy_pattern, identifier_string.length()); break; } case AfterClassName: {