mirror of
https://github.com/LadybirdBrowser/ladybird.git
synced 2024-11-10 13:00:29 +03:00
GTextEditor: Alt+Shift+S alphabetically sorts selected lines
This commit is contained in:
parent
e89cdd504c
commit
a3520bfdfd
Notes:
sideshowbarker
2024-07-19 11:13:05 +09:00
Author: https://github.com/ctfloyd 🔰 Commit: https://github.com/SerenityOS/serenity/commit/a3520bfdfd2 Pull-request: https://github.com/SerenityOS/serenity/pull/784 Reviewed-by: https://github.com/awesomekling
@ -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;
|
||||
|
@ -167,6 +167,7 @@ private:
|
||||
void get_selection_line_boundaries(int& first_line, int& last_line);
|
||||
void move_selected_lines_up();
|
||||
void move_selected_lines_down();
|
||||
void sort_selected_lines();
|
||||
|
||||
class UndoCommand {
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user