mirror of
https://github.com/hyprwm/Hyprland
synced 2024-11-07 23:05:58 +01:00
properly clean layout data
modified: src/desktop/Window.cpp modified: src/desktop/Window.hpp modified: src/events/Windows.cpp modified: src/layout/DwindleLayout.cpp modified: src/layout/IHyprLayout.cpp modified: src/layout/IHyprLayout.hpp modified: src/layout/MasterLayout.cpp
This commit is contained in:
parent
5527daa1eb
commit
c0f77d237d
7 changed files with 22 additions and 37 deletions
|
@ -757,33 +757,18 @@ void CWindow::applyDynamicRule(const SWindowRule& r) {
|
||||||
}
|
}
|
||||||
|
|
||||||
void CWindow::updateDynamicRules() {
|
void CWindow::updateDynamicRules() {
|
||||||
m_sWindowData.activeBorderColor.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.inactiveBorderColor.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.alpha.unset(PRIORITY_WINDOW_RULE);
|
m_sWindowData.alpha.unset(PRIORITY_WINDOW_RULE);
|
||||||
m_sWindowData.alphaInactive.unset(PRIORITY_WINDOW_RULE);
|
m_sWindowData.alphaInactive.unset(PRIORITY_WINDOW_RULE);
|
||||||
m_sWindowData.alphaFullscreen.unset(PRIORITY_WINDOW_RULE);
|
m_sWindowData.alphaFullscreen.unset(PRIORITY_WINDOW_RULE);
|
||||||
|
|
||||||
m_sWindowData.opaque.unset(PRIORITY_WINDOW_RULE);
|
unsetWindowData(PRIORITY_WINDOW_RULE);
|
||||||
|
|
||||||
m_sWindowData.animationStyle.unset(PRIORITY_WINDOW_RULE);
|
m_sWindowData.animationStyle.unset(PRIORITY_WINDOW_RULE);
|
||||||
m_sWindowData.maxSize.unset(PRIORITY_WINDOW_RULE);
|
m_sWindowData.maxSize.unset(PRIORITY_WINDOW_RULE);
|
||||||
m_sWindowData.minSize.unset(PRIORITY_WINDOW_RULE);
|
m_sWindowData.minSize.unset(PRIORITY_WINDOW_RULE);
|
||||||
|
|
||||||
m_sWindowData.dimAround.unset(PRIORITY_WINDOW_RULE);
|
m_sWindowData.activeBorderColor.unset(PRIORITY_WINDOW_RULE);
|
||||||
m_sWindowData.noAnim.unset(PRIORITY_WINDOW_RULE);
|
m_sWindowData.inactiveBorderColor.unset(PRIORITY_WINDOW_RULE);
|
||||||
m_sWindowData.noBlur.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.noDim.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.noBorder.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.noShadow.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.focusOnActivate.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.RGBX.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.tearing.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.keepAspectRatio.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.nearestNeighbor.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.xray.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
|
|
||||||
m_sWindowData.borderSize.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
m_sWindowData.rounding.unset(PRIORITY_WINDOW_RULE);
|
|
||||||
|
|
||||||
m_eIdleInhibitMode = IDLEINHIBIT_NONE;
|
m_eIdleInhibitMode = IDLEINHIBIT_NONE;
|
||||||
|
|
||||||
|
@ -1566,3 +1551,12 @@ PHLWINDOW CWindow::getSwallower() {
|
||||||
// if none are found (??) then just return the first one
|
// if none are found (??) then just return the first one
|
||||||
return candidates.at(0);
|
return candidates.at(0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void CWindow::unsetWindowData(eOverridePriority priority) {
|
||||||
|
for (auto const& element : g_pConfigManager->mbWindowProperties) {
|
||||||
|
element.second(m_pSelf.lock())->unset(priority);
|
||||||
|
}
|
||||||
|
for (auto const& element : g_pConfigManager->miWindowProperties) {
|
||||||
|
element.second(m_pSelf.lock())->unset(priority);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -457,6 +457,7 @@ class CWindow {
|
||||||
std::string fetchClass();
|
std::string fetchClass();
|
||||||
void warpCursor();
|
void warpCursor();
|
||||||
PHLWINDOW getSwallower();
|
PHLWINDOW getSwallower();
|
||||||
|
void unsetWindowData(eOverridePriority priority);
|
||||||
|
|
||||||
// listeners
|
// listeners
|
||||||
void onAck(uint32_t serial);
|
void onAck(uint32_t serial);
|
||||||
|
|
|
@ -314,7 +314,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
|
||||||
workspaceSilent = false;
|
workspaceSilent = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
g_pLayoutManager->getCurrentLayout()->unsetLayoutWindowData(PWINDOW);
|
PWINDOW->updateWindowData();
|
||||||
|
|
||||||
if (PWINDOW->m_bIsFloating) {
|
if (PWINDOW->m_bIsFloating) {
|
||||||
g_pLayoutManager->getCurrentLayout()->onWindowCreatedFloating(PWINDOW);
|
g_pLayoutManager->getCurrentLayout()->onWindowCreatedFloating(PWINDOW);
|
||||||
|
@ -450,7 +450,7 @@ void Events::listener_mapWindow(void* owner, void* data) {
|
||||||
|
|
||||||
const auto PFOCUSEDWINDOWPREV = g_pCompositor->m_pLastWindow.lock();
|
const auto PFOCUSEDWINDOWPREV = g_pCompositor->m_pLastWindow.lock();
|
||||||
|
|
||||||
if (PWINDOW->m_sWindowData.allowsInput.value_or_default()) {
|
if (PWINDOW->m_sWindowData.allowsInput.value_or_default()) { // if default value wasn't set to false getPriority() would throw an exception
|
||||||
PWINDOW->m_sWindowData.noFocus = CWindowOverridableVar(false, PWINDOW->m_sWindowData.allowsInput.getPriority());
|
PWINDOW->m_sWindowData.noFocus = CWindowOverridableVar(false, PWINDOW->m_sWindowData.allowsInput.getPriority());
|
||||||
PWINDOW->m_bNoInitialFocus = false;
|
PWINDOW->m_bNoInitialFocus = false;
|
||||||
PWINDOW->m_bX11ShouldntFocus = false;
|
PWINDOW->m_bX11ShouldntFocus = false;
|
||||||
|
|
|
@ -139,7 +139,7 @@ void CHyprDwindleLayout::applyNodeDataToWindow(SDwindleNodeData* pNode, bool for
|
||||||
if (PWINDOW->m_bIsFullscreen && !pNode->ignoreFullscreenChecks)
|
if (PWINDOW->m_bIsFullscreen && !pNode->ignoreFullscreenChecks)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
unsetLayoutWindowData(PWINDOW);
|
PWINDOW->unsetWindowData(PRIORITY_LAYOUT);
|
||||||
|
|
||||||
static auto PNOGAPSWHENONLY = CConfigValue<Hyprlang::INT>("dwindle:no_gaps_when_only");
|
static auto PNOGAPSWHENONLY = CConfigValue<Hyprlang::INT>("dwindle:no_gaps_when_only");
|
||||||
static auto PGAPSINDATA = CConfigValue<Hyprlang::CUSTOMTYPE>("general:gaps_in");
|
static auto PGAPSINDATA = CConfigValue<Hyprlang::CUSTOMTYPE>("general:gaps_in");
|
||||||
|
@ -496,7 +496,7 @@ void CHyprDwindleLayout::onWindowRemovedTiling(PHLWINDOW pWindow) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
unsetLayoutWindowData(pWindow);
|
pWindow->unsetWindowData(PRIORITY_LAYOUT);
|
||||||
|
|
||||||
if (pWindow->m_bIsFullscreen)
|
if (pWindow->m_bIsFullscreen)
|
||||||
g_pCompositor->setWindowFullscreen(pWindow, false, FULLSCREEN_FULL);
|
g_pCompositor->setWindowFullscreen(pWindow, false, FULLSCREEN_FULL);
|
||||||
|
@ -830,7 +830,7 @@ void CHyprDwindleLayout::fullscreenRequestForWindow(PHLWINDOW pWindow, eFullscre
|
||||||
pWindow->m_vRealPosition = pWindow->m_vLastFloatingPosition;
|
pWindow->m_vRealPosition = pWindow->m_vLastFloatingPosition;
|
||||||
pWindow->m_vRealSize = pWindow->m_vLastFloatingSize;
|
pWindow->m_vRealSize = pWindow->m_vLastFloatingSize;
|
||||||
|
|
||||||
unsetLayoutWindowData(pWindow);
|
pWindow->unsetWindowData(PRIORITY_LAYOUT);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// if it now got fullscreen, make it fullscreen
|
// if it now got fullscreen, make it fullscreen
|
||||||
|
|
|
@ -542,7 +542,7 @@ void IHyprLayout::changeWindowFloatingMode(PHLWINDOW pWindow) {
|
||||||
|
|
||||||
g_pHyprRenderer->damageMonitor(g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID));
|
g_pHyprRenderer->damageMonitor(g_pCompositor->getMonitorFromID(pWindow->m_iMonitorID));
|
||||||
|
|
||||||
g_pLayoutManager->getCurrentLayout()->unsetLayoutWindowData(pWindow);
|
pWindow->unsetWindowData(PRIORITY_LAYOUT);
|
||||||
|
|
||||||
if (pWindow == m_pLastTiledWindow)
|
if (pWindow == m_pLastTiledWindow)
|
||||||
m_pLastTiledWindow.reset();
|
m_pLastTiledWindow.reset();
|
||||||
|
@ -712,12 +712,4 @@ Vector2D IHyprLayout::predictSizeForNewWindow(PHLWINDOW pWindow) {
|
||||||
return sizePredicted;
|
return sizePredicted;
|
||||||
}
|
}
|
||||||
|
|
||||||
void IHyprLayout::unsetLayoutWindowData(PHLWINDOW pWindow) {
|
|
||||||
// not finished
|
|
||||||
pWindow->m_sWindowData.decorate.unset(PRIORITY_LAYOUT);
|
|
||||||
pWindow->m_sWindowData.noBorder.unset(PRIORITY_LAYOUT);
|
|
||||||
pWindow->m_sWindowData.noRounding.unset(PRIORITY_LAYOUT);
|
|
||||||
pWindow->m_sWindowData.noShadow.unset(PRIORITY_LAYOUT);
|
|
||||||
}
|
|
||||||
|
|
||||||
IHyprLayout::~IHyprLayout() {}
|
IHyprLayout::~IHyprLayout() {}
|
||||||
|
|
|
@ -195,8 +195,6 @@ class IHyprLayout {
|
||||||
virtual Vector2D predictSizeForNewWindow(PHLWINDOW pWindow);
|
virtual Vector2D predictSizeForNewWindow(PHLWINDOW pWindow);
|
||||||
virtual Vector2D predictSizeForNewWindowFloating(PHLWINDOW pWindow);
|
virtual Vector2D predictSizeForNewWindowFloating(PHLWINDOW pWindow);
|
||||||
|
|
||||||
virtual void unsetLayoutWindowData(PHLWINDOW);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
int m_iMouseMoveEventCount;
|
int m_iMouseMoveEventCount;
|
||||||
Vector2D m_vBeginDragXY;
|
Vector2D m_vBeginDragXY;
|
||||||
|
|
|
@ -264,7 +264,7 @@ void CHyprMasterLayout::onWindowRemovedTiling(PHLWINDOW pWindow) {
|
||||||
const auto MASTERSLEFT = getMastersOnWorkspace(WORKSPACEID);
|
const auto MASTERSLEFT = getMastersOnWorkspace(WORKSPACEID);
|
||||||
static auto SMALLSPLIT = CConfigValue<Hyprlang::INT>("master:allow_small_split");
|
static auto SMALLSPLIT = CConfigValue<Hyprlang::INT>("master:allow_small_split");
|
||||||
|
|
||||||
unsetLayoutWindowData(pWindow);
|
pWindow->unsetWindowData(PRIORITY_LAYOUT);
|
||||||
|
|
||||||
g_pCompositor->setWindowFullscreen(pWindow, false, FULLSCREEN_FULL);
|
g_pCompositor->setWindowFullscreen(pWindow, false, FULLSCREEN_FULL);
|
||||||
|
|
||||||
|
@ -646,7 +646,7 @@ void CHyprMasterLayout::applyNodeDataToWindow(SMasterNodeData* pNode) {
|
||||||
if (PWINDOW->m_bIsFullscreen && !pNode->ignoreFullscreenChecks)
|
if (PWINDOW->m_bIsFullscreen && !pNode->ignoreFullscreenChecks)
|
||||||
return;
|
return;
|
||||||
|
|
||||||
unsetLayoutWindowData(PWINDOW);
|
PWINDOW->unsetWindowData(PRIORITY_LAYOUT);
|
||||||
|
|
||||||
static auto PNOGAPSWHENONLY = CConfigValue<Hyprlang::INT>("master:no_gaps_when_only");
|
static auto PNOGAPSWHENONLY = CConfigValue<Hyprlang::INT>("master:no_gaps_when_only");
|
||||||
static auto PANIMATE = CConfigValue<Hyprlang::INT>("misc:animate_manual_resizes");
|
static auto PANIMATE = CConfigValue<Hyprlang::INT>("misc:animate_manual_resizes");
|
||||||
|
@ -922,7 +922,7 @@ void CHyprMasterLayout::fullscreenRequestForWindow(PHLWINDOW pWindow, eFullscree
|
||||||
pWindow->m_vRealPosition = pWindow->m_vLastFloatingPosition;
|
pWindow->m_vRealPosition = pWindow->m_vLastFloatingPosition;
|
||||||
pWindow->m_vRealSize = pWindow->m_vLastFloatingSize;
|
pWindow->m_vRealSize = pWindow->m_vLastFloatingSize;
|
||||||
|
|
||||||
unsetLayoutWindowData(pWindow);
|
pWindow->unsetWindowData(PRIORITY_LAYOUT);
|
||||||
}
|
}
|
||||||
} else {
|
} else {
|
||||||
// if it now got fullscreen, make it fullscreen
|
// if it now got fullscreen, make it fullscreen
|
||||||
|
|
Loading…
Reference in a new issue