diff options
| author | Vaxry <vaxry@vaxry.net> | 2024-03-24 16:08:25 +0000 |
|---|---|---|
| committer | Vaxry <vaxry@vaxry.net> | 2024-03-24 16:08:25 +0000 |
| commit | 5cc4bf699cfe4d5915b8ea9f2a7c8449cdc7bd2f (patch) | |
| tree | d524435ee7bafe19d1bfdb2d741bc0e2c7ae30ee /src/render | |
| parent | acf15e5579a5d2bbbe4a13e87306445e31ea5e4f (diff) | |
IME: Refactor and fixup popups
Diffstat (limited to 'src/render')
| -rw-r--r-- | src/render/Renderer.cpp | 20 | ||||
| -rw-r--r-- | src/render/Renderer.hpp | 2 |
2 files changed, 13 insertions, 9 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 7f83c429..a3112c1e 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -679,16 +679,20 @@ void CHyprRenderer::renderLayer(SLayerSurface* pLayer, CMonitor* pMonitor, times g_pHyprOpenGL->m_RenderData.clipBox = {}; } -void CHyprRenderer::renderIMEPopup(SIMEPopup* pPopup, CMonitor* pMonitor, timespec* time) { - SRenderData renderdata = {pMonitor, time, pPopup->realX, pPopup->realY}; +void CHyprRenderer::renderIMEPopup(CInputPopup* pPopup, CMonitor* pMonitor, timespec* time) { + const auto POS = pPopup->globalBox().pos(); + + SRenderData renderdata = {pMonitor, time, POS.x, POS.y}; + + const auto SURF = pPopup->getWlrSurface(); renderdata.blur = false; - renderdata.surface = pPopup->pSurface->surface; + renderdata.surface = SURF; renderdata.decorate = false; - renderdata.w = pPopup->pSurface->surface->current.width; - renderdata.h = pPopup->pSurface->surface->current.height; + renderdata.w = SURF->current.width; + renderdata.h = SURF->current.height; - wlr_surface_for_each_surface(pPopup->pSurface->surface, renderSurface, &renderdata); + wlr_surface_for_each_surface(SURF, renderSurface, &renderdata); } void CHyprRenderer::renderSessionLockSurface(SSessionLockSurface* pSurface, CMonitor* pMonitor, timespec* time) { @@ -830,8 +834,8 @@ void CHyprRenderer::renderAllClientsForWorkspace(CMonitor* pMonitor, CWorkspace* } // Render IME popups - for (auto& imep : g_pInputManager->m_sIMERelay.m_lIMEPopups) { - renderIMEPopup(&imep, pMonitor, time); + for (auto& imep : g_pInputManager->m_sIMERelay.m_vIMEPopups) { + renderIMEPopup(imep.get(), pMonitor, time); } for (auto& ls : pMonitor->m_aLayerSurfaceLayers[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY]) { diff --git a/src/render/Renderer.hpp b/src/render/Renderer.hpp index fd41a566..1c6628f1 100644 --- a/src/render/Renderer.hpp +++ b/src/render/Renderer.hpp @@ -115,7 +115,7 @@ class CHyprRenderer { void renderLayer(SLayerSurface*, CMonitor*, timespec*); void renderSessionLockSurface(SSessionLockSurface*, CMonitor*, timespec*); void renderDragIcon(CMonitor*, timespec*); - void renderIMEPopup(SIMEPopup*, CMonitor*, timespec*); + void renderIMEPopup(CInputPopup*, CMonitor*, timespec*); void renderWorkspace(CMonitor* pMonitor, CWorkspace* pWorkspace, timespec* now, const CBox& geometry); void renderAllClientsForWorkspace(CMonitor* pMonitor, CWorkspace* pWorkspace, timespec* now, const Vector2D& translate = {0, 0}, const float& scale = 1.f); |
