diff --git a/src/dlangui/widgets/editors.d b/src/dlangui/widgets/editors.d index a8eb80b3..67874e83 100644 --- a/src/dlangui/widgets/editors.d +++ b/src/dlangui/widgets/editors.d @@ -2390,6 +2390,7 @@ class EditBox : EditWidgetBase { case SelectUp: if (_caretPos.line > 0) { _caretPos.line--; + correctCaretPos(); updateSelectionAfterCursorMovement(oldCaretPos, (a.id & 1) != 0); ensureCaretVisible(); } @@ -2398,6 +2399,7 @@ class EditBox : EditWidgetBase { case SelectDown: if (_caretPos.line < _content.length - 1) { _caretPos.line++; + correctCaretPos(); updateSelectionAfterCursorMovement(oldCaretPos, (a.id & 1) != 0); ensureCaretVisible(); } @@ -2407,6 +2409,7 @@ class EditBox : EditWidgetBase { { ensureCaretVisible(); _caretPos.line = _firstVisibleLine; + correctCaretPos(); updateSelectionAfterCursorMovement(oldCaretPos, (a.id & 1) != 0); } return true; @@ -2419,6 +2422,7 @@ class EditBox : EditWidgetBase { if (newpos >= _content.length) newpos = _content.length - 1; _caretPos.line = newpos; + correctCaretPos(); updateSelectionAfterCursorMovement(oldCaretPos, (a.id & 1) != 0); } return true; @@ -2436,6 +2440,7 @@ class EditBox : EditWidgetBase { _firstVisibleLine = newpos; _caretPos.line -= delta; } + correctCaretPos(); measureVisibleText(); updateScrollBars(); updateSelectionAfterCursorMovement(oldCaretPos, (a.id & 1) != 0); @@ -2454,6 +2459,7 @@ class EditBox : EditWidgetBase { _firstVisibleLine = newpos; _caretPos.line += delta; } + correctCaretPos(); measureVisibleText(); updateScrollBars(); updateSelectionAfterCursorMovement(oldCaretPos, (a.id & 1) != 0);