summaryrefslogtreecommitdiff
path: root/src/render/Renderer.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2022-08-05 17:07:01 +0200
committervaxerski <43317083+vaxerski@users.noreply.github.com>2022-08-05 17:07:01 +0200
commite0ada97a24adbe939db90c388b0d38161047f216 (patch)
tree592b55925e869ce3364e701267670ee37c0f3b43 /src/render/Renderer.cpp
parent9a8a6317ff9dc7d97a0018d8d0b19cd033d2c47b (diff)
support zwp_input_method_v2 popups
Diffstat (limited to 'src/render/Renderer.cpp')
-rw-r--r--src/render/Renderer.cpp18
1 files changed, 18 insertions, 0 deletions
diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp
index 2f5772d5..863ea9e8 100644
--- a/src/render/Renderer.cpp
+++ b/src/render/Renderer.cpp
@@ -304,6 +304,18 @@ void CHyprRenderer::renderLayer(SLayerSurface* pLayer, CMonitor* pMonitor, times
wlr_layer_surface_v1_for_each_popup_surface(pLayer->layerSurface, renderSurface, &renderdata);
}
+void CHyprRenderer::renderIMEPopup(SIMEPopup* pPopup, CMonitor* pMonitor, timespec* time) {
+ SRenderData renderdata = {pMonitor->output, time, pPopup->realX, pPopup->realY};
+
+ renderdata.blur = false;
+ renderdata.surface = pPopup->pSurface->surface;
+ renderdata.decorate = false;
+ renderdata.w = pPopup->pSurface->surface->current.width;
+ renderdata.h = pPopup->pSurface->surface->current.height;
+
+ wlr_surface_for_each_surface(pPopup->pSurface->surface, renderSurface, &renderdata);
+}
+
void CHyprRenderer::renderAllClientsForMonitor(const int& ID, timespec* time) {
const auto PMONITOR = g_pCompositor->getMonitorFromID(ID);
@@ -403,6 +415,12 @@ void CHyprRenderer::renderAllClientsForMonitor(const int& ID, timespec* time) {
for (auto& ls : PMONITOR->m_aLayerSurfaceLists[ZWLR_LAYER_SHELL_V1_LAYER_TOP]) {
renderLayer(ls.get(), PMONITOR, time);
}
+
+ // Render IME popups
+ for (auto& imep : g_pInputManager->m_sIMERelay.m_lIMEPopups) {
+ renderIMEPopup(&imep, PMONITOR, time);
+ }
+
for (auto& ls : PMONITOR->m_aLayerSurfaceLists[ZWLR_LAYER_SHELL_V1_LAYER_OVERLAY]) {
renderLayer(ls.get(), PMONITOR, time);
}