diff --git a/osu.Game/Localisation/ChatStrings.cs b/osu.Game/Localisation/ChatStrings.cs
index 7bd284a94ed5..6b0a6bd8e1e7 100644
--- a/osu.Game/Localisation/ChatStrings.cs
+++ b/osu.Game/Localisation/ChatStrings.cs
@@ -19,6 +19,11 @@ public static class ChatStrings
///
public static LocalisableString HeaderDescription => new TranslatableString(getKey(@"header_description"), @"join the real-time discussion");
+ ///
+ /// "Mention"
+ ///
+ public static LocalisableString MentionUser => new TranslatableString(getKey(@"mention_user"), @"Mention");
+
private static string getKey(string key) => $"{prefix}:{key}";
}
}
diff --git a/osu.Game/Online/Chat/StandAloneChatDisplay.cs b/osu.Game/Online/Chat/StandAloneChatDisplay.cs
index 0a5434822b47..e3b50373672e 100644
--- a/osu.Game/Online/Chat/StandAloneChatDisplay.cs
+++ b/osu.Game/Online/Chat/StandAloneChatDisplay.cs
@@ -25,6 +25,7 @@ namespace osu.Game.Online.Chat
///
public partial class StandAloneChatDisplay : CompositeDrawable
{
+ [Cached]
public readonly Bindable Channel = new Bindable();
protected readonly ChatTextBox TextBox;
diff --git a/osu.Game/Overlays/Chat/DrawableUsername.cs b/osu.Game/Overlays/Chat/DrawableUsername.cs
index 8cd16047f33b..031a0b6ae2f5 100644
--- a/osu.Game/Overlays/Chat/DrawableUsername.cs
+++ b/osu.Game/Overlays/Chat/DrawableUsername.cs
@@ -4,6 +4,7 @@
using System;
using System.Collections.Generic;
using osu.Framework.Allocation;
+using osu.Framework.Bindables;
using osu.Framework.Extensions.Color4Extensions;
using osu.Framework.Graphics;
using osu.Framework.Graphics.Containers;
@@ -24,6 +25,7 @@
using osu.Game.Resources.Localisation.Web;
using osuTK;
using osuTK.Graphics;
+using ChatStrings = osu.Game.Localisation.ChatStrings;
namespace osu.Game.Overlays.Chat
{
@@ -65,6 +67,9 @@ public override float Width
[Resolved(canBeNull: true)]
private UserProfileOverlay? profileOverlay { get; set; }
+ [Resolved]
+ private Bindable? currentChannel { get; set; }
+
private readonly APIUser user;
private readonly OsuSpriteText drawableText;
@@ -156,6 +161,14 @@ public MenuItem[] ContextMenuItems
if (!user.Equals(api.LocalUser.Value))
items.Add(new OsuMenuItem(UsersStrings.CardSendMessage, MenuItemType.Standard, openUserChannel));
+ if (currentChannel?.Value != null)
+ {
+ items.Add(new OsuMenuItem(ChatStrings.MentionUser, MenuItemType.Standard, () =>
+ {
+ currentChannel.Value.TextBoxMessage.Value += $"@{user.Username} ";
+ }));
+ }
+
return items.ToArray();
}
}