fix: remove one-frame blank on virtual scrolls

This commit is contained in:
Anna
2022-01-31 18:14:06 -05:00
parent f972105f67
commit 326ef5430c
+17 -7
View File
@@ -473,30 +473,40 @@ internal sealed class ChatLog : IUiComponent {
message.IsVisible = false; message.IsVisible = false;
} }
// go to next row
if (table) {
ImGui.TableNextColumn();
}
// message has rendered once // message has rendered once
if (message.Height.HasValue) { if (message.Height.HasValue) {
// message isn't visible, so render dummy // message isn't visible, so render dummy
if (!message.IsVisible) { if (!message.IsVisible) {
// skip columns var beforeDummy = ImGui.GetCursorPos();
if (table) { if (table) {
if (tab.DisplayTimestamp) { // skip to the message column for vis test
ImGui.TableNextColumn(); ImGui.TableNextColumn();
} }
ImGui.TableNextColumn(); ImGui.Dummy(new Vector2(10f, message.Height.Value));
}
ImGui.Dummy(new Vector2(1f, message.Height.Value));
message.IsVisible = ImGui.IsItemVisible(); message.IsVisible = ImGui.IsItemVisible();
if (message.IsVisible) {
if (table) {
ImGui.TableSetColumnIndex(0);
}
ImGui.SetCursorPos(beforeDummy);
} else {
goto UpdateMessage; goto UpdateMessage;
} }
} }
}
if (tab.DisplayTimestamp) { if (tab.DisplayTimestamp) {
var timestamp = message.Date.ToLocalTime().ToString("t"); var timestamp = message.Date.ToLocalTime().ToString("t");
if (table) { if (table) {
ImGui.TableNextColumn();
ImGui.TextUnformatted(timestamp); ImGui.TextUnformatted(timestamp);
} else { } else {
this.DrawChunk(new TextChunk(null, null, $"[{timestamp}]") { this.DrawChunk(new TextChunk(null, null, $"[{timestamp}]") {