Fix cursor merging on boundary
This commit is contained in:
@@ -205,6 +205,7 @@ void ApplyEdits(Buffer *buffer, Array<Edit> edits) {
|
||||
int64_t prev_dest = 0;
|
||||
|
||||
For(edits) {
|
||||
TraceLog(LOG_DEBUG, "edit dsti: %d, srci: %d, range: %lld to %lld, string: '%.*s'\n", dsti, srci, (long long)it.range.min, (long long)it.range.max, FmtString(it.string));
|
||||
Range source_range = {prev_source, it.range.min};
|
||||
if (GetRangeSize(source_range) != 0) {
|
||||
String source_string = {};
|
||||
@@ -240,6 +241,7 @@ void ApplyEdits(Buffer *buffer, Array<Edit> edits) {
|
||||
|
||||
int64_t new_buffer_len = 0;
|
||||
For(writes) {
|
||||
TraceLog(LOG_DEBUG, "write dsti: %d, srci: %d, range: %lld to %lld, string: '%.*s'\n", dsti, srci, (long long)it.range.min, (long long)it.range.max, FmtString(it.string));
|
||||
memcpy(buffer->data[dsti] + new_buffer_len, it.string.data, it.string.len);
|
||||
new_buffer_len += it.string.len;
|
||||
}
|
||||
|
||||
@@ -168,7 +168,7 @@ int main() {
|
||||
}
|
||||
|
||||
window.cursors.add({});
|
||||
for (int i = 1; i < 10; i += 1) {
|
||||
for (int i = 1; i < 2; i += 1) {
|
||||
Line line = GetLine(window.buffer, i);
|
||||
window.cursors.add({line.range.min, line.range.min});
|
||||
}
|
||||
@@ -183,6 +183,9 @@ int main() {
|
||||
if (IsKeyDown(KEY_F1)) {
|
||||
camera_offset_world_to_render_units = Vector2Subtract(camera_offset_world_to_render_units, GetMouseDelta());
|
||||
}
|
||||
if (IsKeyDown(KEY_F2)) {
|
||||
SetTraceLogLevel(LOG_DEBUG);
|
||||
}
|
||||
|
||||
float mouse_wheel = GetMouseWheelMove() * 48;
|
||||
focused_window->scroll.y -= mouse_wheel;
|
||||
@@ -245,7 +248,7 @@ int main() {
|
||||
IterRemovePrepare(focused_window->cursors);
|
||||
if (&cursor == &it) continue;
|
||||
|
||||
if (cursor.range.max > it.range.min && cursor.range.max <= it.range.max) {
|
||||
if (cursor.range.max >= it.range.min && cursor.range.max <= it.range.max) {
|
||||
remove_item = true;
|
||||
cursor.range.max = it.range.max;
|
||||
break;
|
||||
|
||||
Reference in New Issue
Block a user