mirror of
https://github.com/Ellpeck/MLEM.git
synced 2024-11-26 14:38:34 +01:00
fixed some multiline editing issues
This commit is contained in:
parent
11dd939009
commit
1d462b0252
1 changed files with 4 additions and 6 deletions
|
@ -167,9 +167,6 @@ namespace MLEM.Ui.Elements {
|
||||||
/// If this is true, pressing <see cref="Keys.Enter"/> will insert a new line into the <see cref="Text"/> if the <see cref="InputRule"/> allows it.
|
/// If this is true, pressing <see cref="Keys.Enter"/> will insert a new line into the <see cref="Text"/> if the <see cref="InputRule"/> allows it.
|
||||||
/// Additionally, text will be rendered with horizontal soft wraps, and lines that are outside of the text field's bounds will be hidden.
|
/// Additionally, text will be rendered with horizontal soft wraps, and lines that are outside of the text field's bounds will be hidden.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <remarks>
|
|
||||||
/// Moving up and down through the text field, and clicking on text to start editing at the mouse's position, are currently not supported.
|
|
||||||
/// </remarks>
|
|
||||||
public bool Multiline {
|
public bool Multiline {
|
||||||
get => this.multiline;
|
get => this.multiline;
|
||||||
set {
|
set {
|
||||||
|
@ -250,7 +247,7 @@ namespace MLEM.Ui.Elements {
|
||||||
var caretLine = 0;
|
var caretLine = 0;
|
||||||
var originalIndex = 0;
|
var originalIndex = 0;
|
||||||
var addedLineBreaks = 0;
|
var addedLineBreaks = 0;
|
||||||
for (var i = 0; i <= this.CaretPos + addedLineBreaks && i < this.displayedText.Length; i++) {
|
for (var i = 0; i <= this.CaretPos + addedLineBreaks - 1 && i < this.displayedText.Length; i++) {
|
||||||
if (this.displayedText[i] == '\n') {
|
if (this.displayedText[i] == '\n') {
|
||||||
caretLine++;
|
caretLine++;
|
||||||
if (this.text[originalIndex] != '\n') {
|
if (this.text[originalIndex] != '\n') {
|
||||||
|
@ -385,7 +382,7 @@ namespace MLEM.Ui.Elements {
|
||||||
var lastLineBreak = 0;
|
var lastLineBreak = 0;
|
||||||
var originalIndex = 0;
|
var originalIndex = 0;
|
||||||
var addedLineBreaks = 0;
|
var addedLineBreaks = 0;
|
||||||
for (var i = 0; i <= this.CaretPos - this.textOffset + addedLineBreaks && i < this.displayedText.Length; i++) {
|
for (var i = 0; i <= this.CaretPos - this.textOffset + addedLineBreaks - 1 && i < this.displayedText.Length; i++) {
|
||||||
if (this.displayedText[i] == '\n') {
|
if (this.displayedText[i] == '\n') {
|
||||||
lines++;
|
lines++;
|
||||||
lastLineBreak = i;
|
lastLineBreak = i;
|
||||||
|
@ -460,7 +457,8 @@ namespace MLEM.Ui.Elements {
|
||||||
if (index < 0 || index >= this.text.Length)
|
if (index < 0 || index >= this.text.Length)
|
||||||
return;
|
return;
|
||||||
this.text.Remove(index, length);
|
this.text.Remove(index, length);
|
||||||
this.CaretPos = this.text.Length;
|
// ensure that caret pos is still in bounds
|
||||||
|
this.CaretPos = this.CaretPos;
|
||||||
this.HandleTextChange();
|
this.HandleTextChange();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue