mirror of
https://github.com/RGBCube/serenity
synced 2025-07-25 04:47:35 +00:00
LibGUI: Refactor out common code
This is prepping for a future commit.
This commit is contained in:
parent
713b6badb0
commit
aea9ba3b42
2 changed files with 23 additions and 11 deletions
|
@ -804,11 +804,7 @@ void TextEditor::keydown_event(KeyEvent& event)
|
||||||
}
|
}
|
||||||
|
|
||||||
ArmedScopeGuard update_autocomplete { [&] {
|
ArmedScopeGuard update_autocomplete { [&] {
|
||||||
if (m_autocomplete_box && m_autocomplete_box->is_visible()) {
|
try_update_autocomplete();
|
||||||
m_autocomplete_provider->provide_completions([&](auto completions) {
|
|
||||||
m_autocomplete_box->update_suggestions(move(completions));
|
|
||||||
});
|
|
||||||
}
|
|
||||||
} };
|
} };
|
||||||
|
|
||||||
if (is_multi_line() && !event.shift() && !event.alt() && event.ctrl() && event.key() == KeyCode::Key_Space) {
|
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)
|
void TextEditor::try_show_autocomplete(UserRequestedAutocomplete user_requested_autocomplete)
|
||||||
{
|
{
|
||||||
if (m_autocomplete_provider) {
|
force_update_autocomplete([&, user_requested_autocomplete = move(user_requested_autocomplete)] {
|
||||||
m_autocomplete_provider->provide_completions([&](auto completions) {
|
if (user_requested_autocomplete == Yes || m_autocomplete_box->has_suggestions()) {
|
||||||
auto has_completions = !completions.is_empty();
|
|
||||||
m_autocomplete_box->update_suggestions(move(completions));
|
|
||||||
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));
|
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();
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -279,6 +279,8 @@ private:
|
||||||
Yes
|
Yes
|
||||||
};
|
};
|
||||||
void try_show_autocomplete(UserRequestedAutocomplete);
|
void try_show_autocomplete(UserRequestedAutocomplete);
|
||||||
|
void try_update_autocomplete(Function<void()> callback = {});
|
||||||
|
void force_update_autocomplete(Function<void()> callback = {});
|
||||||
void hide_autocomplete_if_needed();
|
void hide_autocomplete_if_needed();
|
||||||
|
|
||||||
int icon_size() const { return 16; }
|
int icon_size() const { return 16; }
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue