Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mRemoteNG/mRemoteNG.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Triendl <daniel@pew.cc>2022-03-18 21:17:46 +0300
committerDaniel Triendl <daniel@pew.cc>2022-03-18 21:33:10 +0300
commit2fb0ab1d91639a0ca483430d60db02869cad8eae (patch)
tree9b034c05e88bddfa5874ee0d6896a1c31d5ada26 /mRemoteNG
parent85f7be1d79cc56793aa9d9341cac6af9ffe3e9fd (diff)
Enable size change without reconnect
Use IMsRdpClient9::UpdateSessionDisplaySettings to dynamically update the session display settings without reconnecting. RDP Version needs to be Rdc9 or Highest for this to work. Fixes #1546
Diffstat (limited to 'mRemoteNG')
-rw-r--r--mRemoteNG/Connection/Protocol/RDP/RdpProtocol8.cs25
-rw-r--r--mRemoteNG/Connection/Protocol/RDP/RdpProtocol9.cs39
2 files changed, 39 insertions, 25 deletions
diff --git a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol8.cs b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol8.cs
index c1cb1057..d3bf69f4 100644
--- a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol8.cs
+++ b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol8.cs
@@ -29,7 +29,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
protected set
{
base.SmartSize = value;
- ReconnectForResize();
+ DoResizeClient();
}
}
@@ -39,7 +39,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
protected set
{
base.Fullscreen = value;
- ReconnectForResize();
+ DoResizeClient();
}
}
@@ -50,19 +50,19 @@ namespace mRemoteNG.Connection.Protocol.RDP
public override void Resize(object sender, EventArgs e)
{
- if (DoResize() && _controlBeginningSize.IsEmpty)
+ if (DoResizeControl() && _controlBeginningSize.IsEmpty)
{
- ReconnectForResize();
+ DoResizeClient();
}
base.Resize(sender, e);
}
public override void ResizeEnd(object sender, EventArgs e)
{
- DoResize();
+ DoResizeControl();
if (!(Control.Size == _controlBeginningSize))
{
- ReconnectForResize();
+ DoResizeClient();
}
_controlBeginningSize = Size.Empty;
}
@@ -72,7 +72,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
return new AxMsRdpClient8NotSafeForScripting();
}
- private void ReconnectForResize()
+ private void DoResizeClient()
{
if (!loginComplete)
return;
@@ -94,8 +94,8 @@ namespace mRemoteNG.Connection.Protocol.RDP
{
var size = Fullscreen
? Screen.FromControl(Control).Bounds.Size
- : Control.Size;
- RdpClient8.Reconnect((uint)size.Width, (uint)size.Height);
+ : Control.Size;
+ UpdateSessionDisplaySettings((uint)size.Width, (uint)size.Height);
}
catch (Exception ex)
{
@@ -106,7 +106,7 @@ namespace mRemoteNG.Connection.Protocol.RDP
}
}
- private bool DoResize()
+ private bool DoResizeControl()
{
Control.Location = InterfaceControl.Location;
// kmscode - this doesn't look right to me. But I'm not aware of any functionality issues with this currently...
@@ -120,5 +120,10 @@ namespace mRemoteNG.Connection.Protocol.RDP
return false;
}
}
+
+ protected virtual void UpdateSessionDisplaySettings(uint width, uint height)
+ {
+ RdpClient8.Reconnect(width, height);
+ }
}
}
diff --git a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol9.cs b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol9.cs
index 64923285..e0527d8b 100644
--- a/mRemoteNG/Connection/Protocol/RDP/RdpProtocol9.cs
+++ b/mRemoteNG/Connection/Protocol/RDP/RdpProtocol9.cs
@@ -1,15 +1,24 @@
-using System.Windows.Forms;
-using AxMSTSCLib;
-
-namespace mRemoteNG.Connection.Protocol.RDP
-{
- public class RdpProtocol9 : RdpProtocol8
- {
- protected override RdpVersion RdpProtocolVersion => RdpVersion.Rdc9;
-
- protected override AxHost CreateActiveXRdpClientControl()
- {
- return new AxMsRdpClient9NotSafeForScripting();
- }
- }
-}
+using System.Windows.Forms;
+using AxMSTSCLib;
+using MSTSCLib;
+
+namespace mRemoteNG.Connection.Protocol.RDP
+{
+ public class RdpProtocol9 : RdpProtocol8
+ {
+ private MsRdpClient9NotSafeForScripting RdpClient9 =>
+ (MsRdpClient9NotSafeForScripting)((AxHost)Control).GetOcx();
+
+ protected override RdpVersion RdpProtocolVersion => RdpVersion.Rdc9;
+
+ protected override AxHost CreateActiveXRdpClientControl()
+ {
+ return new AxMsRdpClient9NotSafeForScripting();
+ }
+
+ protected override void UpdateSessionDisplaySettings(uint width, uint height)
+ {
+ RdpClient9.UpdateSessionDisplaySettings(width, height, width, height, 0, 1, 1);
+ }
+ }
+} \ No newline at end of file