> I attached a somewhat ugly patch to correct the behavior, [...]

Since I didn't like how this patch turned out I looked into this a bit
further. Attached is a less intrusive patch, once to tip and once to
6.0. I ran this patch for a day or so and didn't have any issues.

If no problems show up I think this is a better way of dealing with the
SDL problem.

-- 
Eckehard Berns
diff -r 070112b7435f dwm.c
--- a/dwm.c     Thu Jan 12 07:36:05 2012 +0100
+++ b/dwm.c     Sat Jan 14 12:34:59 2012 +0100
@@ -397,9 +397,10 @@
                showhide(m->stack);
        else for(m = mons; m; m = m->next)
                showhide(m->stack);
-       if(m)
+       if(m) {
                arrangemon(m);
-       else for(m = mons; m; m = m->next)
+               restack(m);
+       } else for(m = mons; m; m = m->next)
                arrangemon(m);
 }
 
@@ -408,7 +409,6 @@
        strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol);
        if(m->lt[m->sellt]->arrange)
                m->lt[m->sellt]->arrange(m);
-       restack(m);
 }
 
 void
@@ -1420,6 +1420,8 @@
        drawbar(m);
        if(!m->sel)
                return;
+       if(m->sel->isfloating || !m->lt[m->sellt]->arrange)
+               XRaiseWindow(dpy, m->sel->win);
        if(m->lt[m->sellt]->arrange) {
                wc.stack_mode = Below;
                wc.sibling = m->barwin;
diff -r ec4baab78314 dwm.c
--- a/dwm.c     Mon Dec 19 15:38:30 2011 +0100
+++ b/dwm.c     Sat Jan 14 12:35:50 2012 +0100
@@ -397,9 +397,10 @@
                showhide(m->stack);
        else for(m = mons; m; m = m->next)
                showhide(m->stack);
-       if(m)
+       if(m) {
                arrangemon(m);
-       else for(m = mons; m; m = m->next)
+               restack(m);
+       } else for(m = mons; m; m = m->next)
                arrangemon(m);
 }
 
@@ -408,7 +409,6 @@
        strncpy(m->ltsymbol, m->lt[m->sellt]->symbol, sizeof m->ltsymbol);
        if(m->lt[m->sellt]->arrange)
                m->lt[m->sellt]->arrange(m);
-       restack(m);
 }
 
 void
@@ -1827,6 +1827,8 @@
                .event_mask = ButtonPressMask|ExposureMask
        };
        for(m = mons; m; m = m->next) {
+               if (m->barwin)
+                       continue;
                m->barwin = XCreateWindow(dpy, root, m->wx, m->by, m->ww, bh, 
0, DefaultDepth(dpy, screen),
                                          CopyFromParent, DefaultVisual(dpy, 
screen),
                                          
CWOverrideRedirect|CWBackPixmap|CWEventMask, &wa);

Reply via email to