Improve text wrapping for preview

This commit is contained in:
Infi
2024-05-20 16:05:32 +02:00
parent 592892e45a
commit aab4977ecf
3 changed files with 21 additions and 10 deletions
+19 -8
View File
@@ -236,19 +236,30 @@ public class InputPreview : Window
return;
}
foreach (var letter in text.Content)
var splits = text.Content.Split(" ");
for (var i = 0; i < splits.Length; i++)
{
var letterSize = ImGui.CalcTextSize(letter.ToString());
if (ImGui.GetContentRegionAvail().X < letterSize.X)
// The last character should never be an empty string
// Sorting this out because it leads to double whitespaces
if (i + 1 == splits.Length && splits[i] == "")
break;
var wordSize = ImGui.CalcTextSize(splits[i]);
if (ImGui.GetContentRegionAvail().X < wordSize.X)
ImGui.NewLine();
CursorPosition++;
if (ImGui.Selectable($"{letter}##{CursorPosition + unique}", false, ImGuiSelectableFlags.None, letterSize))
foreach (var letter in $"{splits[i]} ")
{
SelectedCursorPos = CursorPosition;
LogWindow.KeepFocusedThroughPreview = true;
var letterSize = ImGui.CalcTextSize(letter.ToString());
CursorPosition++;
if (ImGui.Selectable($"{letter}##{CursorPosition + unique}", false, ImGuiSelectableFlags.None, letterSize))
{
SelectedCursorPos = CursorPosition;
LogWindow.KeepFocusedThroughPreview = true;
}
ImGui.SameLine();
}
ImGui.SameLine();
}
ImGui.NewLine();
}