[FancyZones] Fix blank layout error (#26828)

This commit is contained in:
Seraphima Zykova
2023-06-26 16:14:14 +02:00
committed by GitHub
parent 1b9094ae2b
commit 397178deec
6 changed files with 64 additions and 15 deletions

View File

@@ -108,15 +108,20 @@ Layout::Layout(const LayoutData& data) :
bool Layout::Init(const FancyZonesUtils::Rect& workArea, HMONITOR monitor) noexcept
{
//invalid work area
// invalid work area
if (workArea.width() == 0 || workArea.height() == 0)
{
Logger::error(L"Layout initialization: invalid work area");
return false;
}
//invalid zoneCount, may cause division by zero
if (m_data.zoneCount <= 0 && m_data.type != FancyZonesDataTypes::ZoneSetLayoutType::Custom)
// invalid zoneCount, may cause division by zero
bool isGridType = m_data.type == FancyZonesDataTypes::ZoneSetLayoutType::Columns
|| m_data.type == FancyZonesDataTypes::ZoneSetLayoutType::Rows
|| m_data.type == FancyZonesDataTypes::ZoneSetLayoutType::Grid
|| m_data.type == FancyZonesDataTypes::ZoneSetLayoutType::PriorityGrid;
if (m_data.zoneCount < 0 || (m_data.zoneCount == 0 && isGridType))
{
Logger::error(L"Layout initialization: invalid zone count");
return false;
@@ -126,6 +131,9 @@ bool Layout::Init(const FancyZonesUtils::Rect& workArea, HMONITOR monitor) noexc
switch (m_data.type)
{
case FancyZonesDataTypes::ZoneSetLayoutType::Blank:
m_zones = {};
break;
case FancyZonesDataTypes::ZoneSetLayoutType::Focus:
m_zones = LayoutConfigurator::Focus(workArea, m_data.zoneCount);
break;