mirror of
https://github.com/microsoft/PowerToys.git
synced 2025-12-16 03:37:59 +01:00
[FancyZones] Change layout using a shortcut (#13616)
This commit is contained in:
@@ -183,8 +183,15 @@ const std::unordered_map<std::wstring, std::vector<FancyZonesDataTypes::AppZoneH
|
|||||||
std::optional<FancyZonesDataTypes::DeviceInfoData> FancyZonesData::FindDeviceInfo(const FancyZonesDataTypes::DeviceIdData& zoneWindowId) const
|
std::optional<FancyZonesDataTypes::DeviceInfoData> FancyZonesData::FindDeviceInfo(const FancyZonesDataTypes::DeviceIdData& zoneWindowId) const
|
||||||
{
|
{
|
||||||
std::scoped_lock lock{ dataLock };
|
std::scoped_lock lock{ dataLock };
|
||||||
auto it = deviceInfoMap.find(zoneWindowId);
|
for (const auto& [deviceId, deviceInfo] : deviceInfoMap)
|
||||||
return it != end(deviceInfoMap) ? std::optional{ it->second } : std::nullopt;
|
{
|
||||||
|
if (zoneWindowId.isEqualWithNullVirtualDesktopId(deviceId))
|
||||||
|
{
|
||||||
|
return deviceInfo;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return std::nullopt;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::optional<FancyZonesDataTypes::CustomZoneSetData> FancyZonesData::FindCustomZoneSet(const std::wstring& guid) const
|
std::optional<FancyZonesDataTypes::CustomZoneSetData> FancyZonesData::FindCustomZoneSet(const std::wstring& guid) const
|
||||||
@@ -559,31 +566,33 @@ void FancyZonesData::SetActiveZoneSet(const FancyZonesDataTypes::DeviceIdData& d
|
|||||||
{
|
{
|
||||||
std::scoped_lock lock{ dataLock };
|
std::scoped_lock lock{ dataLock };
|
||||||
|
|
||||||
auto deviceIt = deviceInfoMap.find(deviceId);
|
for (auto& [deviceIdData, deviceInfo] : deviceInfoMap)
|
||||||
if (deviceIt == deviceInfoMap.end())
|
|
||||||
{
|
{
|
||||||
return;
|
if (deviceId.isEqualWithNullVirtualDesktopId(deviceIdData))
|
||||||
}
|
|
||||||
|
|
||||||
deviceIt->second.activeZoneSet = data;
|
|
||||||
|
|
||||||
// If the zone set is custom, we need to copy its properties to the device
|
|
||||||
auto zonesetIt = customZoneSetsMap.find(data.uuid);
|
|
||||||
if (zonesetIt != customZoneSetsMap.end())
|
|
||||||
{
|
|
||||||
if (zonesetIt->second.type == FancyZonesDataTypes::CustomLayoutType::Grid)
|
|
||||||
{
|
{
|
||||||
auto layoutInfo = std::get<FancyZonesDataTypes::GridLayoutInfo>(zonesetIt->second.info);
|
deviceInfo.activeZoneSet = data;
|
||||||
deviceIt->second.sensitivityRadius = layoutInfo.sensitivityRadius();
|
|
||||||
deviceIt->second.showSpacing = layoutInfo.showSpacing();
|
// If the zone set is custom, we need to copy its properties to the device
|
||||||
deviceIt->second.spacing = layoutInfo.spacing();
|
auto zonesetIt = customZoneSetsMap.find(data.uuid);
|
||||||
deviceIt->second.zoneCount = layoutInfo.zoneCount();
|
if (zonesetIt != customZoneSetsMap.end())
|
||||||
}
|
{
|
||||||
else if (zonesetIt->second.type == FancyZonesDataTypes::CustomLayoutType::Canvas)
|
if (zonesetIt->second.type == FancyZonesDataTypes::CustomLayoutType::Grid)
|
||||||
{
|
{
|
||||||
auto layoutInfo = std::get<FancyZonesDataTypes::CanvasLayoutInfo>(zonesetIt->second.info);
|
auto layoutInfo = std::get<FancyZonesDataTypes::GridLayoutInfo>(zonesetIt->second.info);
|
||||||
deviceIt->second.sensitivityRadius = layoutInfo.sensitivityRadius;
|
deviceInfo.sensitivityRadius = layoutInfo.sensitivityRadius();
|
||||||
deviceIt->second.zoneCount = (int)layoutInfo.zones.size();
|
deviceInfo.showSpacing = layoutInfo.showSpacing();
|
||||||
|
deviceInfo.spacing = layoutInfo.spacing();
|
||||||
|
deviceInfo.zoneCount = layoutInfo.zoneCount();
|
||||||
|
}
|
||||||
|
else if (zonesetIt->second.type == FancyZonesDataTypes::CustomLayoutType::Canvas)
|
||||||
|
{
|
||||||
|
auto layoutInfo = std::get<FancyZonesDataTypes::CanvasLayoutInfo>(zonesetIt->second.info);
|
||||||
|
deviceInfo.sensitivityRadius = layoutInfo.sensitivityRadius;
|
||||||
|
deviceInfo.zoneCount = (int)layoutInfo.zones.size();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user