فهرست منبع

LibGUI: Improve double click selection on documents without spans

Previously, double clicking would select the range around your click up
until it found a space, and in the browser's location bar this behavior
didn't suffice. Now, it will select the range around your click until
there is a "word break". A word break is considered to be when your
selection changes from being alphanumeric to being non alphanumeric, or
vice versa.
FalseHonesty 5 سال پیش
والد
کامیت
e0312ec2ce
1فایلهای تغییر یافته به همراه5 افزوده شده و 2 حذف شده
  1. 5 2
      Libraries/LibGUI/TextEditor.cpp

+ 5 - 2
Libraries/LibGUI/TextEditor.cpp

@@ -210,16 +210,19 @@ void TextEditor::doubleclick_event(MouseEvent& event)
     auto start = text_position_at(event.position());
     auto end = start;
     auto& line = this->line(start.line());
+    auto clicked_on_alphanumeric = isalnum(line.codepoints()[start.column()]);
 
     if (!document().has_spans()) {
         while (start.column() > 0) {
-            if (isspace(line.codepoints()[start.column() - 1]))
+            auto next_codepoint = line.codepoints()[start.column() - 1];
+            if ((clicked_on_alphanumeric && !isalnum(next_codepoint)) || (!clicked_on_alphanumeric && isalnum(next_codepoint)))
                 break;
             start.set_column(start.column() - 1);
         }
 
         while (end.column() < line.length()) {
-            if (isspace(line.codepoints()[end.column()]))
+            auto next_codepoint = line.codepoints()[end.column()];
+            if ((clicked_on_alphanumeric && !isalnum(next_codepoint)) || (!clicked_on_alphanumeric && isalnum(next_codepoint)))
                 break;
             end.set_column(end.column() + 1);
         }