This diff moves dialogs, toolbars and such to the group of the main
application window.

Index: client.c
===================================================================
RCS file: /cvs/xenocara/app/cwm/client.c,v
retrieving revision 1.86
diff -u -p -r1.86 client.c
--- client.c    14 Jul 2011 11:39:53 -0000      1.86
+++ client.c    31 Aug 2011 14:13:41 -0000
@@ -58,9 +58,10 @@ client_find(Window win)
 struct client_ctx *
 client_new(Window win, struct screen_ctx *sc, int mapped)
 {
-       struct client_ctx       *cc;
+       struct client_ctx       *cc, *tc;
        XWindowAttributes        wattr;
        XWMHints                *wmhints;
+       Window                   trans;
        int                      state;
 
        if (win == None)
@@ -133,6 +134,10 @@ client_new(Window win, struct screen_ctx
 
        if (mapped)
                group_autogroup(cc);
+
+       if (XGetTransientForHint(X_Dpy, win, &trans))
+           if ((tc = client_find(trans)) && tc->group)
+               group_movetogroup(cc, tc->group->shortcut - 1);
 
        return (cc);
 }
Index: xevents.c
===================================================================
RCS file: /cvs/xenocara/app/cwm/xevents.c,v
retrieving revision 1.55
diff -u -p -r1.55 xevents.c
--- xevents.c   22 Aug 2011 16:34:34 -0000      1.55
+++ xevents.c   31 Aug 2011 14:13:41 -0000
@@ -181,7 +181,8 @@ xev_handle_propertynotify(XEvent *ee)
 {
        XPropertyEvent          *e = &ee->xproperty;
        struct screen_ctx       *sc;
-       struct client_ctx       *cc;
+       struct client_ctx       *cc, *tc;
+       Window                  trans;
 
        if ((cc = client_find(e->window)) != NULL) {
                switch (e->atom) {
@@ -191,6 +192,10 @@ xev_handle_propertynotify(XEvent *ee)
                case XA_WM_NAME:
                        client_setname(cc);
                        break;
+               case XA_WM_TRANSIENT_FOR:
+                       if (XGetTransientForHint(X_Dpy, e->window, &trans))
+                           if ((tc = client_find(trans)) && tc->group)
+                               group_movetogroup(cc, tc->group->shortcut - 1);
                default:
                        /* do nothing */
                        break;

-- 
Alexander Polakov | plhk.ru

Reply via email to