From 3a3d24cc96ab200614ff59d82c428eede6d02bd2 Mon Sep 17 00:00:00 2001 From: Ashlynn Anderson Date: Fri, 8 Apr 2022 21:27:45 -0400 Subject: [PATCH 1/3] Fix GTK drag&drop and xprop If WM_STATE is not set both break --- src/events/maprequest.nim | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/events/maprequest.nim b/src/events/maprequest.nim index 5cf8b65..aa988bc 100644 --- a/src/events/maprequest.nim +++ b/src/events/maprequest.nim @@ -94,6 +94,17 @@ proc handleMapRequest*(self: var Wm; ev: XMapRequestEvent): void = discard self.dpy.XSelectInput(ev.window, PropertyChangeMask) discard self.dpy.XReparentWindow(ev.window, frame, 0, cint frameHeight) + # WM_NAME must be set for GTK drag&drop and xprop + let wm_state: uint8 = NormalState + discard self.dpy.XChangeProperty( + ev.window, + self.dpy.XInternAtom("WM_STATE".cstring, false), + XaWindow, + 8, + PropModeReplace, + cast[cstring](unsafeAddr wm_state), + 1 + ) let top = self.dpy.XCreateWindow(frame, 0, 0, cuint attr.width, cuint frameHeight, 0, attr.depth, InputOutput, From 827875586aac87617c962be3a02c56a41b69577e Mon Sep 17 00:00:00 2001 From: Ashlynn Anderson Date: Fri, 8 Apr 2022 21:32:00 -0400 Subject: [PATCH 2/3] More detailed comments --- src/events/maprequest.nim | 1 + 1 file changed, 1 insertion(+) diff --git a/src/events/maprequest.nim b/src/events/maprequest.nim index aa988bc..b49cbd8 100644 --- a/src/events/maprequest.nim +++ b/src/events/maprequest.nim @@ -95,6 +95,7 @@ proc handleMapRequest*(self: var Wm; ev: XMapRequestEvent): void = discard self.dpy.XReparentWindow(ev.window, frame, 0, cint frameHeight) # WM_NAME must be set for GTK drag&drop and xprop + # https://github.com/i3/i3/blob/dba30fc9879b42e6b89773c81e1067daa2bb6e23/src/x.c#L1065 let wm_state: uint8 = NormalState discard self.dpy.XChangeProperty( ev.window, From f8f98cf63dcb0fcbaffb0c0130819e7bde913233 Mon Sep 17 00:00:00 2001 From: Ashlynn Anderson Date: Fri, 8 Apr 2022 21:41:02 -0400 Subject: [PATCH 3/3] Fix typo --- src/events/maprequest.nim | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/events/maprequest.nim b/src/events/maprequest.nim index b49cbd8..70cd2e7 100644 --- a/src/events/maprequest.nim +++ b/src/events/maprequest.nim @@ -94,7 +94,7 @@ proc handleMapRequest*(self: var Wm; ev: XMapRequestEvent): void = discard self.dpy.XSelectInput(ev.window, PropertyChangeMask) discard self.dpy.XReparentWindow(ev.window, frame, 0, cint frameHeight) - # WM_NAME must be set for GTK drag&drop and xprop + # WM_STATE must be set for GTK drag&drop and xprop # https://github.com/i3/i3/blob/dba30fc9879b42e6b89773c81e1067daa2bb6e23/src/x.c#L1065 let wm_state: uint8 = NormalState discard self.dpy.XChangeProperty(