Skip to content

Commit b6eae86

Browse files
committed
[Bug fix] Fixed a bug where MarkdownTextBlock loses all events after re-load
[Bug fix] Fixed a bug where MarkdownTextBlock loses all events after re-load. Issue is described here: 0x7c13/Notepads#377
1 parent abf77ed commit b6eae86

File tree

2 files changed

+21
-4
lines changed

2 files changed

+21
-4
lines changed

Microsoft.Toolkit.Uwp.UI.Controls/MarkdownTextBlock/MarkdownTextBlock.Methods.cs

Lines changed: 20 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,9 @@ private void RenderMarkdown()
4848
// Disconnect from OnClick handlers.
4949
UnhookListeners();
5050

51+
// Clear everything that exists.
52+
_listeningHyperlinks.Clear();
53+
5154
var markdownRenderedArgs = new MarkdownRenderedEventArgs(null);
5255

5356
// Make sure we have something to parse.
@@ -174,9 +177,25 @@ private void RenderMarkdown()
174177
MarkdownRendered?.Invoke(this, markdownRenderedArgs);
175178
}
176179

180+
private void HookListeners()
181+
{
182+
// Re-hook all hyper link events we currently have
183+
foreach (object link in _listeningHyperlinks)
184+
{
185+
if (link is Hyperlink hyperlink)
186+
{
187+
hyperlink.Click += Hyperlink_Click;
188+
}
189+
else if (link is Image image)
190+
{
191+
image.Tapped += NewImagelink_Tapped;
192+
}
193+
}
194+
}
195+
177196
private void UnhookListeners()
178197
{
179-
// Clear any hyper link events if we have any
198+
// Unhook any hyper link events if we have any
180199
foreach (object link in _listeningHyperlinks)
181200
{
182201
if (link is Hyperlink hyperlink)
@@ -188,9 +207,6 @@ private void UnhookListeners()
188207
image.Tapped -= NewImagelink_Tapped;
189208
}
190209
}
191-
192-
// Clear everything that exists.
193-
_listeningHyperlinks.Clear();
194210
}
195211

196212
/// <summary>

Microsoft.Toolkit.Uwp.UI.Controls/MarkdownTextBlock/MarkdownTextBlock.cs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@ private void ThemeListener_ThemeChanged(Helpers.ThemeListener sender)
4747
private void OnLoaded(object sender, RoutedEventArgs e)
4848
{
4949
RegisterThemeChangedHandler();
50+
HookListeners();
5051

5152
// Register for property callbacks that are owned by our parent class.
5253
_fontSizePropertyToken = RegisterPropertyChangedCallback(FontSizeProperty, OnPropertyChanged);

0 commit comments

Comments
 (0)