Skip to content

Commit b7feef7

Browse files
committed
Fixed cursor adjustment bugs
1 parent 112097c commit b7feef7

2 files changed

Lines changed: 21 additions & 7 deletions

File tree

TextEditor.cpp

Lines changed: 20 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -2355,10 +2355,17 @@ TextEditor::Palette TextEditor::defaultPalette = TextEditor::GetDarkPalette();
23552355
//
23562356

23572357
TextEditor::Coordinate TextEditor::Cursor::adjustCoordinateForInsert(Coordinate coordinate, Coordinate insertStart, Coordinate insertEnd) {
2358-
coordinate.line += insertEnd.line - insertStart.line;
2358+
if (insertStart.line == insertEnd.line) {
2359+
if (coordinate.line == insertEnd.line) {
2360+
coordinate.column += insertEnd.column - insertStart.column;
2361+
}
2362+
2363+
} else {
2364+
if (coordinate.line == insertStart.line) {
2365+
coordinate.column += insertEnd.column - insertStart.column;
2366+
}
23592367

2360-
if (end.line == coordinate.line) {
2361-
coordinate.column += insertEnd.column - insertStart.column;
2368+
coordinate.line += insertEnd.line - insertStart.line;
23622369
}
23632370

23642371
return coordinate;
@@ -2380,10 +2387,17 @@ void TextEditor::Cursor::adjustForInsert(Coordinate insertStart, Coordinate inse
23802387
//
23812388

23822389
TextEditor::Coordinate TextEditor::Cursor::adjustCoordinateForDelete(Coordinate coordinate, Coordinate deleteStart, Coordinate deleteEnd) {
2383-
coordinate.line -= deleteEnd.line - deleteStart.line;
2390+
if (deleteStart.line == deleteEnd.line) {
2391+
if (coordinate.line == deleteEnd.line) {
2392+
coordinate.column -= deleteEnd.column - deleteStart.column;
2393+
}
2394+
2395+
} else {
2396+
coordinate.line -= deleteEnd.line - deleteStart.line;
23842397

2385-
if (deleteEnd.line == coordinate.line) {
2386-
coordinate.column -= deleteEnd.column - deleteStart.column;
2398+
if (coordinate.line == deleteEnd.line) {
2399+
coordinate.column -= deleteEnd.column;
2400+
}
23872401
}
23882402

23892403
return coordinate;

TextEditor.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -935,7 +935,7 @@ class TextEditor {
935935
inline void resetUpdated() { updated = false; }
936936

937937
// line-based callbacks
938-
inline void setInsertor(std::function<void*(int line )> callback) { insertor = callback; }
938+
inline void setInsertor(std::function<void*(int line)> callback) { insertor = callback; }
939939
inline void setDeletor(std::function<void(int line, void* data)> callback) { deletor = callback; }
940940

941941
// access line user data

0 commit comments

Comments
 (0)