summaryrefslogtreecommitdiff
path: root/src/events/Windows.cpp
diff options
context:
space:
mode:
authorvaxerski <43317083+vaxerski@users.noreply.github.com>2023-02-28 18:50:47 +0000
committervaxerski <43317083+vaxerski@users.noreply.github.com>2023-02-28 18:50:47 +0000
commit7e523e4d5e526bdf5ab86a8f4fe37efeef356707 (patch)
treee83277933da2e43028d76271726e9aff069079bb /src/events/Windows.cpp
parent89e7d812c80038083acdca85a5ba08ad97b2d0ea (diff)
minor fixes to X11 configure/or handling
Diffstat (limited to 'src/events/Windows.cpp')
-rw-r--r--src/events/Windows.cpp26
1 files changed, 16 insertions, 10 deletions
diff --git a/src/events/Windows.cpp b/src/events/Windows.cpp
index 58273d96..2405a309 100644
--- a/src/events/Windows.cpp
+++ b/src/events/Windows.cpp
@@ -446,7 +446,6 @@ void Events::listener_mapWindow(void* owner, void* data) {
PWINDOW->hyprListener_fullscreenWindow.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_fullscreen, &Events::listener_fullscreenWindow, PWINDOW,
"XWayland Window Late");
PWINDOW->hyprListener_activateX11.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_activate, &Events::listener_activateX11, PWINDOW, "XWayland Window Late");
- PWINDOW->hyprListener_configureX11.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_configure, &Events::listener_configureX11, PWINDOW, "XWayland Window Late");
PWINDOW->hyprListener_setTitleWindow.initCallback(&PWINDOW->m_uSurface.xwayland->events.set_title, &Events::listener_setTitleWindow, PWINDOW, "XWayland Window Late");
PWINDOW->hyprListener_requestMinimize.initCallback(&PWINDOW->m_uSurface.xwayland->events.request_minimize, &Events::listener_requestMinimize, PWINDOW,
"Xwayland Window Late");
@@ -596,7 +595,6 @@ void Events::listener_unmapWindow(void* owner, void* data) {
Debug::log(LOG, "Unregistered late callbacks XWL");
PWINDOW->hyprListener_fullscreenWindow.removeCallback();
PWINDOW->hyprListener_activateX11.removeCallback();
- PWINDOW->hyprListener_configureX11.removeCallback();
PWINDOW->hyprListener_setTitleWindow.removeCallback();
PWINDOW->hyprListener_setGeometryX11U.removeCallback();
PWINDOW->hyprListener_requestMaximize.removeCallback();
@@ -889,12 +887,15 @@ void Events::listener_activateX11(void* owner, void* data) {
}
void Events::listener_configureX11(void* owner, void* data) {
- CWindow* PWINDOW = (CWindow*)owner;
+ CWindow* PWINDOW = (CWindow*)owner;
- if (!g_pCompositor->windowValidMapped(PWINDOW))
+ const auto E = (wlr_xwayland_surface_configure_event*)data;
+
+ if (!PWINDOW->m_uSurface.xwayland->mapped || !PWINDOW->m_bMappedX11) {
+ wlr_xwayland_surface_configure(PWINDOW->m_uSurface.xwayland, E->x, E->y, E->width, E->height);
return;
+ }
- const auto E = (wlr_xwayland_surface_configure_event*)data;
g_pHyprRenderer->damageWindow(PWINDOW);
if (!PWINDOW->m_bIsFloating || PWINDOW->m_bIsFullscreen) {
@@ -904,11 +905,6 @@ void Events::listener_configureX11(void* owner, void* data) {
return;
}
- if (!PWINDOW->m_uSurface.xwayland->mapped || !PWINDOW->m_bMappedX11) {
- wlr_xwayland_surface_configure(PWINDOW->m_uSurface.xwayland, E->x, E->y, E->width, E->height);
- return;
- }
-
if (E->width > 1 && E->height > 1)
PWINDOW->setHidden(false);
else
@@ -974,6 +970,14 @@ void Events::listener_unmanagedSetGeometry(void* owner, void* data) {
}
}
+void Events::listener_setOverrideRedirect(void* owner, void* data) {
+ const auto PWINDOW = (CWindow*)owner;
+
+ if (!PWINDOW->m_bIsMapped && PWINDOW->m_uSurface.xwayland->mapped) {
+ Events::listener_mapWindow(PWINDOW, nullptr);
+ }
+}
+
void Events::listener_surfaceXWayland(wl_listener* listener, void* data) {
const auto XWSURFACE = (wlr_xwayland_surface*)data;
@@ -993,6 +997,8 @@ void Events::listener_surfaceXWayland(wl_listener* listener, void* data) {
PNEWWINDOW->hyprListener_mapWindow.initCallback(&XWSURFACE->events.map, &Events::listener_mapWindow, PNEWWINDOW, "XWayland Window");
PNEWWINDOW->hyprListener_unmapWindow.initCallback(&XWSURFACE->events.unmap, &Events::listener_unmapWindow, PNEWWINDOW, "XWayland Window");
PNEWWINDOW->hyprListener_destroyWindow.initCallback(&XWSURFACE->events.destroy, &Events::listener_destroyWindow, PNEWWINDOW, "XWayland Window");
+ PNEWWINDOW->hyprListener_setOverrideRedirect.initCallback(&XWSURFACE->events.set_override_redirect, &Events::listener_setOverrideRedirect, PNEWWINDOW, "XWayland Window");
+ PNEWWINDOW->hyprListener_configureX11.initCallback(&XWSURFACE->events.request_configure, &Events::listener_configureX11, PNEWWINDOW, "XWayland Window");
}
void Events::listener_newXDGSurface(wl_listener* listener, void* data) {