diff --git a/installer/PowerToysSetup/Product.wxs b/installer/PowerToysSetup/Product.wxs
index 3187031e18..e581589a72 100644
--- a/installer/PowerToysSetup/Product.wxs
+++ b/installer/PowerToysSetup/Product.wxs
@@ -421,18 +421,18 @@
-
+
-
+
-
+
diff --git a/src/modules/previewpane/SvgPreviewHandler/Resource.Designer.cs b/src/modules/previewpane/SvgPreviewHandler/Resource.Designer.cs
index 7f5e92d3f7..186e31e9ba 100644
--- a/src/modules/previewpane/SvgPreviewHandler/Resource.Designer.cs
+++ b/src/modules/previewpane/SvgPreviewHandler/Resource.Designer.cs
@@ -8,7 +8,7 @@
//
//------------------------------------------------------------------------------
-namespace SvgPreviewHandler {
+namespace Microsoft.PowerToys.PreviewHandler.Svg {
using System;
@@ -39,7 +39,7 @@ namespace SvgPreviewHandler {
internal static global::System.Resources.ResourceManager ResourceManager {
get {
if (object.ReferenceEquals(resourceMan, null)) {
- global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("SvgPreviewHandler.Resource", typeof(Resource).Assembly);
+ global::System.Resources.ResourceManager temp = new global::System.Resources.ResourceManager("Microsoft.PowerToys.PreviewHandler.Svg.Resource", typeof(Resource).Assembly);
resourceMan = temp;
}
return resourceMan;
diff --git a/src/modules/previewpane/SvgPreviewHandler/SvgPreviewControl.cs b/src/modules/previewpane/SvgPreviewHandler/SvgPreviewControl.cs
index e71af35618..9a78ae7a98 100644
--- a/src/modules/previewpane/SvgPreviewHandler/SvgPreviewControl.cs
+++ b/src/modules/previewpane/SvgPreviewHandler/SvgPreviewControl.cs
@@ -3,22 +3,18 @@
// See the LICENSE file in the project root for more information.
using System;
-using System.Collections.Generic;
using System.Drawing;
using System.IO;
-using System.Linq;
using System.Runtime.InteropServices.ComTypes;
-using System.Runtime.Versioning;
using System.Windows.Forms;
-using System.Xml;
-using System.Xml.Linq;
using Common;
using Common.Utilities;
+using Microsoft.PowerToys.PreviewHandler.Svg.Telemetry.Events;
+using Microsoft.PowerToys.PreviewHandler.Svg.Utilities;
using Microsoft.PowerToys.Telemetry;
using PreviewHandlerCommon;
-using SvgPreviewHandler.Telemetry.Events;
-namespace SvgPreviewHandler
+namespace Microsoft.PowerToys.PreviewHandler.Svg
{
///
/// Implementation of Control for Svg Preview Handler.
@@ -28,17 +24,17 @@ namespace SvgPreviewHandler
///
/// Extended Browser Control to display Svg.
///
- private WebBrowserExt browser;
+ private WebBrowserExt _browser;
///
/// Text box to display the information about blocked elements from Svg.
///
- private RichTextBox textBox;
+ private RichTextBox _textBox;
///
/// Represent if an text box info bar is added for showing message.
///
- private bool infoBarAdded = false;
+ private bool _infoBarAdded;
///
/// Start the preview on the Control.
@@ -46,11 +42,11 @@ namespace SvgPreviewHandler
/// Stream reference to access source file.
public override void DoPreview(T dataSource)
{
- this.InvokeOnControlThread(() =>
+ InvokeOnControlThread(() =>
{
try
{
- this.infoBarAdded = false;
+ _infoBarAdded = false;
string svgData = null;
using (var stream = new StreamWrapper(dataSource as IStream))
{
@@ -63,21 +59,23 @@ namespace SvgPreviewHandler
// Add a info bar on top of the Preview if any blocked element is present.
if (SvgPreviewHandlerHelper.CheckBlockedElements(svgData))
{
- this.infoBarAdded = true;
- this.AddTextBoxControl(Resource.BlockedElementInfoText);
+ _infoBarAdded = true;
+ AddTextBoxControl(Resource.BlockedElementInfoText);
}
- this.AddBrowserControl(svgData);
- this.Resize += this.FormResized;
+ AddBrowserControl(svgData);
+ Resize += FormResized;
base.DoPreview(dataSource);
PowerToysTelemetry.Log.WriteEvent(new SvgFilePreviewed());
}
+#pragma warning disable CA1031 // Do not catch general exception types
catch (Exception ex)
+#pragma warning restore CA1031 // Do not catch general exception types
{
PowerToysTelemetry.Log.WriteEvent(new SvgFilePreviewError { Message = ex.Message });
- this.Controls.Clear();
- this.infoBarAdded = true;
- this.AddTextBoxControl(Resource.SvgNotPreviewedError);
+ Controls.Clear();
+ _infoBarAdded = true;
+ AddTextBoxControl(Resource.SvgNotPreviewedError);
base.DoPreview(dataSource);
}
});
@@ -101,9 +99,9 @@ namespace SvgPreviewHandler
/// Provides data for the resize event.
private void FormResized(object sender, EventArgs e)
{
- if (this.infoBarAdded)
+ if (_infoBarAdded)
{
- this.textBox.Width = this.Width;
+ _textBox.Width = Width;
}
}
@@ -113,14 +111,14 @@ namespace SvgPreviewHandler
/// Svg to display on Browser Control.
private void AddBrowserControl(string svgData)
{
- this.browser = new WebBrowserExt();
- this.browser.DocumentText = svgData;
- this.browser.Dock = DockStyle.Fill;
- this.browser.IsWebBrowserContextMenuEnabled = false;
- this.browser.ScriptErrorsSuppressed = true;
- this.browser.ScrollBarsEnabled = true;
- this.browser.AllowNavigation = false;
- this.Controls.Add(this.browser);
+ _browser = new WebBrowserExt();
+ _browser.DocumentText = svgData;
+ _browser.Dock = DockStyle.Fill;
+ _browser.IsWebBrowserContextMenuEnabled = false;
+ _browser.ScriptErrorsSuppressed = true;
+ _browser.ScrollBarsEnabled = true;
+ _browser.AllowNavigation = false;
+ Controls.Add(_browser);
}
///
@@ -129,16 +127,16 @@ namespace SvgPreviewHandler
/// Message to be displayed in textbox.
private void AddTextBoxControl(string message)
{
- this.textBox = new RichTextBox();
- this.textBox.Text = message;
- this.textBox.BackColor = Color.LightYellow;
- this.textBox.Multiline = true;
- this.textBox.Dock = DockStyle.Top;
- this.textBox.ReadOnly = true;
- this.textBox.ContentsResized += this.RTBContentsResized;
- this.textBox.ScrollBars = RichTextBoxScrollBars.None;
- this.textBox.BorderStyle = BorderStyle.None;
- this.Controls.Add(this.textBox);
+ _textBox = new RichTextBox();
+ _textBox.Text = message;
+ _textBox.BackColor = Color.LightYellow;
+ _textBox.Multiline = true;
+ _textBox.Dock = DockStyle.Top;
+ _textBox.ReadOnly = true;
+ _textBox.ContentsResized += RTBContentsResized;
+ _textBox.ScrollBars = RichTextBoxScrollBars.None;
+ _textBox.BorderStyle = BorderStyle.None;
+ Controls.Add(_textBox);
}
}
}
diff --git a/src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.cs b/src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.cs
index 8b19b046f6..08d6519d73 100644
--- a/src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.cs
+++ b/src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.cs
@@ -7,7 +7,7 @@ using System.Runtime.InteropServices;
using Common;
using Microsoft.PowerToys.Telemetry;
-namespace SvgPreviewHandler
+namespace Microsoft.PowerToys.PreviewHandler.Svg
{
///
/// Extends for Svg Preview Handler.
@@ -15,22 +15,51 @@ namespace SvgPreviewHandler
[Guid("ddee2b8a-6807-48a6-bb20-2338174ff779")]
[ClassInterface(ClassInterfaceType.None)]
[ComVisible(true)]
- public class SvgPreviewHandler : StreamBasedPreviewHandler
+ public class SvgPreviewHandler : StreamBasedPreviewHandler, IDisposable
{
- private SvgPreviewControl svgPreviewControl;
+ private SvgPreviewControl _svgPreviewControl;
+ private bool disposedValue;
///
public override void DoPreview()
{
- this.svgPreviewControl.DoPreview(this.Stream);
+ _svgPreviewControl.DoPreview(Stream);
}
///
protected override IPreviewHandlerControl CreatePreviewHandlerControl()
{
PowerToysTelemetry.Log.WriteEvent(new Telemetry.Events.SvgFileHandlerLoaded());
- this.svgPreviewControl = new SvgPreviewControl();
- return this.svgPreviewControl;
+ _svgPreviewControl = new SvgPreviewControl();
+
+ return _svgPreviewControl;
+ }
+
+ ///
+ /// Disposes objects
+ ///
+ /// Is Disposing
+ protected virtual void Dispose(bool disposing)
+ {
+ if (!disposedValue)
+ {
+ if (disposing)
+ {
+ _svgPreviewControl.Dispose();
+ }
+
+ // TODO: free unmanaged resources (unmanaged objects) and override finalizer
+ // TODO: set large fields to null
+ disposedValue = true;
+ }
+ }
+
+ ///
+ public void Dispose()
+ {
+ // Do not change this code. Put cleanup code in 'Dispose(bool disposing)' method
+ Dispose(disposing: true);
+ GC.SuppressFinalize(this);
}
}
}
diff --git a/src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.csproj b/src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.csproj
index 02f80b13c2..4d9863b0db 100644
--- a/src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.csproj
+++ b/src/modules/previewpane/SvgPreviewHandler/SvgPreviewHandler.csproj
@@ -44,7 +44,7 @@
{DA425894-6E13-404F-8DCB-78584EC0557A}
Library
Properties
- SvgPreviewHandler
+ Microsoft.PowerToys.PreviewHandler.Svg
SvgPreviewHandler
v4.7.2
512
@@ -115,6 +115,7 @@
+
@@ -132,6 +133,11 @@
+
+ 3.3.0
+ runtime; build; native; contentfiles; analyzers; buildtransitive
+ all
+
1.1.118
runtime; build; native; contentfiles; analyzers; buildtransitive
diff --git a/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFileHandlerLoaded.cs b/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFileHandlerLoaded.cs
index 6a3801ba52..1a7309502b 100644
--- a/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFileHandlerLoaded.cs
+++ b/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFileHandlerLoaded.cs
@@ -6,7 +6,7 @@ using System.Diagnostics.Tracing;
using Microsoft.PowerToys.Telemetry;
using Microsoft.PowerToys.Telemetry.Events;
-namespace SvgPreviewHandler.Telemetry.Events
+namespace Microsoft.PowerToys.PreviewHandler.Svg.Telemetry.Events
{
///
/// A telemetry event to be raised when a svg file has been viewed in the preview pane.
diff --git a/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFilePreviewError.cs b/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFilePreviewError.cs
index 1cc5822db4..906bd4abb4 100644
--- a/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFilePreviewError.cs
+++ b/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFilePreviewError.cs
@@ -6,7 +6,7 @@ using System.Diagnostics.Tracing;
using Microsoft.PowerToys.Telemetry;
using Microsoft.PowerToys.Telemetry.Events;
-namespace SvgPreviewHandler.Telemetry.Events
+namespace Microsoft.PowerToys.PreviewHandler.Svg.Telemetry.Events
{
///
/// A telemetry event to be raised when an error has occurred in the preview pane.
diff --git a/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFilePreviewed.cs b/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFilePreviewed.cs
index ca369f9b17..3ac159b548 100644
--- a/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFilePreviewed.cs
+++ b/src/modules/previewpane/SvgPreviewHandler/Telemetry/Events/SvgFilePreviewed.cs
@@ -6,7 +6,7 @@ using System.Diagnostics.Tracing;
using Microsoft.PowerToys.Telemetry;
using Microsoft.PowerToys.Telemetry.Events;
-namespace SvgPreviewHandler.Telemetry.Events
+namespace Microsoft.PowerToys.PreviewHandler.Svg.Telemetry.Events
{
///
/// A telemetry event to be raised when a svg file has been viewed in the preview pane.
diff --git a/src/modules/previewpane/common/Utilities/SvgPreviewHandlerHelper.cs b/src/modules/previewpane/SvgPreviewHandler/Utilities/SvgPreviewHandlerHelper.cs
similarity index 88%
rename from src/modules/previewpane/common/Utilities/SvgPreviewHandlerHelper.cs
rename to src/modules/previewpane/SvgPreviewHandler/Utilities/SvgPreviewHandlerHelper.cs
index ea5e75b056..4ac672ebb7 100644
--- a/src/modules/previewpane/common/Utilities/SvgPreviewHandlerHelper.cs
+++ b/src/modules/previewpane/SvgPreviewHandler/Utilities/SvgPreviewHandlerHelper.cs
@@ -4,15 +4,16 @@
using System;
using System.Collections.Generic;
+using System.Globalization;
using System.Linq;
using System.Xml.Linq;
-namespace Common.Utilities
+namespace Microsoft.PowerToys.PreviewHandler.Svg.Utilities
{
///
/// Helper utilities for Svg Preview Handler.
///
- public class SvgPreviewHandlerHelper
+ public static class SvgPreviewHandlerHelper
{
///
/// Dictionary of elements in lower case that are blocked from Svg for preview pane.
@@ -46,7 +47,7 @@ namespace Common.Utilities
var elements = doc.Descendants().ToList();
foreach (XElement element in elements)
{
- var elementName = element?.Name?.LocalName?.ToLower();
+ var elementName = element?.Name?.LocalName?.ToLower(CultureInfo.CurrentCulture);
if (elementName != null && blockedElementsName.ContainsKey(elementName))
{
foundBlockedElement = true;
@@ -56,7 +57,9 @@ namespace Common.Utilities
}
}
}
+#pragma warning disable CA1031 // Do not catch general exception types
catch (Exception)
+#pragma warning restore CA1031 // Do not catch general exception types
{
}
diff --git a/src/modules/previewpane/UnitTests-SvgPreviewHandler/SvgPreviewControlTests.cs b/src/modules/previewpane/UnitTests-SvgPreviewHandler/SvgPreviewControlTests.cs
index 375b7f1402..a5d10fce72 100644
--- a/src/modules/previewpane/UnitTests-SvgPreviewHandler/SvgPreviewControlTests.cs
+++ b/src/modules/previewpane/UnitTests-SvgPreviewHandler/SvgPreviewControlTests.cs
@@ -4,15 +4,14 @@
using System;
using System.Drawing;
-using System.IO;
using System.Runtime.InteropServices;
using System.Runtime.InteropServices.ComTypes;
using System.Text;
using System.Windows.Forms;
+using Microsoft.PowerToys.PreviewHandler.Svg;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Moq;
using PreviewHandlerCommon;
-using SvgPreviewHandler;
namespace SvgPreviewHandlerUnitTests
{
diff --git a/src/modules/previewpane/UnitTests-SvgPreviewHandler/SvgPreviewHandlerHelperTests.cs b/src/modules/previewpane/UnitTests-SvgPreviewHandler/SvgPreviewHandlerHelperTests.cs
index b4756fad82..b1d5328a46 100644
--- a/src/modules/previewpane/UnitTests-SvgPreviewHandler/SvgPreviewHandlerHelperTests.cs
+++ b/src/modules/previewpane/UnitTests-SvgPreviewHandler/SvgPreviewHandlerHelperTests.cs
@@ -3,7 +3,7 @@
// See the LICENSE file in the project root for more information.
using System.Text;
-using Common.Utilities;
+using Microsoft.PowerToys.PreviewHandler.Svg.Utilities;
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace SvgPreviewHandlerUnitTests
diff --git a/src/modules/previewpane/common/PreviewHandlerCommon.csproj b/src/modules/previewpane/common/PreviewHandlerCommon.csproj
index 11a0948141..f8adb7a9a3 100644
--- a/src/modules/previewpane/common/PreviewHandlerCommon.csproj
+++ b/src/modules/previewpane/common/PreviewHandlerCommon.csproj
@@ -130,7 +130,6 @@
-