summaryrefslogtreecommitdiff
path: root/src/render
diff options
context:
space:
mode:
authorVaxry <vaxry@vaxry.net>2024-03-24 16:08:25 +0000
committerVaxry <vaxry@vaxry.net>2024-03-24 16:08:25 +0000
commit5cc4bf699cfe4d5915b8ea9f2a7c8449cdc7bd2f (patch)
treed524435ee7bafe19d1bfdb2d741bc0e2c7ae30ee /src/render
parentacf15e5579a5d2bbbe4a13e87306445e31ea5e4f (diff)
IME: Refactor and fixup popups
Diffstat (limited to 'src/render')
-rw-r--r--src/render/Renderer.cpp20
-rw-r--r--src/render/Renderer.hpp2
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);