Ctrl+c, ctrlv, ctrlx

This commit is contained in:
Krzosa Karol
2024-06-25 07:45:30 +02:00
parent 7ef502f3b0
commit 03644c0561

View File

@@ -328,7 +328,56 @@ int main() {
} }
} }
if (IsKeyDown(KEY_LEFT_CONTROL) && IsKeyPressed(KEY_C)) {
Array<String> strings = {FrameArena};
For(focused_window->cursors) {
String string = GetString(focused_window->buffer, it.range);
strings.add(string);
}
String to_save = Merge(FrameArena, strings, "\n");
SetClipboardText(to_save.data);
}
if (IsKeyDown(KEY_LEFT_CONTROL) && (IsKeyPressed(KEY_V) || IsKeyPressedRepeat(KEY_V))) {
BeforeEdit(focused_window);
Array<Edit> edits = {FrameArena};
const char *text = GetClipboardText();
String string = text;
For(focused_window->cursors) {
AddEdit(&edits, it.range, string);
}
ApplyEdits(&focused_window->buffer, edits);
AfterEdit(focused_window, edits);
}
if (IsKeyDown(KEY_LEFT_CONTROL) && (IsKeyPressed(KEY_X) || IsKeyPressedRepeat(KEY_X))) {
BeforeEdit(focused_window);
Array<Edit> edits = {FrameArena};
Array<String> strings = {FrameArena};
For(focused_window->cursors) {
Range range = {};
if (GetRangeSize(it.range)) {
range = it.range;
} else {
Line line = FindLine(focused_window->buffer, it.range.min);
range = {line.range.min, line.range.max + 1};
}
AddEdit(&edits, range, "");
String string = GetString(focused_window->buffer, range);
strings.add(string);
}
String to_save = Merge(FrameArena, strings, "\n");
SetClipboardText(to_save.data);
ApplyEdits(&focused_window->buffer, edits);
AfterEdit(focused_window, edits);
}
// @todo: scrolling
if (IsKeyPressed(KEY_DELETE) || IsKeyPressedRepeat(KEY_DELETE)) {
if (IsKeyDown(KEY_LEFT_SHIFT)) {
}
}
if (IsKeyPressed(KEY_BACKSPACE) || IsKeyPressedRepeat(KEY_BACKSPACE)) { if (IsKeyPressed(KEY_BACKSPACE) || IsKeyPressedRepeat(KEY_BACKSPACE)) {
if (IsKeyDown(KEY_LEFT_SHIFT)) {
}
BeforeEdit(focused_window); BeforeEdit(focused_window);
Array<Edit> edits = {FrameArena}; Array<Edit> edits = {FrameArena};
String string = {}; String string = {};