mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-07 21:25:58 +01:00
master: Make master workspace orientation rule dynamic (#5339)
* make master workspace orientation rule dynamic * fix rebase * fix special ws resizing * style
This commit is contained in:
parent
9ae0c47a21
commit
ef7ac53e99
1 changed files with 26 additions and 7 deletions
|
@ -53,17 +53,16 @@ SMasterWorkspaceData* CHyprMasterLayout::getMasterWorkspaceData(const int& ws) {
|
||||||
orientationForWs = wsRule.layoutopts.at("orientation");
|
orientationForWs = wsRule.layoutopts.at("orientation");
|
||||||
}
|
}
|
||||||
|
|
||||||
if (orientationForWs == "top") {
|
if (orientationForWs == "top")
|
||||||
PWORKSPACEDATA->orientation = ORIENTATION_TOP;
|
PWORKSPACEDATA->orientation = ORIENTATION_TOP;
|
||||||
} else if (orientationForWs == "right") {
|
else if (orientationForWs == "right")
|
||||||
PWORKSPACEDATA->orientation = ORIENTATION_RIGHT;
|
PWORKSPACEDATA->orientation = ORIENTATION_RIGHT;
|
||||||
} else if (orientationForWs == "bottom") {
|
else if (orientationForWs == "bottom")
|
||||||
PWORKSPACEDATA->orientation = ORIENTATION_BOTTOM;
|
PWORKSPACEDATA->orientation = ORIENTATION_BOTTOM;
|
||||||
} else if (orientationForWs == "center") {
|
else if (orientationForWs == "center")
|
||||||
PWORKSPACEDATA->orientation = ORIENTATION_CENTER;
|
PWORKSPACEDATA->orientation = ORIENTATION_CENTER;
|
||||||
} else {
|
else
|
||||||
PWORKSPACEDATA->orientation = ORIENTATION_LEFT;
|
PWORKSPACEDATA->orientation = ORIENTATION_LEFT;
|
||||||
}
|
|
||||||
|
|
||||||
return PWORKSPACEDATA;
|
return PWORKSPACEDATA;
|
||||||
}
|
}
|
||||||
|
@ -339,6 +338,26 @@ void CHyprMasterLayout::calculateWorkspace(const int& ws) {
|
||||||
if (!PMASTERNODE)
|
if (!PMASTERNODE)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
|
// dynamic workspace rules
|
||||||
|
const auto WORKSPACERULES = g_pConfigManager->getWorkspaceRulesFor(g_pCompositor->getWorkspaceByID(ws));
|
||||||
|
std::string orientationForWs;
|
||||||
|
|
||||||
|
for (auto& wsRule : WORKSPACERULES) {
|
||||||
|
if (wsRule.layoutopts.contains("orientation"))
|
||||||
|
orientationForWs = wsRule.layoutopts.at("orientation");
|
||||||
|
}
|
||||||
|
|
||||||
|
if (orientationForWs == "top")
|
||||||
|
PWORKSPACEDATA->orientation = ORIENTATION_TOP;
|
||||||
|
else if (orientationForWs == "right")
|
||||||
|
PWORKSPACEDATA->orientation = ORIENTATION_RIGHT;
|
||||||
|
else if (orientationForWs == "bottom")
|
||||||
|
PWORKSPACEDATA->orientation = ORIENTATION_BOTTOM;
|
||||||
|
else if (orientationForWs == "center")
|
||||||
|
PWORKSPACEDATA->orientation = ORIENTATION_CENTER;
|
||||||
|
else if (orientationForWs == "left")
|
||||||
|
PWORKSPACEDATA->orientation = ORIENTATION_LEFT;
|
||||||
|
|
||||||
eOrientation orientation = PWORKSPACEDATA->orientation;
|
eOrientation orientation = PWORKSPACEDATA->orientation;
|
||||||
bool centerMasterWindow = false;
|
bool centerMasterWindow = false;
|
||||||
static auto ALWAYSCENTER = CConfigValue<Hyprlang::INT>("master:always_center_master");
|
static auto ALWAYSCENTER = CConfigValue<Hyprlang::INT>("master:always_center_master");
|
||||||
|
@ -753,7 +772,7 @@ void CHyprMasterLayout::resizeActiveWindow(const Vector2D& pixResize, eRectCorne
|
||||||
}
|
}
|
||||||
|
|
||||||
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
|
const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID);
|
||||||
const auto PWORKSPACEDATA = getMasterWorkspaceData(PMONITOR->activeWorkspace);
|
const auto PWORKSPACEDATA = getMasterWorkspaceData(PWINDOW->m_iWorkspaceID);
|
||||||
static auto ALWAYSCENTER = CConfigValue<Hyprlang::INT>("master:always_center_master");
|
static auto ALWAYSCENTER = CConfigValue<Hyprlang::INT>("master:always_center_master");
|
||||||
static auto PSMARTRESIZING = CConfigValue<Hyprlang::INT>("master:smart_resizing");
|
static auto PSMARTRESIZING = CConfigValue<Hyprlang::INT>("master:smart_resizing");
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue