1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-05-31 18:18:12 +00:00

LibGUI: Refactor out common code

This is prepping for a future commit.
This commit is contained in:
thislooksfun 2021-10-28 02:04:33 -05:00 committed by Andreas Kling
parent 713b6badb0
commit aea9ba3b42
2 changed files with 23 additions and 11 deletions

View file

@ -804,11 +804,7 @@ void TextEditor::keydown_event(KeyEvent& event)
}
ArmedScopeGuard update_autocomplete { [&] {
if (m_autocomplete_box && m_autocomplete_box->is_visible()) {
m_autocomplete_provider->provide_completions([&](auto completions) {
m_autocomplete_box->update_suggestions(move(completions));
});
}
try_update_autocomplete();
} };
if (is_multi_line() && !event.shift() && !event.alt() && event.ctrl() && event.key() == KeyCode::Key_Space) {
@ -1458,13 +1454,27 @@ void TextEditor::undefer_reflow()
void TextEditor::try_show_autocomplete(UserRequestedAutocomplete user_requested_autocomplete)
{
if (m_autocomplete_provider) {
m_autocomplete_provider->provide_completions([&](auto completions) {
auto has_completions = !completions.is_empty();
m_autocomplete_box->update_suggestions(move(completions));
force_update_autocomplete([&, user_requested_autocomplete = move(user_requested_autocomplete)] {
if (user_requested_autocomplete == Yes || m_autocomplete_box->has_suggestions()) {
auto position = content_rect_for_position(cursor()).translated(0, -visible_content_rect().y()).bottom_right().translated(screen_relative_rect().top_left().translated(ruler_width(), 0).translated(10, 5));
if (has_completions || user_requested_autocomplete == Yes)
m_autocomplete_box->show(position);
m_autocomplete_box->show(position);
}
});
}
void TextEditor::try_update_autocomplete(Function<void()> callback)
{
if (m_autocomplete_box && m_autocomplete_box->is_visible())
force_update_autocomplete(move(callback));
}
void TextEditor::force_update_autocomplete(Function<void()> callback)
{
if (m_autocomplete_provider) {
m_autocomplete_provider->provide_completions([&, callback = move(callback)](auto completions) {
m_autocomplete_box->update_suggestions(move(completions));
if (callback)
callback();
});
}
}

View file

@ -279,6 +279,8 @@ private:
Yes
};
void try_show_autocomplete(UserRequestedAutocomplete);
void try_update_autocomplete(Function<void()> callback = {});
void force_update_autocomplete(Function<void()> callback = {});
void hide_autocomplete_if_needed();
int icon_size() const { return 16; }