From 27c166063928bd559d768f75b2fe3390ada26068 Mon Sep 17 00:00:00 2001 From: cxl Date: Sat, 17 Sep 2011 12:03:18 +0000 Subject: [PATCH] developing WM_PID support git-svn-id: svn://ultimatepp.org/upp/trunk@3869 f0d560ea-af0d-0410-9eb7-867de7ffcac7 --- uppsrc/CtrlCore/TopWinX11.cpp | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/uppsrc/CtrlCore/TopWinX11.cpp b/uppsrc/CtrlCore/TopWinX11.cpp index f7d0d9012..7cd4c9687 100644 --- a/uppsrc/CtrlCore/TopWinX11.cpp +++ b/uppsrc/CtrlCore/TopWinX11.cpp @@ -338,10 +338,22 @@ void TopWindow::Open(Ctrl *owner) if(IsOpen() && top) top->owner = owner; - Window win = GetWindow(); long curr_pid = getpid(); + + static Window wm_client_leader; + ONCELOCK { + wm_client_leader = XCreateSimpleWindow(Xdisplay, Xroot, 0, 0, 1, 1, 0, 0, 0); + XChangeProperty(Xdisplay, wm_client_leader, XAtom("WM_CLIENT_LEADER"), + XA_WINDOW, 32, PropModeReplace, (byte *)&wm_client_leader, 1); + XChangeProperty(Xdisplay, wm_client_leader, XAtom("_NET_WM_PID"), XA_CARDINAL, 32, + PropModeReplace, (byte *) &curr_pid, 1); + } + + Window win = GetWindow(); XChangeProperty(Xdisplay, win, XAtom("_NET_WM_PID"), XA_CARDINAL, 32, PropModeReplace, (byte *) &curr_pid, 1); + XChangeProperty(Xdisplay, win, XAtom("WM_CLIENT_LEADER"), + XA_WINDOW, 32, PropModeReplace, (byte *)&wm_client_leader, 1); int version = 5; XChangeProperty(Xdisplay, win, XAtom("XdndAware"), XA_ATOM, 32,