[FancyZones]Fix wrap-around Fancy Zone hotkey support on single monitor (#32011)

This commit is contained in:
Dan Rosenberry
2024-04-15 10:57:30 -04:00
committed by GitHub
parent 1dd6ed14cd
commit 406c49bdba
2 changed files with 12 additions and 12 deletions

View File

@@ -118,7 +118,7 @@ bool WindowKeyboardSnap::SnapHotkeyBasedOnZoneNumber(HWND window, DWORD vkCode,
if (activeWorkAreas.contains(current)) if (activeWorkAreas.contains(current))
{ {
const auto& workArea = activeWorkAreas.at(current); const auto& workArea = activeWorkAreas.at(current);
bool moved = MoveByDirectionAndIndex(window, vkCode, FancyZonesSettings::settings().moveWindowAcrossMonitors /* cycle through zones */, workArea.get()); bool moved = MoveByDirectionAndIndex(window, vkCode, true /* cycle through zones */, workArea.get());
if (FancyZonesSettings::settings().restoreSize && !moved) if (FancyZonesSettings::settings().restoreSize && !moved)
{ {

View File

@@ -190,11 +190,11 @@ namespace FancyZonesUnitTests
settings.moveWindowAcrossMonitors = false; settings.moveWindowAcrossMonitors = false;
FancyZonesSettings::instance().SetSettings(settings); FancyZonesSettings::instance().SetSettings(settings);
Assert::IsFalse(windowKeyboardSnap.Snap(window, m_monitor, VK_RIGHT, m_workAreaMap, { m_monitor })); Assert::IsTrue(windowKeyboardSnap.Snap(window, m_monitor, VK_RIGHT, m_workAreaMap, { m_monitor }));
const auto& layoutWindows = m_workAreaMap.at(m_monitor)->GetLayoutWindows(); const auto& layoutWindows = m_workAreaMap.at(m_monitor)->GetLayoutWindows();
Assert::IsTrue(ZoneIndexSet{ 3 } == layoutWindows.GetZoneIndexSetFromWindow(window)); Assert::IsTrue(ZoneIndexSet{ 0 } == layoutWindows.GetZoneIndexSetFromWindow(window));
Assert::IsTrue(ZoneIndexSet{ 3 } == AppZoneHistory::instance().GetAppLastZoneIndexSet(window, m_workAreaId, layoutId())); Assert::IsTrue(ZoneIndexSet{ 0 } == AppZoneHistory::instance().GetAppLastZoneIndexSet(window, m_workAreaId, layoutId()));
} }
TEST_METHOD (MovePrev_NoCycle) TEST_METHOD (MovePrev_NoCycle)
@@ -207,11 +207,11 @@ namespace FancyZonesUnitTests
settings.moveWindowAcrossMonitors = false; settings.moveWindowAcrossMonitors = false;
FancyZonesSettings::instance().SetSettings(settings); FancyZonesSettings::instance().SetSettings(settings);
Assert::IsFalse(windowKeyboardSnap.Snap(window, m_monitor, VK_LEFT, m_workAreaMap, { m_monitor })); Assert::IsTrue(windowKeyboardSnap.Snap(window, m_monitor, VK_LEFT, m_workAreaMap, { m_monitor }));
const auto& layoutWindows = m_workAreaMap.at(m_monitor)->GetLayoutWindows(); const auto& layoutWindows = m_workAreaMap.at(m_monitor)->GetLayoutWindows();
Assert::IsTrue(ZoneIndexSet{ 0 } == layoutWindows.GetZoneIndexSetFromWindow(window)); Assert::IsTrue(ZoneIndexSet{ 3 } == layoutWindows.GetZoneIndexSetFromWindow(window));
Assert::IsTrue(ZoneIndexSet{ 0 } == AppZoneHistory::instance().GetAppLastZoneIndexSet(window, m_workAreaId, layoutId())); Assert::IsTrue(ZoneIndexSet{ 3 } == AppZoneHistory::instance().GetAppLastZoneIndexSet(window, m_workAreaId, layoutId()));
} }
}; };
@@ -418,13 +418,13 @@ namespace FancyZonesUnitTests
settings.moveWindowAcrossMonitors = false; settings.moveWindowAcrossMonitors = false;
FancyZonesSettings::instance().SetSettings(settings); FancyZonesSettings::instance().SetSettings(settings);
Assert::IsFalse(windowKeyboardSnap.Snap(window, m_monitors[0], VK_LEFT, m_workAreaMap, m_monitors)); Assert::IsTrue(windowKeyboardSnap.Snap(window, m_monitors[0], VK_LEFT, m_workAreaMap, m_monitors));
const auto& actualAppZoneHistory = AppZoneHistory::instance().GetFullAppZoneHistory(); const auto& actualAppZoneHistory = AppZoneHistory::instance().GetFullAppZoneHistory();
Assert::AreEqual((size_t)1, actualAppZoneHistory.size()); Assert::AreEqual((size_t)1, actualAppZoneHistory.size());
const auto& layoutWindowsPrevWorkArea = m_workAreaMap.at(m_monitors[0])->GetLayoutWindows(); const auto& layoutWindowsPrevWorkArea = m_workAreaMap.at(m_monitors[0])->GetLayoutWindows();
Assert::IsTrue(ZoneIndexSet{ 0 } == layoutWindowsPrevWorkArea.GetZoneIndexSetFromWindow(window)); Assert::IsTrue(ZoneIndexSet{ 3 } == layoutWindowsPrevWorkArea.GetZoneIndexSetFromWindow(window));
const auto& layoutWindowsActualWorkArea = m_workAreaMap.at(m_monitors[1])->GetLayoutWindows(); const auto& layoutWindowsActualWorkArea = m_workAreaMap.at(m_monitors[1])->GetLayoutWindows();
Assert::IsTrue(ZoneIndexSet{} == layoutWindowsActualWorkArea.GetZoneIndexSetFromWindow(window)); Assert::IsTrue(ZoneIndexSet{} == layoutWindowsActualWorkArea.GetZoneIndexSetFromWindow(window));
@@ -440,13 +440,13 @@ namespace FancyZonesUnitTests
settings.moveWindowAcrossMonitors = false; settings.moveWindowAcrossMonitors = false;
FancyZonesSettings::instance().SetSettings(settings); FancyZonesSettings::instance().SetSettings(settings);
Assert::IsFalse(windowKeyboardSnap.Snap(window, m_monitors[1], VK_RIGHT, m_workAreaMap, m_monitors)); Assert::IsTrue(windowKeyboardSnap.Snap(window, m_monitors[1], VK_RIGHT, m_workAreaMap, m_monitors));
const auto& actualAppZoneHistory = AppZoneHistory::instance().GetFullAppZoneHistory(); const auto& actualAppZoneHistory = AppZoneHistory::instance().GetFullAppZoneHistory();
Assert::AreEqual((size_t)1, actualAppZoneHistory.size()); Assert::AreEqual((size_t)1, actualAppZoneHistory.size());
const auto& layoutWindowsPrevWorkArea = m_workAreaMap.at(m_monitors[1])->GetLayoutWindows(); const auto& layoutWindowsPrevWorkArea = m_workAreaMap.at(m_monitors[1])->GetLayoutWindows();
Assert::IsTrue(ZoneIndexSet{ 3 } == layoutWindowsPrevWorkArea.GetZoneIndexSetFromWindow(window)); Assert::IsTrue(ZoneIndexSet{ 0 } == layoutWindowsPrevWorkArea.GetZoneIndexSetFromWindow(window));
const auto& layoutWindowsActualWorkArea = m_workAreaMap.at(m_monitors[0])->GetLayoutWindows(); const auto& layoutWindowsActualWorkArea = m_workAreaMap.at(m_monitors[0])->GetLayoutWindows();
Assert::IsTrue(ZoneIndexSet{} == layoutWindowsActualWorkArea.GetZoneIndexSetFromWindow(window)); Assert::IsTrue(ZoneIndexSet{} == layoutWindowsActualWorkArea.GetZoneIndexSetFromWindow(window));
@@ -1449,4 +1449,4 @@ namespace FancyZonesUnitTests
Assert::IsTrue(ZoneIndexSet{ 0, 2 } == AppZoneHistory::instance().GetAppLastZoneIndexSet(window, workArea->UniqueId(), workArea->GetLayoutId())); Assert::IsTrue(ZoneIndexSet{ 0, 2 } == AppZoneHistory::instance().GetAppLastZoneIndexSet(window, workArea->UniqueId(), workArea->GetLayoutId()));
} }
}; };
} }