1
0
mirror of https://github.com/ppy/osu.git synced 2025-03-05 12:32:58 +08:00

Tidy up order of scroll changes

This commit is contained in:
Dean Herbert 2019-10-29 14:33:05 +09:00
parent d1c6e3f620
commit 09a6d1184a

View File

@ -89,8 +89,10 @@ namespace osu.Game.Overlays.Chat
private void newMessagesArrived(IEnumerable<Message> newMessages) private void newMessagesArrived(IEnumerable<Message> newMessages)
{ {
bool shouldScrollToEnd = scroll.IsScrolledToEnd(10) || !chatLines.Any() || newMessages.Any(m => m is LocalMessage);
// Add up to last Channel.MAX_HISTORY messages // Add up to last Channel.MAX_HISTORY messages
var displayMessages = newMessages.Skip(Math.Max(0, newMessages.Count() - Channel.MaxHistory)); var displayMessages = newMessages.Skip(Math.Max(0, newMessages.Count() - Channel.MAX_HISTORY));
Message lastMessage = chatLines.LastOrDefault()?.Message; Message lastMessage = chatLines.LastOrDefault()?.Message;
@ -103,19 +105,18 @@ namespace osu.Game.Overlays.Chat
lastMessage = message; lastMessage = message;
} }
if (scroll.IsScrolledToEnd(10) || !chatLines.Any() || newMessages.Any(m => m is LocalMessage))
scrollToEnd();
var staleMessages = chatLines.Where(c => c.LifetimeEnd == double.MaxValue).ToArray(); var staleMessages = chatLines.Where(c => c.LifetimeEnd == double.MaxValue).ToArray();
int count = staleMessages.Length - Channel.MAX_HISTORY; int count = staleMessages.Length - Channel.MAX_HISTORY;
for (int i = 0; i < count; i++) for (int i = 0; i < count; i++)
{ {
var d = staleMessages[i]; var d = staleMessages[i];
if (!scroll.IsScrolledToEnd(10)) scroll.OffsetScrollPosition(-d.DrawHeight);
scroll.OffsetScrollPosition(-d.DrawHeight);
d.Expire(); d.Expire();
} }
if (shouldScrollToEnd)
scrollToEnd();
} }
private void pendingMessageResolved(Message existing, Message updated) private void pendingMessageResolved(Message existing, Message updated)