diff options
| author | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-02-28 19:36:36 +0000 |
|---|---|---|
| committer | vaxerski <43317083+vaxerski@users.noreply.github.com> | 2023-02-28 19:36:36 +0000 |
| commit | 4b20d4f1add40130653b9a3f2351eb44e0e0df4b (patch) | |
| tree | dbf7a2038f30fba5fac49dd26989c005afa9c9e2 /src/render | |
| parent | 7beb9fd606106e82554c7050aebbc5ca23dafa79 (diff) | |
Added decoration reserved area
Diffstat (limited to 'src/render')
| -rw-r--r-- | src/render/Renderer.cpp | 7 | ||||
| -rw-r--r-- | src/render/decorations/IHyprWindowDecoration.cpp | 4 | ||||
| -rw-r--r-- | src/render/decorations/IHyprWindowDecoration.hpp | 2 |
3 files changed, 10 insertions, 3 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 07f043de..0914eb49 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -237,7 +237,8 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec* } const auto PWORKSPACE = g_pCompositor->getWorkspaceByID(pWindow->m_iWorkspaceID); - const auto REALPOS = pWindow->m_vRealPosition.vec() + (pWindow->m_bPinned ? Vector2D{} : PWORKSPACE->m_vRenderOffset.vec()); + const auto RESERVED = pWindow->getFullWindowReservedArea(); + const auto REALPOS = pWindow->m_vRealPosition.vec() + (pWindow->m_bPinned ? Vector2D{} : PWORKSPACE->m_vRenderOffset.vec()) + RESERVED.topLeft; static auto* const PNOFLOATINGBORDERS = &g_pConfigManager->getConfigValuePtr("general:no_border_on_floating")->intValue; static auto* const PDIMAROUND = &g_pConfigManager->getConfigValuePtr("decoration:dim_around")->floatValue; @@ -251,8 +252,8 @@ void CHyprRenderer::renderWindow(CWindow* pWindow, CMonitor* pMonitor, timespec* decorate = false; renderdata.surface = g_pXWaylandManager->getWindowSurface(pWindow); - renderdata.w = std::max(pWindow->m_vRealSize.vec().x, 5.0); // clamp the size to min 5, - renderdata.h = std::max(pWindow->m_vRealSize.vec().y, 5.0); // otherwise we'll have issues later with invalid boxes + renderdata.w = std::max(pWindow->m_vRealSize.vec().x - RESERVED.topLeft.x - RESERVED.bottomRight.x, 5.0); // clamp the size to min 5, + renderdata.h = std::max(pWindow->m_vRealSize.vec().y - RESERVED.topLeft.y - RESERVED.bottomRight.y, 5.0); // otherwise we'll have issues later with invalid boxes renderdata.dontRound = (pWindow->m_bIsFullscreen && PWORKSPACE->m_efFullscreenMode == FULLSCREEN_FULL) || (!pWindow->m_sSpecialRenderData.rounding); renderdata.fadeAlpha = pWindow->m_fAlpha.fl() * (pWindow->m_bPinned ? 1.f : PWORKSPACE->m_fAlpha.fl()); renderdata.alpha = pWindow->m_fActiveInactiveAlpha.fl(); diff --git a/src/render/decorations/IHyprWindowDecoration.cpp b/src/render/decorations/IHyprWindowDecoration.cpp index 1271a712..1c1fe734 100644 --- a/src/render/decorations/IHyprWindowDecoration.cpp +++ b/src/render/decorations/IHyprWindowDecoration.cpp @@ -3,3 +3,7 @@ #include "../../Window.hpp" IHyprWindowDecoration::~IHyprWindowDecoration() {} + +SWindowDecorationExtents IHyprWindowDecoration::getWindowDecorationReservedArea() { + return SWindowDecorationExtents{}; +} diff --git a/src/render/decorations/IHyprWindowDecoration.hpp b/src/render/decorations/IHyprWindowDecoration.hpp index 4cd52cba..f07746ef 100644 --- a/src/render/decorations/IHyprWindowDecoration.hpp +++ b/src/render/decorations/IHyprWindowDecoration.hpp @@ -31,4 +31,6 @@ interface IHyprWindowDecoration { virtual void updateWindow(CWindow*) = 0; virtual void damageEntire() = 0; + + virtual SWindowDecorationExtents getWindowDecorationReservedArea(); };
\ No newline at end of file |
