Allow more items in automatic width calculation for TextEdit completion

Calculating the width for 100 items takes a millisecond in
a debug build on an i7-6700K. It's likely that the editor can remain
smooth even with 1,000 items, especially in a release build.
This commit is contained in:
Hugo Locurcio 2021-06-08 16:20:31 +02:00
parent f3d931410b
commit 2e6a4aea99
No known key found for this signature in database
GPG key ID: 39E8F8BE30B0A49C

View file

@ -1590,8 +1590,9 @@ void TextEdit::_notification(int p_what) {
int scroll_rectangle_width = get_constant("completion_scroll_width");
int width = 0;
// Compute max width of the panel based on the longest completion option
if (completion_options_size < 50) {
// Compute max width of the panel based on the longest completion option.
// Limit the number of results for automatic width calculation to avoid freezing while showing results.
if (completion_options_size < 1000) {
for (int i = 0; i < completion_options_size; i++) {
int line_width = MIN(cache.font->get_string_size(completion_options[i].display).x, cmax_width);
if (line_width > width) {
@ -1599,6 +1600,7 @@ void TextEdit::_notification(int p_what) {
}
}
} else {
// Fall back to predetermined width.
width = cmax_width;
}