From 5cc4bf699cfe4d5915b8ea9f2a7c8449cdc7bd2f Mon Sep 17 00:00:00 2001 From: Vaxry Date: Sun, 24 Mar 2024 16:08:25 +0000 Subject: IME: Refactor and fixup popups --- src/render/Renderer.cpp | 20 ++++++++++++-------- src/render/Renderer.hpp | 2 +- 2 files changed, 13 insertions(+), 9 deletions(-) (limited to 'src/render') 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); -- cgit v1.2.3