diff --git a/CHANGELOG.md b/CHANGELOG.md index 942d48b8b..4ac644e7a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,9 +5,10 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), ## [Unreleased] ### Added +- #1770: Added missing RDP performance settings - #545: Option to minimize to system tray on closing -- #283: Support for native PowerShell remoting as new protocol - #420: SSH tunneling implemented +- #283: Support for native PowerShell remoting as new protocol ### Changed - #1767: Turned about window into a simple popup form - #1766: Converted components check page into options page diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs index 064773a21..a7086d279 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsDeserializerMremotengFormat.cs @@ -245,6 +245,34 @@ namespace mRemoteNG.Config.Serializers.Csv connectionRecord.EnableDesktopComposition = value; } + if (headers.Contains("DisableFullWindowDrag")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableFullWindowDrag")], out value)) + connectionRecord.DisableFullWindowDrag = value; + } + + if (headers.Contains("DisableMenuAnimations")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableMenuAnimations")], out value)) + connectionRecord.DisableMenuAnimations = value; + } + + if (headers.Contains("DisableCursorShadow")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableCursorShadow")], out value)) + connectionRecord.DisableCursorShadow = value; + } + + if (headers.Contains("DisableCursorBlinking")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("DisableCursorBlinking")], out value)) + connectionRecord.DisableCursorBlinking = value; + } + if (headers.Contains("CacheBitmaps")) { bool value; @@ -442,6 +470,34 @@ namespace mRemoteNG.Config.Serializers.Csv connectionRecord.Inheritance.EnableDesktopComposition = value; } + if (headers.Contains("InheritDisableFullWindowDrag")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableFullWindowDrag")], out value)) + connectionRecord.Inheritance.DisableFullWindowDrag = value; + } + + if (headers.Contains("InheritDisableMenuAnimations")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableMenuAnimations")], out value)) + connectionRecord.Inheritance.DisableMenuAnimations = value; + } + + if (headers.Contains("InheritDisableCursorShadow")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableCursorShadow")], out value)) + connectionRecord.Inheritance.DisableCursorShadow = value; + } + + if (headers.Contains("InheritDisableCursorBlinking")) + { + bool value; + if (bool.TryParse(connectionCsv[headers.IndexOf("InheritDisableCursorBlinking")], out value)) + connectionRecord.Inheritance.DisableCursorBlinking = value; + } + if (headers.Contains("InheritDomain")) { bool value; diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs index b49091599..574fe1b1a 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Csv/CsvConnectionsSerializerMremotengFormat.cs @@ -57,7 +57,7 @@ namespace mRemoteNG.Config.Serializers.Csv sb.Append("Domain;"); sb.Append("Hostname;Port;VmId;Protocol;SSHTunnelConnectionName;SSHOptions;PuttySession;ConnectToConsole;UseCredSsp;UseVmId;UseEnhancedMode;RenderingEngine;ICAEncryptionStrength;RDPAuthenticationLevel;" + - "LoadBalanceInfo;Colors;Resolution;AutomaticResize;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;" + + "LoadBalanceInfo;Colors;Resolution;AutomaticResize;DisplayWallpaper;DisplayThemes;EnableFontSmoothing;EnableDesktopComposition;DisableFullWindowDrag;DisableMenuAnimations;DisableCursorShadow;DisableCursorBlinking;" + "CacheBitmaps;RedirectDiskDrives;RedirectPorts;RedirectPrinters;RedirectClipboard;RedirectSmartCards;RedirectSound;RedirectKeys;" + "PreExtApp;PostExtApp;MacAddress;UserField;ExtApp;Favorite;VNCCompression;VNCEncoding;VNCAuthMode;VNCProxyType;VNCProxyIP;" + "VNCProxyPort;VNCProxyUsername;VNCProxyPassword;VNCColors;VNCSmartSizeMode;VNCViewOnly;RDGatewayUsageMethod;RDGatewayHostname;" + @@ -65,7 +65,7 @@ namespace mRemoteNG.Config.Serializers.Csv if (_saveFilter.SaveInheritance) sb.Append("InheritCacheBitmaps;InheritColors;InheritDescription;InheritDisplayThemes;InheritDisplayWallpaper;" + - "InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;" + + "InheritEnableFontSmoothing;InheritEnableDesktopComposition;InheritDisableFullWindowDrag;InheritDisableMenuAnimations;InheritDisableCursorShadow;InheritDisableCursorBlinking;InheritDomain;InheritIcon;InheritPanel;InheritPassword;InheritPort;" + "InheritProtocol;InheritSSHTunnelConnectionName;InheritSSHOptions;InheritPuttySession;InheritRedirectDiskDrives;InheritRedirectKeys;InheritRedirectPorts;InheritRedirectPrinters;" + "InheritRedirectClipboard;InheritRedirectSmartCards;InheritRedirectSound;InheritResolution;InheritAutomaticResize;" + "InheritUseConsoleSession;InheritUseCredSsp;InheritUseVmId;InheritUseEnhancedMode;InheritVmId;InheritRenderingEngine;InheritUsername;InheritICAEncryptionStrength;" + diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs index d435735be..e22c5dc0a 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableDeserializer.cs @@ -119,6 +119,10 @@ namespace mRemoteNG.Config.Serializers.MsSql connectionInfo.DisplayThemes = (bool)dataRow["DisplayThemes"]; connectionInfo.EnableFontSmoothing = (bool)dataRow["EnableFontSmoothing"]; connectionInfo.EnableDesktopComposition = (bool)dataRow["EnableDesktopComposition"]; + connectionInfo.DisableFullWindowDrag = (bool)dataRow["DisableFullWindowDrag"]; + connectionInfo.DisableMenuAnimations = (bool)dataRow["DisableMenuAnimations"]; + connectionInfo.DisableCursorShadow = (bool)dataRow["DisableCursorShadow"]; + connectionInfo.DisableCursorBlinking = (bool)dataRow["DisableCursorBlinking"]; connectionInfo.CacheBitmaps = (bool)dataRow["CacheBitmaps"]; connectionInfo.RedirectDiskDrives = (bool)dataRow["RedirectDiskDrives"]; connectionInfo.RedirectPorts = (bool)dataRow["RedirectPorts"]; @@ -177,6 +181,10 @@ namespace mRemoteNG.Config.Serializers.MsSql connectionInfo.Inheritance.DisplayWallpaper = (bool)dataRow["InheritDisplayWallpaper"]; connectionInfo.Inheritance.EnableFontSmoothing = (bool)dataRow["InheritEnableFontSmoothing"]; connectionInfo.Inheritance.EnableDesktopComposition = (bool)dataRow["InheritEnableDesktopComposition"]; + connectionInfo.Inheritance.DisableFullWindowDrag = (bool)dataRow["InheritDisableFullWindowDrag"]; + connectionInfo.Inheritance.DisableMenuAnimations = (bool)dataRow["InheritDisableMenuAnimations"]; + connectionInfo.Inheritance.DisableCursorShadow = (bool)dataRow["InheritDisableCursorShadow"]; + connectionInfo.Inheritance.DisableCursorBlinking = (bool)dataRow["InheritDisableCursorBlinking"]; connectionInfo.Inheritance.Domain = (bool)dataRow["InheritDomain"]; connectionInfo.Inheritance.Icon = (bool)dataRow["InheritIcon"]; connectionInfo.Inheritance.Panel = (bool)dataRow["InheritPanel"]; diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs index 7b9a7a255..6ebe08638 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/MsSql/DataTableSerializer.cs @@ -125,6 +125,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataTable.Columns.Add("DisplayThemes", typeof(bool)); dataTable.Columns.Add("EnableFontSmoothing", typeof(bool)); dataTable.Columns.Add("EnableDesktopComposition", typeof(bool)); + dataTable.Columns.Add("DisableFullWindowDrag", typeof(bool)); + dataTable.Columns.Add("DisableMenuAnimations", typeof(bool)); + dataTable.Columns.Add("DisableCursorShadow", typeof(bool)); + dataTable.Columns.Add("DisableCursorBlinking", typeof(bool)); dataTable.Columns.Add("CacheBitmaps", typeof(bool)); dataTable.Columns.Add("RedirectDiskDrives", typeof(bool)); dataTable.Columns.Add("RedirectPorts", typeof(bool)); @@ -164,6 +168,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataTable.Columns.Add("InheritDisplayWallpaper", typeof(bool)); dataTable.Columns.Add("InheritEnableFontSmoothing", typeof(bool)); dataTable.Columns.Add("InheritEnableDesktopComposition", typeof(bool)); + dataTable.Columns.Add("InheritDisableFullWindowDrag", typeof(bool)); + dataTable.Columns.Add("InheritDisableMenuAnimations", typeof(bool)); + dataTable.Columns.Add("InheritDisableCursorShadow", typeof(bool)); + dataTable.Columns.Add("InheritDisableCursorBlinking", typeof(bool)); dataTable.Columns.Add("InheritDomain", typeof(bool)); dataTable.Columns.Add("InheritIcon", typeof(bool)); dataTable.Columns.Add("InheritPanel", typeof(bool)); @@ -297,6 +305,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["DisplayThemes"].Equals(connectionInfo.DisplayThemes) && dataRow["EnableFontSmoothing"].Equals(connectionInfo.EnableFontSmoothing) && dataRow["EnableDesktopComposition"].Equals(connectionInfo.EnableDesktopComposition) && + dataRow["DisableFullWindowDrag"].Equals(connectionInfo.DisableFullWindowDrag) && + dataRow["DisableMenuAnimations"].Equals(connectionInfo.DisableMenuAnimations) && + dataRow["DisableCursorShadow"].Equals(connectionInfo.DisableCursorShadow) && + dataRow["DisableCursorBlinking"].Equals(connectionInfo.DisableCursorBlinking) && dataRow["CacheBitmaps"].Equals(connectionInfo.CacheBitmaps) && dataRow["RedirectDiskDrives"].Equals(connectionInfo.RedirectDiskDrives) && dataRow["RedirectPorts"].Equals(connectionInfo.RedirectPorts) && @@ -343,6 +355,10 @@ namespace mRemoteNG.Config.Serializers.MsSql dataRow["InheritDisplayWallpaper"].Equals(connectionInfo.Inheritance.DisplayWallpaper) && dataRow["InheritEnableFontSmoothing"].Equals(connectionInfo.Inheritance.EnableFontSmoothing) && dataRow["InheritEnableDesktopComposition"].Equals(connectionInfo.Inheritance.EnableDesktopComposition) && + dataRow["InheritDisableFullWindowDrag"].Equals(connectionInfo.Inheritance.DisableFullWindowDrag) && + dataRow["InheritDisableMenuAnimations"].Equals(connectionInfo.Inheritance.DisableMenuAnimations) && + dataRow["InheritDisableCursorShadow"].Equals(connectionInfo.Inheritance.DisableCursorShadow) && + dataRow["InheritDisableCursorBlinking"].Equals(connectionInfo.Inheritance.DisableCursorBlinking) && dataRow["InheritDomain"].Equals(connectionInfo.Inheritance.Domain) && dataRow["InheritIcon"].Equals(connectionInfo.Inheritance.Icon) && dataRow["InheritPanel"].Equals(connectionInfo.Inheritance.Panel) && diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs index 0d00a088d..43d4f3eda 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionNodeSerializer27.cs @@ -101,6 +101,14 @@ namespace mRemoteNG.Config.Serializers.Xml connectionInfo.EnableFontSmoothing.ToString().ToLowerInvariant())); element.Add(new XAttribute("EnableDesktopComposition", connectionInfo.EnableDesktopComposition.ToString().ToLowerInvariant())); + element.Add(new XAttribute("DisableFullWindowDrag", + connectionInfo.DisableFullWindowDrag.ToString().ToLowerInvariant())); + element.Add(new XAttribute("DisableMenuAnimations", + connectionInfo.DisableMenuAnimations.ToString().ToLowerInvariant())); + element.Add(new XAttribute("DisableCursorShadow", + connectionInfo.DisableCursorShadow.ToString().ToLowerInvariant())); + element.Add(new XAttribute("DisableCursorBlinking", + connectionInfo.DisableCursorBlinking.ToString().ToLowerInvariant())); element.Add(new XAttribute("CacheBitmaps", connectionInfo.CacheBitmaps.ToString().ToLowerInvariant())); element.Add(new XAttribute("RedirectDiskDrives", connectionInfo.RedirectDiskDrives.ToString().ToLowerInvariant())); @@ -183,6 +191,18 @@ namespace mRemoteNG.Config.Serializers.Xml element.Add(new XAttribute("InheritEnableDesktopComposition", connectionInfo .Inheritance.EnableDesktopComposition.ToString().ToLowerInvariant())); + element.Add(new XAttribute("InheritDisableFullWindowDrag", + connectionInfo + .Inheritance.DisableFullWindowDrag.ToString().ToLowerInvariant())); + element.Add(new XAttribute("InheritDisableMenuAnimations", + connectionInfo + .Inheritance.DisableMenuAnimations.ToString().ToLowerInvariant())); + element.Add(new XAttribute("InheritDisableCursorShadow", + connectionInfo + .Inheritance.DisableCursorShadow.ToString().ToLowerInvariant())); + element.Add(new XAttribute("InheritDisableCursorBlinking", + connectionInfo + .Inheritance.DisableCursorBlinking.ToString().ToLowerInvariant())); element.Add(new XAttribute("InheritDomain", connectionInfo.Inheritance.Domain.ToString().ToLowerInvariant())); element.Add( @@ -316,6 +336,10 @@ namespace mRemoteNG.Config.Serializers.Xml element.Add(new XAttribute("InheritDisplayWallpaper", falseString)); element.Add(new XAttribute("InheritEnableFontSmoothing", falseString)); element.Add(new XAttribute("InheritEnableDesktopComposition", falseString)); + element.Add(new XAttribute("InheritDisableFullWindowDrag", falseString)); + element.Add(new XAttribute("InheritDisableMenuAnimations", falseString)); + element.Add(new XAttribute("InheritDisableCursorShadow", falseString)); + element.Add(new XAttribute("InheritDisableCursorBlinking", falseString)); element.Add(new XAttribute("InheritDomain", falseString)); element.Add(new XAttribute("InheritIcon", falseString)); element.Add(new XAttribute("InheritPanel", falseString)); diff --git a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs index dcd6ffa5c..c1e8ed514 100644 --- a/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs +++ b/mRemoteV1/Config/Serializers/ConnectionSerializers/Xml/XmlConnectionsDeserializer.cs @@ -545,6 +545,10 @@ namespace mRemoteNG.Config.Serializers.Xml connectionInfo.RdpVersion = xmlnode.GetAttributeAsEnum("RdpVersion", RdpVersion.Highest); connectionInfo.SSHTunnelConnectionName = xmlnode.GetAttributeAsString("SSHTunnelConnectionName"); connectionInfo.SSHOptions = xmlnode.GetAttributeAsString("SSHOptions"); + connectionInfo.DisableFullWindowDrag = xmlnode.GetAttributeAsBool("DisableFullWindowDrag"); + connectionInfo.DisableMenuAnimations = xmlnode.GetAttributeAsBool("DisableMenuAnimations"); + connectionInfo.DisableCursorShadow = xmlnode.GetAttributeAsBool("DisableCursorShadow"); + connectionInfo.DisableCursorBlinking = xmlnode.GetAttributeAsBool("DisableCursorBlinking"); connectionInfo.Inheritance.RedirectClipboard = xmlnode.GetAttributeAsBool("InheritRedirectClipboard"); connectionInfo.Inheritance.Favorite = xmlnode.GetAttributeAsBool("InheritFavorite"); connectionInfo.Inheritance.RdpVersion = xmlnode.GetAttributeAsBool("InheritRdpVersion"); @@ -553,6 +557,10 @@ namespace mRemoteNG.Config.Serializers.Xml connectionInfo.Inheritance.UseEnhancedMode = xmlnode.GetAttributeAsBool("InheritUseEnhancedMode"); connectionInfo.Inheritance.SSHTunnelConnectionName = xmlnode.GetAttributeAsBool("InheritSSHTunnelConnectionName"); connectionInfo.Inheritance.SSHOptions = xmlnode.GetAttributeAsBool("InheritSSHOptions"); + connectionInfo.Inheritance.DisableFullWindowDrag = xmlnode.GetAttributeAsBool("InheritDisableFullWindowDrag"); + connectionInfo.Inheritance.DisableMenuAnimations = xmlnode.GetAttributeAsBool("InheritDisableMenuAnimations"); + connectionInfo.Inheritance.DisableCursorShadow = xmlnode.GetAttributeAsBool("InheritDisableCursorShadow"); + connectionInfo.Inheritance.DisableCursorBlinking = xmlnode.GetAttributeAsBool("InheritDisableCursorBlinking"); } } catch (Exception ex) diff --git a/mRemoteV1/Connection/AbstractConnectionRecord.cs b/mRemoteV1/Connection/AbstractConnectionRecord.cs index 6b97759be..6dc7a1cd8 100644 --- a/mRemoteV1/Connection/AbstractConnectionRecord.cs +++ b/mRemoteV1/Connection/AbstractConnectionRecord.cs @@ -59,6 +59,10 @@ namespace mRemoteNG.Connection private bool _displayThemes; private bool _enableFontSmoothing; private bool _enableDesktopComposition; + private bool _disableFullWindowDrag; + private bool _disableMenuAnimations; + private bool _disableCursorShadow; + private bool _disableCursorBlinking; private bool _redirectKeys; private bool _redirectDiskDrives; @@ -536,6 +540,49 @@ namespace mRemoteNG.Connection set => SetField(ref _enableDesktopComposition, value, "EnableDesktopComposition"); } + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 5), + LocalizedAttributes.LocalizedDisplayName(nameof(Language.strPropertyNameDisableFullWindowDrag)), + LocalizedAttributes.LocalizedDescription(nameof(Language.strPropertyDescriptionDisableFullWindowDrag)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter)), + UsedInProtocol(ProtocolType.RDP)] + public bool DisableFullWindowDrag + { + get => GetPropertyValue("DisableFullWindowDrag", _disableFullWindowDrag); + set => SetField(ref _disableFullWindowDrag, value, "DisableFullWindowDrag"); + } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 5), + LocalizedAttributes.LocalizedDisplayName(nameof(Language.strPropertyNameDisableMenuAnimations)), + LocalizedAttributes.LocalizedDescription(nameof(Language.strPropertyDescriptionDisableMenuAnimations)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter)), + UsedInProtocol(ProtocolType.RDP)] + public bool DisableMenuAnimations + { + get => GetPropertyValue("DisableMenuAnimations", _disableMenuAnimations); + set => SetField(ref _disableMenuAnimations, value, "DisableMenuAnimations"); + } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 5), + LocalizedAttributes.LocalizedDisplayName(nameof(Language.strPropertyNameDisableCursorShadow)), + LocalizedAttributes.LocalizedDescription(nameof(Language.strPropertyDescriptionDisableCursorShadow)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter)), + UsedInProtocol(ProtocolType.RDP)] + public bool DisableCursorShadow + { + get => GetPropertyValue("DisableCursorShadow", _disableCursorShadow); + set => SetField(ref _disableCursorShadow, value, "DisableCursorShadow"); + } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 5), + LocalizedAttributes.LocalizedDisplayName(nameof(Language.strPropertyNameDisableCursorShadow)), + LocalizedAttributes.LocalizedDescription(nameof(Language.strPropertyDescriptionDisableCursorShadow)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter)), + UsedInProtocol(ProtocolType.RDP)] + public bool DisableCursorBlinking + { + get => GetPropertyValue("DisableCursorBlinking", _disableCursorBlinking); + set => SetField(ref _disableCursorBlinking, value, "DisableCursorBlinking"); + } #endregion #region Redirect diff --git a/mRemoteV1/Connection/ConnectionInfoInheritance.cs b/mRemoteV1/Connection/ConnectionInfoInheritance.cs index 37c6b8846..6665005dd 100644 --- a/mRemoteV1/Connection/ConnectionInfoInheritance.cs +++ b/mRemoteV1/Connection/ConnectionInfoInheritance.cs @@ -277,6 +277,30 @@ namespace mRemoteNG.Connection TypeConverter(typeof(MiscTools.YesNoTypeConverter))] public bool EnableDesktopComposition { get; set; } + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 6), + LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.strPropertyNameDisableFullWindowDrag)), + LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.strPropertyDescriptionDisableFullWindowDrag)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter))] + public bool DisableFullWindowDrag { get; set; } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 6), + LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.strPropertyNameDisableMenuAnimations)), + LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.strPropertyDescriptionDisableMenuAnimations)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter))] + public bool DisableMenuAnimations { get; set; } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 6), + LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.strPropertyNameDisableCursorShadow)), + LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.strPropertyDescriptionDisableCursorShadow)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter))] + public bool DisableCursorShadow { get; set; } + + [LocalizedAttributes.LocalizedCategory(nameof(Language.strCategoryAppearance), 6), + LocalizedAttributes.LocalizedDisplayNameInherit(nameof(Language.strPropertyNameDisableCursorBlinking)), + LocalizedAttributes.LocalizedDescriptionInherit(nameof(Language.strPropertyDescriptionDisableCursorBlinking)), + TypeConverter(typeof(MiscTools.YesNoTypeConverter))] + public bool DisableCursorBlinking { get; set; } + #endregion #region Redirect diff --git a/mRemoteV1/Connection/Protocol/RDP/RDPPerformanceFlags.cs b/mRemoteV1/Connection/Protocol/RDP/RDPPerformanceFlags.cs index 59924179c..6e8eafcd3 100644 --- a/mRemoteV1/Connection/Protocol/RDP/RDPPerformanceFlags.cs +++ b/mRemoteV1/Connection/Protocol/RDP/RDPPerformanceFlags.cs @@ -7,25 +7,25 @@ namespace mRemoteNG.Connection.Protocol.RDP [Description("strRDPDisableWallpaper")] DisableWallpaper = 0x1, -// [Description("strRDPDisableFullWindowdrag")] -// DisableFullWindowDrag = 0x2, - -// [Description("strRDPDisableMenuAnimations")] -// DisableMenuAnimations = 0x4, + [Description("strRDPDisableFullWindowdrag")] + DisableFullWindowDrag = 0x2, + + [Description("strRDPDisableMenuAnimations")] + DisableMenuAnimations = 0x4, [Description("strRDPDisableThemes")] DisableThemes = 0x8, -// [Description("strRDPDisableCursorShadow")] -// DisableCursorShadow = 0x20, + [Description("strRDPDisableCursorShadow")] + DisableCursorShadow = 0x20, -// [Description("strRDPDisableCursorblinking")] -// DisableCursorBlinking = 0x40, + [Description("strRDPDisableCursorblinking")] + DisableCursorBlinking = 0x40, [Description("strRDPEnableFontSmoothing")] EnableFontSmoothing = 0x80, [Description("strRDPEnableDesktopComposition")] - EnableDesktopComposition = 0x100 + EnableDesktopComposition = 0x100, } } \ No newline at end of file diff --git a/mRemoteV1/Connection/Protocol/RDP/RdpProtocol6.cs b/mRemoteV1/Connection/Protocol/RDP/RdpProtocol6.cs index afd9af2c8..ed724a1fe 100644 --- a/mRemoteV1/Connection/Protocol/RDP/RdpProtocol6.cs +++ b/mRemoteV1/Connection/Protocol/RDP/RdpProtocol6.cs @@ -603,25 +603,29 @@ namespace mRemoteNG.Connection.Protocol.RDP { var pFlags = 0; if (connectionInfo.DisplayThemes == false) - { pFlags += (int)RDPPerformanceFlags.DisableThemes; - } - + if (connectionInfo.DisplayWallpaper == false) - { pFlags += (int)RDPPerformanceFlags.DisableWallpaper; - } - + if (connectionInfo.EnableFontSmoothing) - { pFlags += (int)RDPPerformanceFlags.EnableFontSmoothing; - } if (connectionInfo.EnableDesktopComposition) - { pFlags += (int)RDPPerformanceFlags.EnableDesktopComposition; - } - + + if (connectionInfo.DisableFullWindowDrag) + pFlags += (int)RDPPerformanceFlags.DisableFullWindowDrag; + + if (connectionInfo.DisableMenuAnimations) + pFlags += (int)RDPPerformanceFlags.DisableMenuAnimations; + + if (connectionInfo.DisableCursorShadow) + pFlags += (int)RDPPerformanceFlags.DisableCursorShadow; + + if (connectionInfo.DisableCursorBlinking) + pFlags += (int)RDPPerformanceFlags.DisableCursorBlinking; + _rdpClient.AdvancedSettings2.PerformanceFlags = pFlags; } catch (Exception ex) diff --git a/mRemoteV1/Documentation/mssql_db_setup.sql b/mRemoteV1/Documentation/mssql_db_setup.sql index b92685496..04085234a 100644 --- a/mRemoteV1/Documentation/mssql_db_setup.sql +++ b/mRemoteV1/Documentation/mssql_db_setup.sql @@ -45,6 +45,13 @@ CREATE TABLE [dbo].[tblCons] ( DisplayThemes bit NOT NULL, EnableFontSmoothing bit NOT NULL, EnableDesktopComposition bit NOT NULL, + + + DisableFullWindowDrag bit NOT NULL, + DisableMenuAnimations bit NOT NULL, + DisableCursorShadow bit NOT NULL, + DisableCursorBlinking bit NOT NULL, + CacheBitmaps bit NOT NULL, RedirectDiskDrives bit NOT NULL, RedirectPorts bit NOT NULL, diff --git a/mRemoteV1/Documentation/mysql_db_setup.sql b/mRemoteV1/Documentation/mysql_db_setup.sql index be28001ab..1946d2428 100644 --- a/mRemoteV1/Documentation/mysql_db_setup.sql +++ b/mRemoteV1/Documentation/mysql_db_setup.sql @@ -48,6 +48,10 @@ CREATE TABLE `tblCons` ( `DisplayThemes` tinyint(1) NOT NULL, `EnableFontSmoothing` tinyint(1) NOT NULL, `EnableDesktopComposition` tinyint(1) NOT NULL, + `DisableFullWindowDrag` tinyint(1) NOT NULL, + `DisableMenuAnimations` tinyint(1) NOT NULL, + `DisableCursorShadow` tinyint(1) NOT NULL, + `DisableCursorBlinking` tinyint(1) NOT NULL, `CacheBitmaps` tinyint(1) NOT NULL, `RedirectDiskDrives` tinyint(1) NOT NULL, `RedirectPorts` tinyint(1) NOT NULL, diff --git a/mRemoteV1/Resources/Language/Language.Designer.cs b/mRemoteV1/Resources/Language/Language.Designer.cs index 0b721a4a4..5c40ede24 100644 --- a/mRemoteV1/Resources/Language/Language.Designer.cs +++ b/mRemoteV1/Resources/Language/Language.Designer.cs @@ -4800,6 +4800,42 @@ namespace mRemoteNG { } } + /// + /// Looks up a localized string similar to Determines whether cursor flashes should be disabled.. + /// + internal static string strPropertyDescriptionDisableCursorBlinking { + get { + return ResourceManager.GetString("strPropertyDescriptionDisableCursorBlinking", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Determines whether a mouse shadow should be visible.. + /// + internal static string strPropertyDescriptionDisableCursorShadow { + get { + return ResourceManager.GetString("strPropertyDescriptionDisableCursorShadow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Determines whether window content is displayed when you drag the window to a new location.. + /// + internal static string strPropertyDescriptionDisableFullWindowDrag { + get { + return ResourceManager.GetString("strPropertyDescriptionDisableFullWindowDrag", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Determines whether menus and windows can be displayed with animation effects in the remote session.. + /// + internal static string strPropertyDescriptionDisableMenuAnimations { + get { + return ResourceManager.GetString("strPropertyDescriptionDisableMenuAnimations", resourceCulture); + } + } + /// /// Looks up a localized string similar to Select yes if the theme of the remote host should be displayed.. /// @@ -5403,6 +5439,42 @@ namespace mRemoteNG { } } + /// + /// Looks up a localized string similar to Disable Cursor Blinking. + /// + internal static string strPropertyNameDisableCursorBlinking { + get { + return ResourceManager.GetString("strPropertyNameDisableCursorBlinking", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Disable Cursor Shadow. + /// + internal static string strPropertyNameDisableCursorShadow { + get { + return ResourceManager.GetString("strPropertyNameDisableCursorShadow", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Disable Full Window Drag. + /// + internal static string strPropertyNameDisableFullWindowDrag { + get { + return ResourceManager.GetString("strPropertyNameDisableFullWindowDrag", resourceCulture); + } + } + + /// + /// Looks up a localized string similar to Disable Menu Animations. + /// + internal static string strPropertyNameDisableMenuAnimations { + get { + return ResourceManager.GetString("strPropertyNameDisableMenuAnimations", resourceCulture); + } + } + /// /// Looks up a localized string similar to Display Themes. /// diff --git a/mRemoteV1/Resources/Language/Language.resx b/mRemoteV1/Resources/Language/Language.resx index 163c4dc02..7345514bd 100644 --- a/mRemoteV1/Resources/Language/Language.resx +++ b/mRemoteV1/Resources/Language/Language.resx @@ -2876,4 +2876,28 @@ Development Channel includes Alphas, Betas & Release Candidates. License + + Determines whether cursor flashes should be disabled. + + + Determines whether a mouse shadow should be visible. + + + Determines whether window content is displayed when you drag the window to a new location. + + + Determines whether menus and windows can be displayed with animation effects in the remote session. + + + Disable Cursor Blinking + + + Disable Cursor Shadow + + + Disable Full Window Drag + + + Disable Menu Animations + \ No newline at end of file