InputText: Pasting a multi-line buffer into a single-line edit replaces carriage return by spaces. (#8459)
diff --git a/docs/CHANGELOG.txt b/docs/CHANGELOG.txt
index f184ddc..8d4f0be 100644
--- a/docs/CHANGELOG.txt
+++ b/docs/CHANGELOG.txt
@@ -77,6 +77,8 @@
inner/outer padding applied to hit-testing of windows borders and detection
of hovered window.
- InputText: Allow CTRL+Shift+Z to redo even outside of OSX. (#8389) [@tanksdude]
+- InputText: Pasting a multi-line buffer into a single-line edit replaces
+ carriage return by spaces. (#8459)
- InputTextWithHint(): Fixed buffer-overflow (luckily often with no visible effect)
when a user callback modified the buffer contents in a way that altered the
visibility of the preview/hint buffer. (#8368) [@m9710797, @ocornut]
diff --git a/imgui_widgets.cpp b/imgui_widgets.cpp
index fef30d2..602bdb9 100644
--- a/imgui_widgets.cpp
+++ b/imgui_widgets.cpp
@@ -4294,7 +4294,13 @@
if (c < 0x20)
{
bool pass = false;
- pass |= (c == '\n') && (flags & ImGuiInputTextFlags_Multiline) != 0; // Note that an Enter KEY will emit \r and be ignored (we poll for KEY in InputText() code)
+ pass |= (c == '\n') && (flags & ImGuiInputTextFlags_Multiline) != 0; // Note that an Enter KEY will emit \r and be ignored (we poll for KEY in InputText() code)
+ if (c == '\n' && input_source_is_clipboard && (flags & ImGuiInputTextFlags_Multiline) == 0) // In single line mode, replace \n with a space
+ {
+ c = *p_char = ' ';
+ pass = true;
+ }
+ pass |= (c == '\n') && (flags & ImGuiInputTextFlags_Multiline) != 0;
pass |= (c == '\t') && (flags & ImGuiInputTextFlags_AllowTabInput) != 0;
if (!pass)
return false;