[1mdiff --git a/res/about/version.gmi b/res/about/version.gmi[m
[1mindex 41b4fed7..905b0221 100644[m
[1m--- a/res/about/version.gmi[m
[1m+++ b/res/about/version.gmi[m
[36m@@ -10,6 +10,7 @@[m
[32m+[m[32m* Fixed "Paste Preceding Line" not being undoable.[m
[1mdiff --git a/src/ui/inputwidget.c b/src/ui/inputwidget.c[m
[1mindex aa55f3f0..6a8d428a 100644[m
[1m--- a/src/ui/inputwidget.c[m
[1m+++ b/src/ui/inputwidget.c[m
[36m@@ -1115,7 +1115,14 @@[m [mstatic void updateBuffered_InputWidget_(iInputWidget *d) {[m
}[m
[m
void setText_InputWidget(iInputWidget *d, const iString *text) {[m
[32m+[m[32m setTextUndoable_InputWidget(d, text, iFalse);[m
[32m+[m[32m}[m
[32m+[m
[32m+[m[32mvoid setTextUndoable_InputWidget(iInputWidget *d, const iString *text, iBool isUndoable) {[m
if (!d) return;[m
[32m+[m[32m if (isUndoable) {[m
[32m+[m[32m pushUndo_InputWidget_(d);[m
[32m+[m[32m }[m
if (d->inFlags & isUrl_InputWidgetFlag) {[m
if (prefs_App()->decodeUserVisibleURLs) {[m
iString *enc = collect_String(copy_String(text));[m
[36m@@ -1139,7 +1146,9 @@[m [mvoid setText_InputWidget(iInputWidget *d, const iString *text) {[m
iString *nfcText = collect_String(copy_String(text));[m
normalize_String(nfcText);[m
#if !LAGRANGE_USE_SYSTEM_TEXT_INPUT[m
[31m- clearUndo_InputWidget_(d);[m
[32m+[m[32m if (!isUndoable) {[m
[32m+[m[32m clearUndo_InputWidget_(d);[m
[32m+[m[32m }[m
splitToLines_(nfcText, &d->lines);[m
iAssert(!isEmpty_Array(&d->lines));[m
iForEach(Array, i, &d->lines) {[m
[36m@@ -1175,6 +1184,12 @@[m [mvoid setTextCStr_InputWidget(iInputWidget *d, const char *cstr) {[m
delete_String(str);[m
}[m
[m
[32m+[m[32mvoid setTextUndoableCStr_InputWidget(iInputWidget *d, const char *cstr, iBool isUndoable) {[m
[32m+[m[32m iString *str = newCStr_String(cstr);[m
[32m+[m[32m setTextUndoable_InputWidget(d, str, isUndoable);[m
[32m+[m[32m delete_String(str);[m
[32m+[m[32m}[m
[32m+[m
void selectAll_InputWidget(iInputWidget *d) {[m
#if LAGRANGE_USE_SYSTEM_TEXT_INPUT[m
if (d->sysCtrl) {[m
[1mdiff --git a/src/ui/inputwidget.h b/src/ui/inputwidget.h[m
[1mindex 5a61ec22..000fa4b7 100644[m
[1m--- a/src/ui/inputwidget.h[m
[1m+++ b/src/ui/inputwidget.h[m
[36m@@ -46,6 +46,8 @@[m [mvoid setMode_InputWidget (iInputWidget *, enum iInputMode mode);[m
void setMaxLen_InputWidget (iInputWidget *, size_t maxLen);[m
void setText_InputWidget (iInputWidget *, const iString *text);[m
void setTextCStr_InputWidget (iInputWidget *, const char *cstr);[m
[32m+[m[32mvoid setTextUndoable_InputWidget (iInputWidget *, const iString *text, iBool isUndoable);[m
[32m+[m[32mvoid setTextUndoableCStr_InputWidget (iInputWidget *, const char *cstr, iBool isUndoable);[m
void setFont_InputWidget (iInputWidget *, int fontId);[m
void setContentPadding_InputWidget (iInputWidget , int left, int right); / only affects the text entry */[m
void setLineLimits_InputWidget (iInputWidget *, int minLines, int maxLines);[m
[1mdiff --git a/src/ui/util.c b/src/ui/util.c[m
[1mindex 31907721..5dd8a0bd 100644[m
[1m--- a/src/ui/util.c[m
[1m+++ b/src/ui/util.c[m
[36m@@ -1778,7 +1778,7 @@[m [miBool valueInputHandler_(iWidget *dlg, const char *cmd) {[m
}[m
else if (equal_Command(cmd, "valueinput.set")) {[m
iInputWidget *input = findChild_Widget(dlg, "input");[m
[31m- setTextCStr_InputWidget(input, suffixPtr_Command(cmd, "text"));[m
[32m+[m[32m setTextUndoableCStr_InputWidget(input, suffixPtr_Command(cmd, "text"), iTrue);[m
validate_InputWidget(input);[m
return iTrue;[m
}[m
text/plain
This content has been proxied by September (ba2dc).