mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 11:48:06 +01:00
[FancyZones]Fix wrap-around Fancy Zone hotkey support on single monitor (#32011)
This commit is contained in:
@@ -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)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -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()));
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user