From 15cee0bec089d8356339d8fe5a779ab2b2086a3b Mon Sep 17 00:00:00 2001 From: Vaxry Date: Sat, 4 Nov 2023 17:22:55 +0000 Subject: [PATCH] hyprbars: fix for hyprland@#3755 --- hyprbars/barDeco.cpp | 30 +++++++++++++----------------- hyprbars/barDeco.hpp | 2 +- 2 files changed, 14 insertions(+), 18 deletions(-) diff --git a/hyprbars/barDeco.cpp b/hyprbars/barDeco.cpp index 4a3327d..6d8f36d 100644 --- a/hyprbars/barDeco.cpp +++ b/hyprbars/barDeco.cpp @@ -299,7 +299,7 @@ void CHyprBar::renderBarButtons(const Vector2D& bufferSize, const float scale) { cairo_surface_destroy(CAIROSURFACE); } -void CHyprBar::renderBarButtonsText(wlr_box* barBox, const float scale, const float a) { +void CHyprBar::renderBarButtonsText(CBox* barBox, const float scale, const float a) { const auto scaledButtonsPad = BUTTONS_PAD * scale; int offset = scaledButtonsPad; @@ -318,7 +318,7 @@ void CHyprBar::renderBarButtonsText(wlr_box* barBox, const float scale, const fl if (button.iconTex.m_iTexID == 0) return; - wlr_box pos = {barBox->x + barBox->width - offset - scaledButtonSize * 1.5, barBox->y + (barBox->height - scaledButtonSize) / 2.0, scaledButtonSize, scaledButtonSize}; + CBox pos = {barBox->x + barBox->width - offset - scaledButtonSize * 1.5, barBox->y + (barBox->height - scaledButtonSize) / 2.0, scaledButtonSize, scaledButtonSize}; g_pHyprOpenGL->renderTexture(button.iconTex, &pos, a); @@ -356,15 +356,12 @@ void CHyprBar::draw(CMonitor* pMonitor, float a, const Vector2D& offset) { m_seExtents = {{0, *PHEIGHT}, {}}; - const auto BARBUF = Vector2D{(int)m_vLastWindowSize.x + 2 * BORDERSIZE, *PHEIGHT} * pMonitor->scale; + const auto BARBUF = Vector2D{m_vLastWindowSize.x + 2 * BORDERSIZE, *PHEIGHT} * pMonitor->scale; - wlr_box titleBarBox = {(int)m_vLastWindowPos.x - BORDERSIZE - pMonitor->vecPosition.x, (int)m_vLastWindowPos.y - BORDERSIZE - *PHEIGHT - pMonitor->vecPosition.y, - (int)m_vLastWindowSize.x + 2 * BORDERSIZE, *PHEIGHT + ROUNDING * 3 /* to fill the bottom cuz we can't disable rounding there */}; + CBox titleBarBox = {m_vLastWindowPos.x - BORDERSIZE - pMonitor->vecPosition.x, m_vLastWindowPos.y - BORDERSIZE - *PHEIGHT - pMonitor->vecPosition.y, + m_vLastWindowSize.x + 2 * BORDERSIZE, *PHEIGHT + ROUNDING * 3 /* to fill the bottom cuz we can't disable rounding there */}; - titleBarBox.x += offset.x; - titleBarBox.y += offset.y; - - scaleBox(&titleBarBox, pMonitor->scale); + titleBarBox.translate(offset).scale(pMonitor->scale).round(); g_pHyprOpenGL->scissor(&titleBarBox); @@ -379,10 +376,9 @@ void CHyprBar::draw(CMonitor* pMonitor, float a, const Vector2D& offset) { glColorMask(GL_FALSE, GL_FALSE, GL_FALSE, GL_FALSE); // the +1 is a shit garbage temp fix until renderRect supports an alpha matte - wlr_box windowBox = {(int)m_vLastWindowPos.x + offset.x - pMonitor->vecPosition.x - BORDERSIZE + 1, - (int)m_vLastWindowPos.y + offset.y - pMonitor->vecPosition.y - BORDERSIZE + 1, (int)m_vLastWindowSize.x + 2 * BORDERSIZE - 2, - (int)m_vLastWindowSize.y + 2 * BORDERSIZE - 2}; - scaleBox(&windowBox, pMonitor->scale); + CBox windowBox = {m_vLastWindowPos.x + offset.x - pMonitor->vecPosition.x - BORDERSIZE + 1, m_vLastWindowPos.y + offset.y - pMonitor->vecPosition.y - BORDERSIZE + 1, + m_vLastWindowSize.x + 2 * BORDERSIZE - 2, m_vLastWindowSize.y + 2 * BORDERSIZE - 2}; + windowBox.scale(pMonitor->scale).round(); g_pHyprOpenGL->renderRect(&windowBox, CColor(0, 0, 0, 0), scaledRounding); glColorMask(GL_TRUE, GL_TRUE, GL_TRUE, GL_TRUE); @@ -407,7 +403,7 @@ void CHyprBar::draw(CMonitor* pMonitor, float a, const Vector2D& offset) { glStencilFunc(GL_ALWAYS, 1, 0xFF); } - wlr_box textBox = {titleBarBox.x, titleBarBox.y, (int)BARBUF.x, (int)BARBUF.y}; + CBox textBox = {titleBarBox.x, titleBarBox.y, (int)BARBUF.x, (int)BARBUF.y}; g_pHyprOpenGL->renderTexture(m_tTextTex, &textBox, a); if (m_bButtonsDirty || m_bWindowSizeChanged) { @@ -417,7 +413,7 @@ void CHyprBar::draw(CMonitor* pMonitor, float a, const Vector2D& offset) { g_pHyprOpenGL->renderTexture(m_tButtonsTex, &textBox, a); - g_pHyprOpenGL->scissor((wlr_box*)nullptr); + g_pHyprOpenGL->scissor((CBox*)nullptr); renderBarButtonsText(&textBox, pMonitor->scale, a); @@ -449,8 +445,8 @@ void CHyprBar::updateWindow(CWindow* pWindow) { } void CHyprBar::damageEntire() { - wlr_box dm = {(int)(m_vLastWindowPos.x - m_seExtents.topLeft.x - 2), (int)(m_vLastWindowPos.y - m_seExtents.topLeft.y - 2), - (int)(m_vLastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x + 4), (int)m_seExtents.topLeft.y + 4}; + CBox dm = {(int)(m_vLastWindowPos.x - m_seExtents.topLeft.x - 2), (int)(m_vLastWindowPos.y - m_seExtents.topLeft.y - 2), + (int)(m_vLastWindowSize.x + m_seExtents.topLeft.x + m_seExtents.bottomRight.x + 4), (int)m_seExtents.topLeft.y + 4}; g_pHyprRenderer->damageBox(&dm); } diff --git a/hyprbars/barDeco.hpp b/hyprbars/barDeco.hpp index 6c894e6..95aa3eb 100644 --- a/hyprbars/barDeco.hpp +++ b/hyprbars/barDeco.hpp @@ -47,7 +47,7 @@ class CHyprBar : public IHyprWindowDecoration { void renderBarTitle(const Vector2D& bufferSize, const float scale); void renderText(CTexture& out, const std::string& text, const CColor& color, const Vector2D& bufferSize, const float scale, const int fontSize); void renderBarButtons(const Vector2D& bufferSize, const float scale); - void renderBarButtonsText(wlr_box* barBox, const float scale, const float a); + void renderBarButtonsText(CBox* barBox, const float scale, const float a); void onMouseDown(SCallbackInfo& info, wlr_pointer_button_event* e); void onMouseMove(Vector2D coords);