Skip to content

Commit ad31ec6

Browse files
Add some default Sanitization to RichTextEntry (#6333)
* PR time * am dum dont make PRs at 3am * file scoped. I pushed this to the wrong branch initially because I'm stupid * Revert "file scoped. I pushed this to the wrong branch initially because I'm stupid" This reverts commit 9a911ca. * Review * Update API used by content to actually use the default values --------- Co-authored-by: Princess Cheeseballs <[email protected]>
1 parent fe35a24 commit ad31ec6

File tree

3 files changed

+47
-7
lines changed

3 files changed

+47
-7
lines changed

Robust.Client/UserInterface/Controls/OutputPanel.cs

Lines changed: 7 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ public void AddText(string text)
138138

139139
public void AddMessage(FormattedMessage message)
140140
{
141-
var entry = new RichTextEntry(message, this, _tagManager, null);
141+
var entry = new RichTextEntry(message, this, _tagManager);
142142

143143
entry.Update(_tagManager, _getFont(), _getContentBox().Width, UIScale);
144144

@@ -153,7 +153,12 @@ public void AddMessage(FormattedMessage message)
153153
}
154154
}
155155

156-
public void SetMessage(Index index, FormattedMessage message, Type[]? tagsAllowed = null, Color? defaultColor = null)
156+
public void SetMessage(Index index, FormattedMessage message, Color? defaultColor = null)
157+
{
158+
SetMessage(index, message, RichTextEntry.DefaultTags, defaultColor);
159+
}
160+
161+
public void SetMessage(Index index, FormattedMessage message, Type[]? tagsAllowed, Color? defaultColor = null)
157162
{
158163
var atBottom = !_scrollDownButton.Visible;
159164
var oldEntry = _entries[index];

Robust.Client/UserInterface/Controls/RichTextLabel.cs

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,14 +67,24 @@ public RichTextLabel()
6767
VerticalAlignment = VAlignment.Center;
6868
}
6969

70-
public void SetMessage(FormattedMessage message, Type[]? tagsAllowed = null, Color? defaultColor = null)
70+
public void SetMessage(FormattedMessage message, Color? defaultColor = null)
71+
{
72+
SetMessage(message, RichTextEntry.DefaultTags, defaultColor);
73+
}
74+
75+
public void SetMessage(FormattedMessage message, Type[]? tagsAllowed, Color? defaultColor = null)
7176
{
7277
_entry?.RemoveControls();
7378
_entry = new RichTextEntry(message, this, _tagManager, tagsAllowed, defaultColor);
7479
InvalidateMeasure();
7580
}
7681

77-
public void SetMessage(string message, Type[]? tagsAllowed = null, Color? defaultColor = null)
82+
public void SetMessage(string message, Color? defaultColor = null)
83+
{
84+
SetMessage(message, RichTextEntry.DefaultTags, defaultColor);
85+
}
86+
87+
public void SetMessage(string message, Type[]? tagsAllowed, Color? defaultColor = null)
7888
{
7989
var msg = new FormattedMessage();
8090
msg.AddText(message);

Robust.Client/UserInterface/RichTextEntry.cs

Lines changed: 28 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,16 @@ namespace Robust.Client.UserInterface
1919
/// </summary>
2020
internal struct RichTextEntry
2121
{
22+
public static readonly Type[] DefaultTags =
23+
[
24+
typeof(BoldItalicTag),
25+
typeof(BoldTag),
26+
typeof(BulletTag),
27+
typeof(ColorTag),
28+
typeof(HeadingTag),
29+
typeof(ItalicTag)
30+
];
31+
2232
private readonly Color _defaultColor;
2333
private readonly Type[]? _tagsAllowed;
2434

@@ -41,17 +51,32 @@ internal struct RichTextEntry
4151

4252
public readonly Dictionary<int, Control>? Controls;
4353

44-
public RichTextEntry(FormattedMessage message, Control parent, MarkupTagManager tagManager, Type[]? tagsAllowed = null, Color? defaultColor = null)
54+
55+
public RichTextEntry(
56+
FormattedMessage message,
57+
Control parent,
58+
MarkupTagManager tagManager,
59+
Color? defaultColor = null) : this(message, parent, tagManager, DefaultTags, defaultColor)
60+
{
61+
// RichTextEntry constructor but with DefaultTags
62+
}
63+
64+
public RichTextEntry(FormattedMessage message, Control parent, MarkupTagManager tagManager, Type[]? tagsAllowed, Color? defaultColor = null)
4565
{
4666
Message = message;
4767
Height = 0;
4868
Width = 0;
4969
LineBreaks = default;
5070
_defaultColor = defaultColor ?? new(200, 200, 200);
5171
_tagsAllowed = tagsAllowed;
52-
Dictionary<int, Control>? tagControls = null;
72+
Controls = GetControls(parent, tagManager);
73+
}
5374

75+
private readonly Dictionary<int, Control>? GetControls(Control parent, MarkupTagManager tagManager)
76+
{
77+
Dictionary<int, Control>? tagControls = null;
5478
var nodeIndex = -1;
79+
5580
foreach (var node in Message)
5681
{
5782
nodeIndex++;
@@ -71,7 +96,7 @@ public RichTextEntry(FormattedMessage message, Control parent, MarkupTagManager
7196
tagControls.Add(nodeIndex, control);
7297
}
7398

74-
Controls = tagControls;
99+
return tagControls;
75100
}
76101

77102
// TODO RICH TEXT

0 commit comments

Comments
 (0)