LibGUI: Prevent selecting empty line in TextEditor on double click (#6537)

This commit is contained in:
Rafał 2021-04-21 23:48:26 +02:00 committed by GitHub
parent 4115fcc933
commit c41c41cc0f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
Notes: sideshowbarker 2024-07-18 19:16:47 +09:00
3 changed files with 16 additions and 0 deletions

View file

@ -141,6 +141,18 @@ bool TextDocumentLine::ends_in_whitespace() const
return isspace(code_points()[length() - 1]);
}
bool TextDocumentLine::can_select() const
{
if (is_empty())
return false;
for (size_t i = 0; i < length(); ++i) {
auto code_point = code_points()[i];
if (code_point != '\n' && code_point != '\r' && code_point != '\f' && code_point != '\v')
return true;
}
return false;
}
size_t TextDocumentLine::leading_spaces() const
{
size_t count = 0;

View file

@ -190,6 +190,7 @@ public:
size_t first_non_whitespace_column() const;
Optional<size_t> last_non_whitespace_column() const;
bool ends_in_whitespace() const;
bool can_select() const;
bool is_empty() const { return length() == 0; }
size_t leading_spaces() const;

View file

@ -228,6 +228,9 @@ void TextEditor::doubleclick_event(MouseEvent& event)
if (is_displayonly())
return;
if (!current_line().can_select())
return;
// NOTE: This ensures that spans are updated before we look at them.
flush_pending_change_notification_if_needed();