mirror of
https://github.com/fergalmoran/ladybird.git
synced 2026-02-22 23:55:12 +00:00
GTextEditor: Alt+Shift+S alphabetically sorts selected lines
This commit is contained in:
@@ -1,3 +1,4 @@
|
||||
#include <AK/QuickSort.h>
|
||||
#include <AK/StringBuilder.h>
|
||||
#include <Kernel/KeyCode.h>
|
||||
#include <LibGUI/GAction.h>
|
||||
@@ -573,6 +574,31 @@ void GTextEditor::move_selected_lines_down()
|
||||
update();
|
||||
}
|
||||
|
||||
void GTextEditor::sort_selected_lines()
|
||||
{
|
||||
if (is_readonly())
|
||||
return;
|
||||
|
||||
if (!has_selection())
|
||||
return;
|
||||
|
||||
int first_line;
|
||||
int last_line;
|
||||
get_selection_line_boundaries(first_line, last_line);
|
||||
|
||||
auto& lines = document().lines();
|
||||
|
||||
auto start = lines.begin() + first_line;
|
||||
auto end = lines.begin() + last_line + 1;
|
||||
|
||||
quick_sort(start, end, [](auto& a, auto& b) {
|
||||
return strcmp(a.characters(), b.characters()) < 0;
|
||||
});
|
||||
|
||||
did_change();
|
||||
update();
|
||||
}
|
||||
|
||||
void GTextEditor::keydown_event(GKeyEvent& event)
|
||||
{
|
||||
if (is_single_line() && event.key() == KeyCode::Key_Tab)
|
||||
@@ -732,7 +758,10 @@ void GTextEditor::keydown_event(GKeyEvent& event)
|
||||
select_all();
|
||||
return;
|
||||
}
|
||||
|
||||
if (event.alt() && event.shift() && event.key() == KeyCode::Key_S) {
|
||||
sort_selected_lines();
|
||||
return;
|
||||
}
|
||||
if (event.key() == KeyCode::Key_Backspace) {
|
||||
if (is_readonly())
|
||||
return;
|
||||
|
||||
Reference in New Issue
Block a user