mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-29 22:05:58 +01:00
master: fix always_center_master
(#2961)
* master: fix always_center_master * master: allow resizing single centered window --------- Co-authored-by: kbtz <github@kbtz.dev>
This commit is contained in:
parent
347a1eb662
commit
2b4537606f
1 changed files with 144 additions and 153 deletions
|
@ -268,9 +268,7 @@ void CHyprMasterLayout::calculateWorkspace(const int& ws) {
|
||||||
return;
|
return;
|
||||||
|
|
||||||
const auto PWORKSPACEDATA = getMasterWorkspaceData(ws);
|
const auto PWORKSPACEDATA = getMasterWorkspaceData(ws);
|
||||||
|
|
||||||
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID);
|
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWORKSPACE->m_iMonitorID);
|
||||||
|
|
||||||
const auto PMASTERNODE = getMasterNodeOnWorkspace(PWORKSPACE->m_iID);
|
const auto PMASTERNODE = getMasterNodeOnWorkspace(PWORKSPACE->m_iID);
|
||||||
|
|
||||||
if (!PMASTERNODE)
|
if (!PMASTERNODE)
|
||||||
|
@ -279,200 +277,192 @@ void CHyprMasterLayout::calculateWorkspace(const int& ws) {
|
||||||
eOrientation orientation = PWORKSPACEDATA->orientation;
|
eOrientation orientation = PWORKSPACEDATA->orientation;
|
||||||
bool centerMasterWindow = false;
|
bool centerMasterWindow = false;
|
||||||
static auto* const ALWAYSCENTER = &g_pConfigManager->getConfigValuePtr("master:always_center_master")->intValue;
|
static auto* const ALWAYSCENTER = &g_pConfigManager->getConfigValuePtr("master:always_center_master")->intValue;
|
||||||
|
|
||||||
|
const auto MASTERS = getMastersOnWorkspace(PWORKSPACE->m_iID);
|
||||||
|
const auto WINDOWS = getNodesOnWorkspace(PWORKSPACE->m_iID);
|
||||||
|
const auto STACKWINDOWS = WINDOWS - MASTERS;
|
||||||
|
const auto WSSIZE = PMONITOR->vecSize - PMONITOR->vecReservedTopLeft - PMONITOR->vecReservedBottomRight;
|
||||||
|
const auto WSPOS = PMONITOR->vecPosition + PMONITOR->vecReservedTopLeft;
|
||||||
|
|
||||||
if (orientation == ORIENTATION_CENTER) {
|
if (orientation == ORIENTATION_CENTER) {
|
||||||
if (getNodesOnWorkspace(PWORKSPACE->m_iID) > 2 || (*ALWAYSCENTER == 1)) {
|
if (STACKWINDOWS >= 2 || (*ALWAYSCENTER == 1)) {
|
||||||
centerMasterWindow = true;
|
centerMasterWindow = true;
|
||||||
} else {
|
} else {
|
||||||
orientation = ORIENTATION_LEFT;
|
orientation = ORIENTATION_LEFT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto MASTERS = getMastersOnWorkspace(PWORKSPACE->m_iID);
|
// compute placement of master window(s)
|
||||||
const auto WINDOWS = getNodesOnWorkspace(PWORKSPACE->m_iID);
|
if (WINDOWS == 1 && !centerMasterWindow) {
|
||||||
const auto STACKWINDOWS = WINDOWS - MASTERS;
|
PMASTERNODE->size = WSSIZE;
|
||||||
//compute placement of master window(s)
|
PMASTERNODE->position = WSPOS;
|
||||||
if ((WINDOWS < 2) && !centerMasterWindow) {
|
|
||||||
PMASTERNODE->position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition;
|
|
||||||
PMASTERNODE->size = Vector2D(PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x,
|
|
||||||
PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y);
|
|
||||||
applyNodeDataToWindow(PMASTERNODE);
|
applyNodeDataToWindow(PMASTERNODE);
|
||||||
return;
|
return;
|
||||||
} else if (orientation == ORIENTATION_LEFT || orientation == ORIENTATION_RIGHT || (orientation == ORIENTATION_CENTER && STACKWINDOWS <= 1)) {
|
|
||||||
float heightLeft = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y;
|
|
||||||
int nodesLeft = MASTERS;
|
|
||||||
float nextY = 0;
|
|
||||||
float WIDTH = 0;
|
|
||||||
|
|
||||||
if (STACKWINDOWS == 0 && MASTERS > 0)
|
|
||||||
WIDTH = (PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x);
|
|
||||||
else
|
|
||||||
WIDTH = (PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x) * PMASTERNODE->percMaster;
|
|
||||||
|
|
||||||
for (auto& n : m_lMasterNodesData) {
|
|
||||||
if (n.workspaceID == PWORKSPACE->m_iID && n.isMaster) {
|
|
||||||
if (orientation == ORIENTATION_RIGHT) {
|
|
||||||
n.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition +
|
|
||||||
Vector2D(PMONITOR->vecSize.x - WIDTH - PMONITOR->vecReservedBottomRight.x - PMONITOR->vecReservedTopLeft.x, nextY);
|
|
||||||
} else {
|
|
||||||
n.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(0, nextY);
|
|
||||||
}
|
|
||||||
float HEIGHT = nodesLeft > 1 ? heightLeft / nodesLeft * n.percSize : heightLeft;
|
|
||||||
if (HEIGHT > heightLeft * 0.9f && nodesLeft > 1)
|
|
||||||
HEIGHT = heightLeft * 0.9f;
|
|
||||||
n.size = Vector2D(WIDTH, HEIGHT);
|
|
||||||
|
|
||||||
nodesLeft--;
|
|
||||||
heightLeft -= HEIGHT;
|
|
||||||
nextY += HEIGHT;
|
|
||||||
|
|
||||||
applyNodeDataToWindow(&n);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (orientation == ORIENTATION_TOP || orientation == ORIENTATION_BOTTOM) {
|
} else if (orientation == ORIENTATION_TOP || orientation == ORIENTATION_BOTTOM) {
|
||||||
float widthLeft = PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x - PMONITOR->vecReservedTopLeft.x;
|
const float HEIGHT = WSSIZE.y * PMASTERNODE->percMaster;
|
||||||
int nodesLeft = MASTERS;
|
float widthLeft = WSSIZE.x;
|
||||||
float nextX = 0;
|
int mastersLeft = MASTERS;
|
||||||
const float HEIGHT = (PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y) * PMASTERNODE->percMaster;
|
float nextX = 0;
|
||||||
|
float nextY = 0;
|
||||||
|
|
||||||
for (auto& n : m_lMasterNodesData) {
|
for (auto& nd : m_lMasterNodesData) {
|
||||||
if (n.workspaceID == PWORKSPACE->m_iID && n.isMaster) {
|
if (nd.workspaceID != PWORKSPACE->m_iID || !nd.isMaster)
|
||||||
if (orientation == ORIENTATION_BOTTOM) {
|
continue;
|
||||||
n.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition +
|
|
||||||
Vector2D(nextX, PMONITOR->vecSize.y - HEIGHT - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y);
|
|
||||||
} else {
|
|
||||||
n.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(nextX, 0);
|
|
||||||
}
|
|
||||||
float WIDTH = nodesLeft > 1 ? widthLeft / nodesLeft * n.percSize : widthLeft;
|
|
||||||
if (WIDTH > widthLeft * 0.9f && nodesLeft > 1)
|
|
||||||
WIDTH = widthLeft * 0.9f;
|
|
||||||
n.size = Vector2D(WIDTH, HEIGHT);
|
|
||||||
|
|
||||||
nodesLeft--;
|
if (orientation == ORIENTATION_BOTTOM)
|
||||||
widthLeft -= WIDTH;
|
nextY = WSSIZE.y - HEIGHT;
|
||||||
nextX += WIDTH;
|
|
||||||
|
|
||||||
applyNodeDataToWindow(&n);
|
float WIDTH = mastersLeft > 1 ? widthLeft / mastersLeft * nd.percSize : widthLeft;
|
||||||
}
|
if (WIDTH > widthLeft * 0.9f && mastersLeft > 1)
|
||||||
|
WIDTH = widthLeft * 0.9f;
|
||||||
|
|
||||||
|
nd.size = Vector2D(WIDTH, HEIGHT);
|
||||||
|
nd.position = WSPOS + Vector2D(nextX, nextY);
|
||||||
|
applyNodeDataToWindow(&nd);
|
||||||
|
|
||||||
|
mastersLeft--;
|
||||||
|
widthLeft -= WIDTH;
|
||||||
|
nextX += WIDTH;
|
||||||
}
|
}
|
||||||
} else if (orientation == ORIENTATION_CENTER && STACKWINDOWS >= 2) {
|
} else { // orientation left, right or center
|
||||||
float heightLeft = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y;
|
float WIDTH = WSSIZE.x;
|
||||||
int nodesLeft = MASTERS;
|
float heightLeft = WSSIZE.y;
|
||||||
float nextY = 0;
|
int mastersLeft = MASTERS;
|
||||||
const float WIDTH = (PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x) * PMASTERNODE->percMaster;
|
float nextX = 0;
|
||||||
|
float nextY = 0;
|
||||||
|
|
||||||
for (auto& n : m_lMasterNodesData) {
|
if (STACKWINDOWS > 0 || centerMasterWindow)
|
||||||
if (n.workspaceID == PWORKSPACE->m_iID && n.isMaster) {
|
WIDTH *= PMASTERNODE->percMaster;
|
||||||
float CENTER_OFFSET = (PMONITOR->vecSize.x - WIDTH) / 2;
|
|
||||||
n.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(CENTER_OFFSET, nextY);
|
|
||||||
float HEIGHT = nodesLeft > 1 ? heightLeft / nodesLeft * n.percSize : heightLeft;
|
|
||||||
if (HEIGHT > heightLeft * 0.9f && nodesLeft > 1)
|
|
||||||
HEIGHT = heightLeft * 0.9f;
|
|
||||||
n.size = Vector2D(WIDTH, HEIGHT);
|
|
||||||
|
|
||||||
nodesLeft--;
|
if (orientation == ORIENTATION_RIGHT) {
|
||||||
heightLeft -= HEIGHT;
|
nextX = WSSIZE.x - WIDTH;
|
||||||
nextY += HEIGHT;
|
} else if (centerMasterWindow) {
|
||||||
|
nextX = (WSSIZE.x - WIDTH) / 2;
|
||||||
|
}
|
||||||
|
|
||||||
applyNodeDataToWindow(&n);
|
for (auto& nd : m_lMasterNodesData) {
|
||||||
}
|
if (nd.workspaceID != PWORKSPACE->m_iID || !nd.isMaster)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
float HEIGHT = mastersLeft > 1 ? heightLeft / mastersLeft * nd.percSize : heightLeft;
|
||||||
|
if (HEIGHT > heightLeft * 0.9f && mastersLeft > 1)
|
||||||
|
HEIGHT = heightLeft * 0.9f;
|
||||||
|
|
||||||
|
nd.size = Vector2D(WIDTH, HEIGHT);
|
||||||
|
nd.position = WSPOS + Vector2D(nextX, nextY);
|
||||||
|
applyNodeDataToWindow(&nd);
|
||||||
|
|
||||||
|
mastersLeft--;
|
||||||
|
heightLeft -= HEIGHT;
|
||||||
|
nextY += HEIGHT;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
//compute placement of slave window(s)
|
if (STACKWINDOWS == 0)
|
||||||
int slavesLeft = getNodesOnWorkspace(PWORKSPACE->m_iID) - MASTERS;
|
return;
|
||||||
if (orientation == ORIENTATION_LEFT || orientation == ORIENTATION_RIGHT || (orientation == ORIENTATION_CENTER && STACKWINDOWS <= 1)) {
|
|
||||||
float heightLeft = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y;
|
|
||||||
float nextY = 0;
|
|
||||||
const float WIDTH = PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x - PMONITOR->vecReservedTopLeft.x - PMASTERNODE->size.x;
|
|
||||||
|
|
||||||
for (auto& nd : m_lMasterNodesData) {
|
// compute placement of slave window(s)
|
||||||
if (nd.workspaceID != PWORKSPACE->m_iID || nd.isMaster)
|
int slavesLeft = STACKWINDOWS;
|
||||||
continue;
|
if (orientation == ORIENTATION_TOP || orientation == ORIENTATION_BOTTOM) {
|
||||||
|
const float HEIGHT = WSSIZE.y - PMASTERNODE->size.y;
|
||||||
if (orientation == ORIENTATION_LEFT || (orientation == ORIENTATION_CENTER && STACKWINDOWS <= 1)) {
|
float widthLeft = WSSIZE.x;
|
||||||
nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition +
|
|
||||||
Vector2D(PMASTERNODE->percMaster * (PMONITOR->vecSize.x - PMONITOR->vecReservedTopLeft.x - PMONITOR->vecReservedBottomRight.x), nextY);
|
|
||||||
} else {
|
|
||||||
nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(0, nextY);
|
|
||||||
}
|
|
||||||
float HEIGHT = slavesLeft > 1 ? heightLeft / slavesLeft * nd.percSize : heightLeft;
|
|
||||||
if (HEIGHT > heightLeft * 0.9f && slavesLeft > 1)
|
|
||||||
HEIGHT = heightLeft * 0.9f;
|
|
||||||
nd.size = Vector2D(WIDTH, HEIGHT);
|
|
||||||
|
|
||||||
slavesLeft--;
|
|
||||||
heightLeft -= HEIGHT;
|
|
||||||
nextY += HEIGHT;
|
|
||||||
|
|
||||||
applyNodeDataToWindow(&nd);
|
|
||||||
}
|
|
||||||
} else if (orientation == ORIENTATION_TOP || orientation == ORIENTATION_BOTTOM) {
|
|
||||||
float widthLeft = PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x - PMONITOR->vecReservedTopLeft.x;
|
|
||||||
float nextX = 0;
|
float nextX = 0;
|
||||||
const float HEIGHT = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y - PMASTERNODE->size.y;
|
float nextY = 0;
|
||||||
|
|
||||||
|
if (orientation == ORIENTATION_TOP)
|
||||||
|
nextY = PMASTERNODE->size.y;
|
||||||
|
|
||||||
for (auto& nd : m_lMasterNodesData) {
|
for (auto& nd : m_lMasterNodesData) {
|
||||||
if (nd.workspaceID != PWORKSPACE->m_iID || nd.isMaster)
|
if (nd.workspaceID != PWORKSPACE->m_iID || nd.isMaster)
|
||||||
continue;
|
continue;
|
||||||
if (orientation == ORIENTATION_TOP) {
|
|
||||||
nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition +
|
|
||||||
Vector2D(nextX, PMASTERNODE->percMaster * (PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y));
|
|
||||||
} else {
|
|
||||||
nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(nextX, 0);
|
|
||||||
}
|
|
||||||
float WIDTH = slavesLeft > 1 ? widthLeft / slavesLeft * nd.percSize : widthLeft;
|
float WIDTH = slavesLeft > 1 ? widthLeft / slavesLeft * nd.percSize : widthLeft;
|
||||||
if (WIDTH > widthLeft * 0.9f && slavesLeft > 1)
|
if (WIDTH > widthLeft * 0.9f && slavesLeft > 1)
|
||||||
WIDTH = widthLeft * 0.9f;
|
WIDTH = widthLeft * 0.9f;
|
||||||
|
|
||||||
nd.size = Vector2D(WIDTH, HEIGHT);
|
nd.size = Vector2D(WIDTH, HEIGHT);
|
||||||
|
nd.position = WSPOS + Vector2D(nextX, nextY);
|
||||||
|
applyNodeDataToWindow(&nd);
|
||||||
|
|
||||||
slavesLeft--;
|
slavesLeft--;
|
||||||
widthLeft -= WIDTH;
|
widthLeft -= WIDTH;
|
||||||
nextX += WIDTH;
|
nextX += WIDTH;
|
||||||
|
|
||||||
applyNodeDataToWindow(&nd);
|
|
||||||
}
|
}
|
||||||
} else if (orientation == ORIENTATION_CENTER && STACKWINDOWS >= 2) {
|
} else if (orientation == ORIENTATION_LEFT || orientation == ORIENTATION_RIGHT) {
|
||||||
float heightLeftL = PMONITOR->vecSize.y - PMONITOR->vecReservedBottomRight.y - PMONITOR->vecReservedTopLeft.y;
|
const float WIDTH = WSSIZE.x - PMASTERNODE->size.x;
|
||||||
float heightLeftR = heightLeftL;
|
float heightLeft = WSSIZE.y;
|
||||||
float heightLeft = 0;
|
float nextY = 0;
|
||||||
float nextYL = 0;
|
float nextX = 0;
|
||||||
float nextYR = 0;
|
|
||||||
const float WIDTH = (PMONITOR->vecSize.x - PMONITOR->vecReservedBottomRight.x - PMONITOR->vecReservedTopLeft.x - PMASTERNODE->size.x) / 2.0;
|
|
||||||
bool on_left = true;
|
|
||||||
|
|
||||||
int slavesLeftL = 1 + (slavesLeft - 1) / 2;
|
if (orientation == ORIENTATION_LEFT)
|
||||||
int slavesLeftR = slavesLeft - slavesLeftL;
|
nextX = PMASTERNODE->size.x;
|
||||||
|
|
||||||
for (auto& nd : m_lMasterNodesData) {
|
for (auto& nd : m_lMasterNodesData) {
|
||||||
if (nd.workspaceID != PWORKSPACE->m_iID || nd.isMaster)
|
if (nd.workspaceID != PWORKSPACE->m_iID || nd.isMaster)
|
||||||
continue;
|
continue;
|
||||||
|
|
||||||
if (on_left) {
|
|
||||||
nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(0, nextYL);
|
|
||||||
heightLeft = heightLeftL;
|
|
||||||
slavesLeft = slavesLeftL;
|
|
||||||
} else {
|
|
||||||
nd.position = PMONITOR->vecReservedTopLeft + PMONITOR->vecPosition + Vector2D(WIDTH + PMASTERNODE->size.x, nextYR);
|
|
||||||
heightLeft = heightLeftR;
|
|
||||||
slavesLeft = slavesLeftR;
|
|
||||||
}
|
|
||||||
float HEIGHT = slavesLeft > 1 ? heightLeft / slavesLeft * nd.percSize : heightLeft;
|
float HEIGHT = slavesLeft > 1 ? heightLeft / slavesLeft * nd.percSize : heightLeft;
|
||||||
if (HEIGHT > heightLeft * 0.9f && slavesLeft > 1)
|
if (HEIGHT > heightLeft * 0.9f && slavesLeft > 1)
|
||||||
HEIGHT = heightLeft * 0.9f;
|
HEIGHT = heightLeft * 0.9f;
|
||||||
nd.size = Vector2D(WIDTH, HEIGHT);
|
|
||||||
|
|
||||||
if (on_left) {
|
nd.size = Vector2D(WIDTH, HEIGHT);
|
||||||
heightLeftL -= HEIGHT;
|
nd.position = WSPOS + Vector2D(nextX, nextY);
|
||||||
nextYL += HEIGHT;
|
applyNodeDataToWindow(&nd);
|
||||||
slavesLeftL--;
|
|
||||||
|
slavesLeft--;
|
||||||
|
heightLeft -= HEIGHT;
|
||||||
|
nextY += HEIGHT;
|
||||||
|
}
|
||||||
|
} else { // slaves for centered master window(s)
|
||||||
|
const float WIDTH = (WSSIZE.x - PMASTERNODE->size.x) / 2.0;
|
||||||
|
float heightLeft = 0;
|
||||||
|
float heightLeftL = WSSIZE.y;
|
||||||
|
float heightLeftR = WSSIZE.y;
|
||||||
|
float nextX = 0;
|
||||||
|
float nextY = 0;
|
||||||
|
float nextYL = 0;
|
||||||
|
float nextYR = 0;
|
||||||
|
bool onRight = true;
|
||||||
|
|
||||||
|
int slavesLeftR = 1 + (slavesLeft - 1) / 2;
|
||||||
|
int slavesLeftL = slavesLeft - slavesLeftR;
|
||||||
|
|
||||||
|
for (auto& nd : m_lMasterNodesData) {
|
||||||
|
if (nd.workspaceID != PWORKSPACE->m_iID || nd.isMaster)
|
||||||
|
continue;
|
||||||
|
|
||||||
|
if (onRight) {
|
||||||
|
nextX = WIDTH + PMASTERNODE->size.x;
|
||||||
|
nextY = nextYR;
|
||||||
|
heightLeft = heightLeftR;
|
||||||
|
slavesLeft = slavesLeftR;
|
||||||
} else {
|
} else {
|
||||||
|
nextX = 0;
|
||||||
|
nextY = nextYL;
|
||||||
|
heightLeft = heightLeftL;
|
||||||
|
slavesLeft = slavesLeftL;
|
||||||
|
}
|
||||||
|
|
||||||
|
float HEIGHT = slavesLeft > 1 ? heightLeft / slavesLeft * nd.percSize : heightLeft;
|
||||||
|
if (HEIGHT > heightLeft * 0.9f && slavesLeft > 1)
|
||||||
|
HEIGHT = heightLeft * 0.9f;
|
||||||
|
|
||||||
|
nd.size = Vector2D(WIDTH, HEIGHT);
|
||||||
|
nd.position = WSPOS + Vector2D(nextX, nextY);
|
||||||
|
applyNodeDataToWindow(&nd);
|
||||||
|
|
||||||
|
if (onRight) {
|
||||||
heightLeftR -= HEIGHT;
|
heightLeftR -= HEIGHT;
|
||||||
nextYR += HEIGHT;
|
nextYR += HEIGHT;
|
||||||
slavesLeftR--;
|
slavesLeftR--;
|
||||||
|
} else {
|
||||||
|
heightLeftL -= HEIGHT;
|
||||||
|
nextYL += HEIGHT;
|
||||||
|
slavesLeftL--;
|
||||||
}
|
}
|
||||||
|
|
||||||
applyNodeDataToWindow(&nd);
|
onRight = !onRight;
|
||||||
on_left = !on_left;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -615,19 +605,20 @@ void CHyprMasterLayout::resizeActiveWindow(const Vector2D& pixResize, eRectCorne
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// get monitor
|
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
|
||||||
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
|
const auto PWORKSPACEDATA = getMasterWorkspaceData(PMONITOR->activeWorkspace);
|
||||||
|
static auto* const ALWAYSCENTER = &g_pConfigManager->getConfigValuePtr("master:always_center_master")->intValue;
|
||||||
|
|
||||||
if (getNodesOnWorkspace(PWINDOW->m_iWorkspaceID) < 2)
|
eOrientation orientation = PWORKSPACEDATA->orientation;
|
||||||
|
bool centered = orientation == ORIENTATION_CENTER && (*ALWAYSCENTER == 1);
|
||||||
|
double delta = 0;
|
||||||
|
|
||||||
|
if (getNodesOnWorkspace(PWINDOW->m_iWorkspaceID) == 1 && !centered)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
m_bForceWarps = true;
|
m_bForceWarps = true;
|
||||||
|
|
||||||
const auto PWORKSPACEDATA = getMasterWorkspaceData(PMONITOR->activeWorkspace);
|
switch (orientation) {
|
||||||
|
|
||||||
double delta = 0;
|
|
||||||
|
|
||||||
switch (PWORKSPACEDATA->orientation) {
|
|
||||||
case ORIENTATION_LEFT: delta = pixResize.x / PMONITOR->vecSize.x; break;
|
case ORIENTATION_LEFT: delta = pixResize.x / PMONITOR->vecSize.x; break;
|
||||||
case ORIENTATION_RIGHT: delta = -pixResize.x / PMONITOR->vecSize.x; break;
|
case ORIENTATION_RIGHT: delta = -pixResize.x / PMONITOR->vecSize.x; break;
|
||||||
case ORIENTATION_BOTTOM: delta = -pixResize.y / PMONITOR->vecSize.y; break;
|
case ORIENTATION_BOTTOM: delta = -pixResize.y / PMONITOR->vecSize.y; break;
|
||||||
|
|
Loading…
Reference in a new issue