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;
|
int64_t prev_dest = 0;
|
||||||
|
|
||||||
For(edits) {
|
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};
|
Range source_range = {prev_source, it.range.min};
|
||||||
if (GetRangeSize(source_range) != 0) {
|
if (GetRangeSize(source_range) != 0) {
|
||||||
String source_string = {};
|
String source_string = {};
|
||||||
@@ -240,6 +241,7 @@ void ApplyEdits(Buffer *buffer, Array<Edit> edits) {
|
|||||||
|
|
||||||
int64_t new_buffer_len = 0;
|
int64_t new_buffer_len = 0;
|
||||||
For(writes) {
|
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);
|
memcpy(buffer->data[dsti] + new_buffer_len, it.string.data, it.string.len);
|
||||||
new_buffer_len += it.string.len;
|
new_buffer_len += it.string.len;
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -168,7 +168,7 @@ int main() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
window.cursors.add({});
|
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);
|
Line line = GetLine(window.buffer, i);
|
||||||
window.cursors.add({line.range.min, line.range.min});
|
window.cursors.add({line.range.min, line.range.min});
|
||||||
}
|
}
|
||||||
@@ -183,6 +183,9 @@ int main() {
|
|||||||
if (IsKeyDown(KEY_F1)) {
|
if (IsKeyDown(KEY_F1)) {
|
||||||
camera_offset_world_to_render_units = Vector2Subtract(camera_offset_world_to_render_units, GetMouseDelta());
|
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;
|
float mouse_wheel = GetMouseWheelMove() * 48;
|
||||||
focused_window->scroll.y -= mouse_wheel;
|
focused_window->scroll.y -= mouse_wheel;
|
||||||
@@ -245,7 +248,7 @@ int main() {
|
|||||||
IterRemovePrepare(focused_window->cursors);
|
IterRemovePrepare(focused_window->cursors);
|
||||||
if (&cursor == &it) continue;
|
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;
|
remove_item = true;
|
||||||
cursor.range.max = it.range.max;
|
cursor.range.max = it.range.max;
|
||||||
break;
|
break;
|
||||||
|
|||||||
Reference in New Issue
Block a user