Skip to content

Commit 0eef568

Browse files
committed
Add cursor confining support with Ctrl+Alt+Left/Right shortcut key for improve user experience for some applications.
1 parent c44a6ca commit 0eef568

File tree

2 files changed

+30
-0
lines changed

2 files changed

+30
-0
lines changed

NanaBox/MainWindow.cpp

Lines changed: 26 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1077,6 +1077,9 @@ void NanaBox::MainWindow::RdpClientOnDisconnected(
10771077
{
10781078
UNREFERENCED_PARAMETER(DisconnectReason);
10791079

1080+
this->m_MouseCaptureMode = false;
1081+
::ClipCursor(nullptr);
1082+
10801083
this->m_RdpNamedPipe->TerminateInstance();
10811084
this->m_RdpNamedPipe = nullptr;
10821085

@@ -1191,6 +1194,27 @@ void NanaBox::MainWindow::RdpClientOnConfirmClose(
11911194
this->PostMessageW(WM_CLOSE);
11921195
}
11931196

1197+
void NanaBox::MainWindow::RdpClientOnFocusReleased(
1198+
_In_ INT Direction)
1199+
{
1200+
UNREFERENCED_PARAMETER(Direction);
1201+
1202+
this->m_MouseCaptureMode = !this->m_MouseCaptureMode;
1203+
1204+
if (this->m_MouseCaptureMode)
1205+
{
1206+
RECT WindowRect;
1207+
if (this->m_RdpClientWindow.GetWindowRect(&WindowRect))
1208+
{
1209+
::ClipCursor(&WindowRect);
1210+
}
1211+
}
1212+
else
1213+
{
1214+
::ClipCursor(nullptr);
1215+
}
1216+
}
1217+
11941218
void NanaBox::MainWindow::RdpClientInitialize()
11951219
{
11961220
this->m_RdpClient = winrt::make_self<NanaBox::RdpClient>();
@@ -1297,6 +1321,8 @@ void NanaBox::MainWindow::RdpClientInitialize()
12971321
{ this, &NanaBox::MainWindow::RdpClientOnRequestContainerMinimize });
12981322
this->m_RdpClient->OnConfirmClose.add(
12991323
{ this, &NanaBox::MainWindow::RdpClientOnConfirmClose });
1324+
this->m_RdpClient->OnFocusReleased.add(
1325+
{ this, &NanaBox::MainWindow::RdpClientOnFocusReleased });
13001326

13011327
this->SetTimer(
13021328
NanaBox::MainWindowTimerEvents::SyncDisplaySettings,

NanaBox/MainWindow.h

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -120,6 +120,7 @@ namespace NanaBox
120120
RECT m_RememberedMainWindowRect;
121121
LONG_PTR m_RememberedMainWindowStyle;
122122
std::wstring m_WindowTitle;
123+
bool m_MouseCaptureMode = false;
123124

124125
void InitializeVirtualMachine();
125126

@@ -140,6 +141,9 @@ namespace NanaBox
140141
void RdpClientOnConfirmClose(
141142
_Out_ VARIANT_BOOL* pfAllowClose);
142143

144+
void RdpClientOnFocusReleased(
145+
_In_ INT Direction);
146+
143147
void RdpClientInitialize();
144148

145149
void RdpClientUninitialize();

0 commit comments

Comments
 (0)