From df6a3c687702e1d66215ff77aa97a003897f4140 Mon Sep 17 00:00:00 2001 From: vaxerski <43317083+vaxerski@users.noreply.github.com> Date: Sun, 3 Apr 2022 10:32:21 +0200 Subject: [PATCH] fix non-gdk popups on multimon --- src/events/Popups.cpp | 12 ++++++------ src/render/Renderer.cpp | 6 ------ 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/src/events/Popups.cpp b/src/events/Popups.cpp index 9ccd63b6..678951d5 100644 --- a/src/events/Popups.cpp +++ b/src/events/Popups.cpp @@ -18,8 +18,8 @@ void addPopupGlobalCoords(void* pPopup, int* x, int* y) { SXDGPopup *const PPOPUP = (SXDGPopup*)pPopup; - int px = PPOPUP->monitor->vecPosition.x; - int py = PPOPUP->monitor->vecPosition.y; + int px = 0; + int py = 0; auto curPopup = PPOPUP; while (true) { @@ -72,8 +72,8 @@ void Events::listener_newPopup(void* owner, void* data) { const auto PMONITOR = g_pCompositor->getMonitorFromID(layersurface->monitorID); PNEWPOPUP->popup = WLRPOPUP; - PNEWPOPUP->lx = layersurface->position.x; - PNEWPOPUP->ly = layersurface->position.y; + PNEWPOPUP->lx = layersurface->position.x - PMONITOR->vecPosition.x; + PNEWPOPUP->ly = layersurface->position.y - PMONITOR->vecPosition.y; PNEWPOPUP->monitor = PMONITOR; createNewPopup(WLRPOPUP, PNEWPOPUP); } @@ -93,8 +93,8 @@ void Events::listener_newPopupXDG(void* owner, void* data) { const auto PMONITOR = g_pCompositor->getMonitorFromID(PWINDOW->m_iMonitorID); PNEWPOPUP->popup = WLRPOPUP; - PNEWPOPUP->lx = PWINDOW->m_vEffectivePosition.x; - PNEWPOPUP->ly = PWINDOW->m_vEffectivePosition.y; + PNEWPOPUP->lx = PWINDOW->m_vEffectivePosition.x - PMONITOR->vecPosition.x; + PNEWPOPUP->ly = PWINDOW->m_vEffectivePosition.y - PMONITOR->vecPosition.y; PNEWPOPUP->parentWindow = PWINDOW; PNEWPOPUP->monitor = PMONITOR; createNewPopup(WLRPOPUP, PNEWPOPUP); diff --git a/src/render/Renderer.cpp b/src/render/Renderer.cpp index 276b4556..974ab663 100644 --- a/src/render/Renderer.cpp +++ b/src/render/Renderer.cpp @@ -18,12 +18,6 @@ void renderSurface(struct wlr_surface* surface, int x, int y, void* data) { double outputX = 0, outputY = 0; wlr_output_layout_output_coords(g_pCompositor->m_sWLROutputLayout, RDATA->output, &outputX, &outputY); - if (RDATA->pMonitor) { // BUG THIS TODO: this is just to show the popup on a monitor that isnt at 0,0 - // the popups are broken. - x -= ((SMonitor*)RDATA->pMonitor)->vecPosition.x; - y -= ((SMonitor*)RDATA->pMonitor)->vecPosition.y; - } - wlr_box windowBox; if (RDATA->surface && surface == RDATA->surface) { windowBox = {(int)outputX + RDATA->x + x, (int)outputY + RDATA->y + y, RDATA->w, RDATA->h};