Fix multiple cursors crashes by sorting cursors by min range
This commit is contained in:
@@ -231,12 +231,24 @@ int main() {
|
||||
}
|
||||
if (IsKeyPressed(KEY_DOWN) || IsKeyPressedRepeat(KEY_DOWN)) {
|
||||
For(focused_window->cursors) {
|
||||
it.range.max = it.range.min = MoveDown(focused_window->buffer, it.range.min);
|
||||
if (IsKeyDown(KEY_LEFT_SHIFT)) {
|
||||
int64_t front = GetFront(it);
|
||||
front = MoveDown(focused_window->buffer, front);
|
||||
it = ChangeFront(it, front);
|
||||
} else {
|
||||
it.range.max = it.range.min = MoveDown(focused_window->buffer, it.range.min);
|
||||
}
|
||||
}
|
||||
}
|
||||
if (IsKeyPressed(KEY_UP) || IsKeyPressedRepeat(KEY_UP)) {
|
||||
For(focused_window->cursors) {
|
||||
it.range.max = it.range.min = MoveUp(focused_window->buffer, it.range.min);
|
||||
if (IsKeyDown(KEY_LEFT_SHIFT)) {
|
||||
int64_t front = GetFront(it);
|
||||
front = MoveUp(focused_window->buffer, front);
|
||||
it = ChangeFront(it, front);
|
||||
} else {
|
||||
it.range.max = it.range.min = MoveUp(focused_window->buffer, it.range.min);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -426,10 +438,15 @@ int main() {
|
||||
if (CheckCollisionPointRec(mouse_in_render_units, ToRectangle(cell.rect))) {
|
||||
DrawRectangleRec(ToRectangle(cell.rect), {0, 0, 255, 40});
|
||||
if (IsMouseButtonPressed(MOUSE_BUTTON_LEFT)) {
|
||||
window.cursors.clear();
|
||||
window.cursors.add({cell.pos, cell.pos});
|
||||
if (IsKeyDown(KEY_LEFT_CONTROL)) {
|
||||
window.cursors.add({cell.pos, cell.pos});
|
||||
} else {
|
||||
window.cursors.clear();
|
||||
window.cursors.add({cell.pos, cell.pos});
|
||||
}
|
||||
} else if (IsMouseButtonDown(MOUSE_BUTTON_LEFT)) {
|
||||
window.cursors[0] = ChangeBack(window.cursors[0], cell.pos);
|
||||
Cursor *c = window.cursors.last();
|
||||
*c = ChangeBack(*c, cell.pos);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user