rpms/wmx/devel wmx-6pl1-cfgbug.patch, NONE, 1.1 wmx-6pl1-cvs20060602.patch, NONE, 1.1 wmx-6pl1-cfg.patch, 1.1, 1.2 wmx.spec, 1.5, 1.6 wmx-6pl1-fix.patch, 1.1, NONE

Gabriel L. Somlo (somlo) fedora-extras-commits at redhat.com
Mon Jun 5 17:37:39 UTC 2006


Author: somlo

Update of /cvs/extras/rpms/wmx/devel
In directory cvs-int.fedora.redhat.com:/tmp/cvs-serv8492

Modified Files:
	wmx-6pl1-cfg.patch wmx.spec 
Added Files:
	wmx-6pl1-cfgbug.patch wmx-6pl1-cvs20060602.patch 
Removed Files:
	wmx-6pl1-fix.patch 
Log Message:
- added patch containing latest cvs fixes
- both monolithic and modular X supported in the same specfile (to be removed when we drop support for fc4)
- added patch by zpetkovic at acm.org for dynamic config string termination bug
- cvs patch screws up ALT key define, subsequent config patch puts it back


wmx-6pl1-cfgbug.patch:

--- NEW FILE wmx-6pl1-cfgbug.patch ---
diff -NarU5 wmx-6pl1.orig/Config.C wmx-6pl1/Config.C
--- wmx-6pl1.orig/Config.C	2006-06-04 14:23:33.000000000 -0400
+++ wmx-6pl1/Config.C	2006-06-04 14:25:03.000000000 -0400
@@ -149,13 +149,25 @@
 	    if (OPTION("off")) m_impl->rightBt = 0;
 	    else if (OPTION("circulate")) m_impl->rightBt = 1;
 	    else if (OPTION("lower")) m_impl->rightBt = 2;
 	    else if (OPTION("toggleheight")) m_impl->rightBt = 4;
 	
-	if (OPTION("tabfg:")) strncpy(m_impl->tabfg, s, COLOR_LEN);
-	if (OPTION("tabbg:")) strncpy(m_impl->tabbg, s, COLOR_LEN);
-	if (OPTION("framebg:")) strncpy(m_impl->framebg, s, COLOR_LEN);
+	if (OPTION("tabfg:")) {
+	    strncpy(m_impl->tabfg, s, COLOR_LEN);
+	    m_impl->tabfg[COLOR_LEN-1] = '\0';	// prevent unterminated string
+	    s += strlen(m_impl->tabfg);		// avoid error message below
+	}
+	if (OPTION("tabbg:")) {
+	    strncpy(m_impl->tabbg, s, COLOR_LEN);
+	    m_impl->tabbg[COLOR_LEN-1] = '\0';
+	    s += strlen(m_impl->tabbg);
+	}
+	if (OPTION("framebg:")) {
+	    strncpy(m_impl->framebg, s, COLOR_LEN);
+	    m_impl->framebg[COLOR_LEN-1] = '\0';
+	    s += strlen(m_impl->framebg);
+	}
 
 	if (*s != '\0') {
 	    fprintf(stderr, "\nwmx: Dynamic configuration error: "
 		    "`%s' @ position %d", s, string - s);
 	}

wmx-6pl1-cvs20060602.patch:

--- NEW FILE wmx-6pl1-cvs20060602.patch ---
diff -NarU5 wmx-6pl1/Border.C wmx-cvs-2006-06-02/Border.C
--- wmx-6pl1/Border.C	2001-04-04 05:02:34.000000000 -0400
+++ wmx-cvs-2006-06-02/Border.C	2003-08-14 08:54:22.000000000 -0400
@@ -84,13 +84,15 @@
 	if (!m_parent) fprintf(stderr,"wmx: zero parent in Border::~Border\n");
 	else {
 	    XDestroyWindow(display(), m_tab);
 	    XDestroyWindow(display(), m_button);
 	    XDestroyWindow(display(), m_parent);
-
-	    // bad window if its parent has already gone:
 	    XDestroyWindow(display(), m_resize);
+
+	    if (m_feedback) {
+	        XDestroyWindow(display(), m_feedback);
+	    }
 	}
     }
 
     if (m_label) free(m_label);
 }
@@ -748,15 +750,14 @@
 	rl.append(rl.item(rl.count()-2));
 	rl.remove(rl.count()-3);
     }
 
     int final = rl.count();
-    rl.append(rl.item(final-1));
-    rl.item(final).x -= 1;
-    rl.item(final).y += rl.item(final).height;
-    rl.item(final).width += 1;
-    rl.item(final).height = h - rl.item(final).height + 2;
+    rl.append(rl.item(final-1).x - 1,
+              rl.item(final-1).y + rl.item(final-1).height,
+              rl.item(final-1).width + 1,
+              h - rl.item(final-1).height + 2);
 
     XShapeCombineRectangles(display(), m_parent, ShapeBounding,
 			    0, 0, rl.xrectangles(), rl.count(),
 			    visible ? ShapeUnion : ShapeSubtract, YXSorted);
     rl.remove_all();
diff -NarU5 wmx-6pl1/Buttons.C wmx-cvs-2006-06-02/Buttons.C
--- wmx-6pl1/Buttons.C	2001-04-24 04:56:39.000000000 -0400
+++ wmx-cvs-2006-06-02/Buttons.C	2003-08-14 09:07:12.000000000 -0400
@@ -16,18 +16,18 @@
     enum {Vertical, Maximum, Horizontal};
     setScreenFromPointer();
     Client *c = windowToClient(e->window);
 
 #if CONFIG_GNOME_BUTTON_COMPLIANCE == False
-    if (e->button == Button3 && m_channelChangeTime == 0) {
-	if (dConfig.rightCirculate())
+    if (e->button == CONFIG_CIRCULATE_BUTTON && m_channelChangeTime == 0) {
+	if (DynamicConfig::config.rightCirculate())
 	    circulate(e->window == e->root);
-	else if (dConfig.rightLower())
+	else if (DynamicConfig::config.rightLower())
  	{
 	    if (e->window != e->root && c) c->lower();
  	}
- 	else if (dConfig.rightToggleHeight())
+ 	else if (DynamicConfig::config.rightToggleHeight())
  	{
   	    if (e->window != e->root && c) {
  		if (c->isFullHeight()) {
  		    c->unmaximise(Vertical);
  		} else {
@@ -37,73 +37,73 @@
  	}
 	return;
     }
 #endif
  
-    if (e->button == Button4 && CONFIG_CHANNEL_SURF) {
+    if (e->button == CONFIG_NEXTCHANNEL_BUTTON && CONFIG_CHANNEL_SURF) {
         // wheel "up" - increase channel
         flipChannel(False, False, True, c);
         return ;
-    } else if (e->button == Button5 && CONFIG_CHANNEL_SURF) {
+    } else if (e->button == CONFIG_PREVCHANNEL_BUTTON && CONFIG_CHANNEL_SURF) {
         // wheel "down" - decrease channel
         flipChannel(False, True, True, c);
         return ;
     }
     
     if (e->window == e->root) {
 
 #if CONFIG_GNOME_BUTTON_COMPLIANCE != False
-        if ((e->button == Button1 || e->button == Button3)
+        if ((e->button == CONFIG_CLIENTMENU_BUTTON || e->button == CONFIG_CIRCULATE_BUTTON)
             && m_channelChangeTime == 0) {
 
 	    XUngrabPointer(m_display, CurrentTime);
 	    XSendEvent(m_display, gnome_win, False, SubstructureNotifyMask, ev);
 	    return;
 	} 
         
-	if (e->button == Button2 && m_channelChangeTime == 0) {
+	if (e->button == CONFIG_COMMANDMENU_BUTTON && m_channelChangeTime == 0) {
 	    ClientMenu menu(this, (XEvent *)e);
 	    return;
 	}
 #endif
 
-	if (e->button == Button1 && m_channelChangeTime == 0) {
+	if (e->button == CONFIG_CLIENTMENU_BUTTON && m_channelChangeTime == 0) {
 	    ClientMenu menu(this, (XEvent *)e);
 
 	} else if (e->x > DisplayWidth(display(), screen()) -
 		   CONFIG_CHANNEL_CLICK_SIZE &&
 		   e->y < CONFIG_CHANNEL_CLICK_SIZE) {
 
-	    if (e->button == Button2) {
+	    if (e->button == CONFIG_COMMANDMENU_BUTTON) {
 #if CONFIG_USE_CHANNEL_MENU	
                 ChannelMenu(this, (XEvent *)e);
 #else
                 if (m_channelChangeTime == 0) flipChannel(True, False, False, 0);
                 else flipChannel(False, False, False, 0);
                 
-            } else if (e->button == Button1 && m_channelChangeTime != 0) {
+            } else if (e->button == CONFIG_CLIENTMENU_BUTTON && m_channelChangeTime != 0) {
                 
                 flipChannel(False, True, False, 0);
 #endif
 	    }
 
-	} else if (e->button == Button2 && m_channelChangeTime == 0) {
-	    dConfig.scan();
+	} else if (e->button == CONFIG_COMMANDMENU_BUTTON && m_channelChangeTime == 0) {
+	    DynamicConfig::config.scan();
 	    CommandMenu menu(this, (XEvent *)e);
 	}
         
     } else if (c) {
 
-	if (e->button == Button2 && CONFIG_CHANNEL_SURF) {
+	if (e->button == CONFIG_COMMANDMENU_BUTTON && CONFIG_CHANNEL_SURF) {
 #if CONFIG_USE_CHANNEL_MENU	
 	    ChannelMenu menu(this, (XEvent *)e);
 #else
             if (m_channelChangeTime == 0) flipChannel(True, False, False, 0);
             else flipChannel(False, False, False, c);
 #endif
 	    return;
-	} else if (e->button == Button1 && m_channelChangeTime != 0) {
+	} else if (e->button == CONFIG_CLIENTMENU_BUTTON && m_channelChangeTime != 0) {
 	    // allow left-button to push down a channel --cc 19991001
 	    flipChannel(False, True, False, c);
 	    return;
  	}
 
@@ -230,11 +230,11 @@
 
        if (ev->state & m_altModMask) {
 
            if (!m_altPressed) {
                // oops! bug
-               fprintf(stderr, "wmx: Alt key record in inconsistent state\n");
+//               fprintf(stderr, "wmx: Alt key record in inconsistent state\n");
                m_altPressed = True;
                m_altStateRetained = False;
 //        fprintf(stderr, "state is %ld, mask is %ld\n",
 //                (long)ev->state, (long)m_altModMask);
            }
@@ -252,15 +252,15 @@
 		// when adding a key it must be added in both places
 
 		switch (key) {
 
 		case CONFIG_FLIP_DOWN_KEY:
-		    flipChannel(False, True, False, 0);
+		    flipChannel(False, True, True, 0);
 		    break;
 
 		case CONFIG_FLIP_UP_KEY:
-		    flipChannel(False, False, False, 0);
+		    flipChannel(False, False, True, 0);
 		    break;
 	
 		case CONFIG_CIRCULATE_KEY:
 		    circulate(False);
 		    break;
@@ -463,19 +463,23 @@
 
     Boolean wasTop = windowManager()->isTop(this);
 
     mapRaised();
 
-    if (e->button == Button1) {
+    if (e->button == CONFIG_CLIENTMENU_BUTTON) {
 	if (m_border->hasWindow(e->window)) {
-
 	    m_border->eventButton(e);
+	} else {
+	    e->x += m_border->xIndent();
+	    e->y += m_border->yIndent();
+	    move(e);
 	}
     }
 
-    if (CONFIG_RAISELOWER_ON_CLICK && wasTop && !doSomething)
+    if (CONFIG_RAISELOWER_ON_CLICK && wasTop && !m_doSomething) {
 	lower();
+    }
 
     if (!isNormal() || isActive() || e->send_event) return;
     activate();
 }
 
@@ -560,11 +564,11 @@
 
     XEvent event;
     Boolean found;
     struct timeval sleepval;
 
-    doSomething = False;
+    m_doSomething = False;
     while (!done) {
 
 	found = False;
 
 	while (XCheckMaskEvent(display(), DragMask | ExposureMask, &event)) {
@@ -572,11 +576,11 @@
 	    if (event.type != MotionNotify) break;
 	}
 
 	if (!found) {
 	    sleepval.tv_sec = 0;
-	    sleepval.tv_usec = 50000;
+	    sleepval.tv_usec = 1000;
 	    select(0, 0, 0, 0, &sleepval);
 	    continue;
 	}
 	
 	switch (event.type) {
@@ -591,17 +595,17 @@
 	    break;
 
 	case ButtonPress:
 	    // don't like this
 	    XUngrabPointer(display(), event.xbutton.time);
-	    doSomething = False;
+	    m_doSomething = False;
 	    done = True;
 	    break;
 
 	case ButtonRelease:
 
-	    if (!nobuttons(&event.xbutton)) doSomething = False;
+	    if (!nobuttons(&event.xbutton)) m_doSomething = False;
 
 	    m_windowManager->releaseGrab(&event.xbutton);
 	    done = True;
 	    break;
 
@@ -610,11 +614,11 @@
 	    int nx = event.xbutton.x - e->x;
 	    int ny = event.xbutton.y - e->y;
 
 	    if (nx != x || ny != y) {
 
-		if (doSomething) { // so x,y have sensible values already
+		if (m_doSomething) { // so x,y have sensible values already
 
 		    // bumping!
 
 		    if (nx < x && nx <= 0 && nx > -CONFIG_BUMP_DISTANCE) nx = 0;
 		    if (ny < y && ny <= 0 && ny > -CONFIG_BUMP_DISTANCE) ny = 0;
@@ -630,19 +634,19 @@
 		x = nx;
 		y = ny;
 
 		geometry.update(x, y);
 		m_border->moveTo(x + xi, y + yi);
-		doSomething = True;
+		m_doSomething = True;
 	    }
 	    break;
 	}
     }
 
     geometry.remove();
 
-    if (doSomething) {
+    if (m_doSomething) {
 	m_x = x + xi;
 	m_y = y + yi;
     }
 
     if (CONFIG_CLICK_TO_FOCUS) activate();
@@ -710,11 +714,11 @@
     XEvent event;
     Boolean found;
     Boolean done = False;
     struct timeval sleepval;
 
-    doSomething = False;
+    m_doSomething = False;
     while (!done) {
 
 	found = False;
 
 	while (XCheckMaskEvent(display(), DragMask | ExposureMask, &event)) {
@@ -722,11 +726,11 @@
 	    if (event.type != MotionNotify) break;
 	}
 
 	if (!found) {
 	    sleepval.tv_sec = 0;
-	    sleepval.tv_usec = 50000;
+	    sleepval.tv_usec = 10000;
 	    select(0, 0, 0, 0, &sleepval);
 	    continue;
 	}
 	
 	switch (event.type) {
@@ -766,38 +770,38 @@
 		if (h == prevH && w == prevW) break;
 		m_border->configure(m_x, m_y, w, h, CWWidth | CWHeight, 0);
 		if (CONFIG_RESIZE_UPDATE)
 		    XResizeWindow(display(), m_window, w, h);
 		geometry.update(dw, dh);
-		doSomething = True;
+		m_doSomething = True;
 
 	    } else if (vertical) {
 		prevH = h; h = y - m_y;
 		fixResizeDimensions(w, h, dw, dh);
 		if (h == prevH) break;
 		m_border->configure(m_x, m_y, w, h, CWHeight, 0);
 		if (CONFIG_RESIZE_UPDATE)
 		    XResizeWindow(display(), m_window, w, h);
 		geometry.update(dw, dh);
-		doSomething = True;
+		m_doSomething = True;
 
 	    } else {
 		prevW = w; w = x - m_x;
 		fixResizeDimensions(w, h, dw, dh);
 		if (w == prevW) break;
 		m_border->configure(m_x, m_y, w, h, CWWidth, 0);
 		if (CONFIG_RESIZE_UPDATE)
 		    XResizeWindow(display(), m_window, w, h);
 		geometry.update(dw, dh);
-		doSomething = True;
+		m_doSomething = True;
 	    }
 
 	    break;
 	}
     }
 
-    if (doSomething) {
+    if (m_doSomething) {
 
 	geometry.remove();
 
 	if (vertical && horizontal) {
 	    m_w = x - m_x;
diff -NarU5 wmx-6pl1/Buttons.C.rej wmx-cvs-2006-06-02/Buttons.C.rej
--- wmx-6pl1/Buttons.C.rej	2001-04-24 04:58:31.000000000 -0400
+++ wmx-cvs-2006-06-02/Buttons.C.rej	1969-12-31 19:00:00.000000000 -0500
@@ -1,75 +0,0 @@
-***************
-*** 173,179 ****
-              m_altStateRetained = False;
-          }
-  
-! #ifdef CONFIG_WANT_SUNKEYS
-  #ifdef CONFIG_QUICKRAISE_KEY
-  	if (key == CONFIG_QUICKRAISE_KEY && c) {
-  
---- 173,179 ----
-              m_altStateRetained = False;
-          }
-  
-! #if CONFIG_WANT_SUNKEYS
-  #ifdef CONFIG_QUICKRAISE_KEY
-  	if (key == CONFIG_QUICKRAISE_KEY && c) {
-  
-***************
-*** 184,202 ****
-  	    }
-  	    
-  	} else
-! #endif CONFIG_QUICKRAISE_KEY
-  #ifdef CONFIG_QUICKHIDE_KEY
-  	if (key == CONFIG_QUICKHIDE_KEY && c) {
-  	    c->hide();
-  	      
-  	} else 
-! #endif CONFIG_QUICKHIDE_KEY
-  #ifdef CONFIG_QUICKCLOSE_KEY
-  	if (key == CONFIG_QUICKCLOSE_KEY && c) {
-  	    c->kill();
-  
-  	} else
-! #endif CONFIG_QUICKCLOSE_KEY
-  #ifdef CONFIG_QUICKHEIGHT_KEY
-  	if (key == CONFIG_QUICKHEIGHT_KEY && c) {
-  
---- 184,202 ----
-  	    }
-  	    
-  	} else
-! #endif // CONFIG_QUICKRAISE_KEY
-  #ifdef CONFIG_QUICKHIDE_KEY
-  	if (key == CONFIG_QUICKHIDE_KEY && c) {
-  	    c->hide();
-  	      
-  	} else 
-! #endif // CONFIG_QUICKHIDE_KEY
-  #ifdef CONFIG_QUICKCLOSE_KEY
-  	if (key == CONFIG_QUICKCLOSE_KEY && c) {
-  	    c->kill();
-  
-  	} else
-! #endif // CONFIG_QUICKCLOSE_KEY
-  #ifdef CONFIG_QUICKHEIGHT_KEY
-  	if (key == CONFIG_QUICKHEIGHT_KEY && c) {
-  
-***************
-*** 207,213 ****
-  	    }
-  
-  	} else
-! #endif //CONFIG_QUICKHEIGHT_KEY
-  #if CONFIG_WANT_SUNPOWERKEY
-  	  if (key == SunXK_PowerSwitch) {
-             pid_t pid = fork();
---- 207,213 ----
-  	    }
-  
-  	} else
-! #endif // CONFIG_QUICKHEIGHT_KEY
-  #if CONFIG_WANT_SUNPOWERKEY
-  	  if (key == SunXK_PowerSwitch) {
-             pid_t pid = fork();
diff -NarU5 wmx-6pl1/Channel.C wmx-cvs-2006-06-02/Channel.C
--- wmx-6pl1/Channel.C	2001-04-24 04:58:31.000000000 -0400
+++ wmx-cvs-2006-06-02/Channel.C	2003-08-17 09:56:59.000000000 -0400
@@ -42,13 +42,14 @@
 	XSetWindowAttributes wa;
 	wa.background_pixel = nearest.pixel;
 	wa.override_redirect = True;
 	
 	    m_channelWindow[sc] = XCreateWindow
-	      (display(), mroot(sc), 0, 0, 1, 1, 0, CopyFromParent, CopyFromParent,
+		(display(), mroot(sc),
+		 0, 0, 1, 1, 0, CopyFromParent, CopyFromParent,
 	     CopyFromParent, CWOverrideRedirect | CWBackPixel, &wa);
-    }
+	}
     }
 
 
     int nextChannel;
 
@@ -66,11 +67,11 @@
     XRectangle r;
     Boolean first = True;
     char number[7];
     sprintf(number, "%d", nextChannel);
 
-    for (i = 0; i < strlen(number); ++i) {
+    for (i = 0; i < (int)strlen(number); ++i) {
 	for (y = 0; y < 7; ++y) {
 	    for (x = 0; x < 5; ++x) {
 		if (numerals[number[i]-'0'][y][x] != ' ') {
 /*		    
 		    r.x = i * 110 + x * 20; r.y = y * 20;
@@ -109,15 +110,15 @@
 
     if (!statusOnly) {
 
 	ClientList considering;
 
-	for (i = m_orderedClients.count()-1; i >= 0; --i) {
+	for (i = (int)m_orderedClients.count()-1; i >= 0; --i) {
 	    considering.append(m_orderedClients.item(i));
 	}
 
-	for (i = 0; i < considering.count(); ++i) {
+	for (i = 0; i < (int)considering.count(); ++i) {
 	    if (considering.item(i) == push || considering.item(i)->isSticky()
 #if CONFIG_USE_WINDOW_GROUPS
 		|| (push &&
 		    push->hasWindow(considering.item(i)->groupParent()))
 #endif
diff -NarU5 wmx-6pl1/Channel.C.orig wmx-cvs-2006-06-02/Channel.C.orig
--- wmx-6pl1/Channel.C.orig	2000-05-24 11:46:14.000000000 -0400
+++ wmx-cvs-2006-06-02/Channel.C.orig	1969-12-31 19:00:00.000000000 -0500
@@ -1,220 +0,0 @@
-
-#include "Manager.h"
-#include "Client.h"
-#include <sys/time.h>
-
-static char *numerals[10][7] = {
-    { " ### ", "#   #", "#  ##", "# # #", "##  #", "#   #", " ### " },
-    { "  #  ", " ##  ", "  #  ", "  #  ", "  #  ", "  #  ", " ### " },
-    { " ### ", "#   #", "    #", "  ## ", " #   ", "#    ", "#####" },
-    { "#####", "   # ", "  #  ", " ### ", "    #", "    #", "#### " },
-    { "   # ", "  ## ", " # # ", "#  # ", "#####", "   # ", "   # " },
-    { "#####", "#    ", "#### ", "    #", "    #", "    #", "#### " },
-    { "  ## ", " #   ", "#    ", "#### ", "#   #", "#   #", " ### " },
-    { "#####", "    #", "   # ", "  #  ", " #   ", " #   ", " #   " },
-    { " ### ", "#   #", "#   #", " ### ", "#   #", "#   #", " ### " },
-    { " ### ", "#   #", "#   #", " ####", "    #", "   # ", " ##  " }
-};
-
-
-void WindowManager::flipChannel(Boolean statusOnly, Boolean flipDown,
-				Boolean quickFlip, Client *push)
-{
-    int x, y, i, sc;
-    if (!CONFIG_CHANNEL_SURF) return;
-
-    for(sc = 0; sc < screensTotal(); sc++)
-    {
-	if (!m_channelWindow[sc]) {
-
-	XColor nearest, ideal;
-
-	    if (!XAllocNamedColor(display(), DefaultColormap(display(), sc),
-			      CONFIG_CHANNEL_NUMBER, &nearest, &ideal)) {
-	    
-		if (!XAllocNamedColor(display(), DefaultColormap(display(), sc),
-				  "black", &nearest, &ideal)) {
-		
-		fatal("Couldn't allocate green or black");
-	    }
-	}
-
-	XSetWindowAttributes wa;
-	wa.background_pixel = nearest.pixel;
-	wa.override_redirect = True;
-	
-	    m_channelWindow[sc] = XCreateWindow
-	      (display(), mroot(sc), 0, 0, 1, 1, 0, CopyFromParent, CopyFromParent,
-	     CopyFromParent, CWOverrideRedirect | CWBackPixel, &wa);
-    }
-    }
-
-
-    int nextChannel;
-
-    if (statusOnly) nextChannel = m_currentChannel;
-    else {
-	if (!flipDown) {
-	    nextChannel = m_currentChannel + 1;
-	    if (nextChannel > m_channels) nextChannel = 1;
-	} else {
-	    nextChannel = m_currentChannel - 1;
-	    if (nextChannel < 1) nextChannel = m_channels;
-	}
-    }
-
-    XRectangle r;
-    Boolean first = True;
-    char number[7];
-    sprintf(number, "%d", nextChannel);
-
-    for (i = 0; i < strlen(number); ++i) {
-	for (y = 0; y < 7; ++y) {
-	    for (x = 0; x < 5; ++x) {
-		if (numerals[number[i]-'0'][y][x] != ' ') {
-/*		    
-		    r.x = i * 110 + x * 20; r.y = y * 20;
-		    r.width = r.height = 20;
- */      
-                    r.x = 10 + (i * 6 + x) * CONFIG_CHANNEL_NUMBER_SIZE;
-                    r.y = y * CONFIG_CHANNEL_NUMBER_SIZE;
-                    r.width = r.height = CONFIG_CHANNEL_NUMBER_SIZE;
-                    for(sc = 0; sc < screensTotal(); sc++)
-                    {
-		    XShapeCombineRectangles
-                          (display(), m_channelWindow[sc], ShapeBounding,
-                           0, 0, &r, 1, first ? ShapeSet : ShapeUnion,
-                           YXBanded);
-                    }
-		    first = False;
-		}
-	    }
-	}
-    }
-
-    for(sc = 0; sc < screensTotal(); sc++)
-    {
-/*
-        XMoveResizeWindow(display(), m_channelWindow[sc],
-			  DisplayWidth(display(), sc) - 30 -
-		      110 * strlen(number), 30, 500, 160);
- */
-
-        XMoveResizeWindow(display(), m_channelWindow[sc],
-                          DisplayWidth(display(), sc) - 30 -
-                          (5 * CONFIG_CHANNEL_NUMBER_SIZE + 10) *
-                          strlen(number), 30, 500, 160);
-	XMapRaised(display(), m_channelWindow[sc]);
-    }
-
-    if (!statusOnly) {
-
-	ClientList considering;
-
-	for (i = m_orderedClients.count()-1; i >= 0; --i) {
-	    considering.append(m_orderedClients.item(i));
-	}
-
-	for (i = 0; i < considering.count(); ++i) {
-	    if (considering.item(i) == push || considering.item(i)->isSticky()
-#ifdef CONFIG_USE_WINDOW_GROUPS
-		|| (push &&
-		    push->hasWindow(considering.item(i)->groupParent()))
-#endif
-		) {
-		considering.item(i)->setChannel(nextChannel);
-	    } else {
-		considering.item(i)->flipChannel(True, nextChannel);
-	    }
-	}
-
-	considering.remove_all();
-    }
-
-    m_currentChannel = nextChannel;
-    m_channelChangeTime = timestamp(True) +
-	(quickFlip ? CONFIG_QUICK_FLIP_DELAY : CONFIG_FLIP_DELAY);
-
-#if CONFIG_GNOME_COMPLIANCE != False
-    gnomeUpdateChannelList();
-#endif
-}
-
-
-void WindowManager::instateChannel()
-{
-    int i;
-    m_channelChangeTime = 0;
-    for(i = 0; i < screensTotal(); i++)
-    {
-	XUnmapWindow(display(), m_channelWindow[i]);
-    }
-
-    ClientList considering;
-
-    for (i = m_orderedClients.count()-1; i >= 0; --i) {
-	considering.append(m_orderedClients.item(i));
-    }
-
-    for (i = 0; i < considering.count(); ++i) {
-	considering.item(i)->flipChannel(False, m_currentChannel);
-	if (considering.item(i)->channel() == m_channels &&
-	    !considering.item(i)->isSticky()) createNewChannel();
-    }
-
-    if (m_activeClient && m_activeClient->channel() != channel()) {
-	m_activeClient = 0;
-    }
-
-    checkChannel(m_channels-1);
-}    
-
-
-void WindowManager::checkChannel(int ch)
-{
-    if (m_channels <= 2 || ch < m_channels - 1) return;
-
-    for (int i = m_orderedClients.count()-1; i >= 0; --i) {
-	if (m_orderedClients.item(i)->channel() == ch) return;
-    }
-
-    --m_channels;
-
-#if CONFIG_GNOME_COMPLIANCE != False
-    gnomeUpdateChannelList();
-#endif
-
-    if (m_currentChannel > m_channels) m_currentChannel = m_channels;
-
-    checkChannel(ch - 1);
-}
-
-
-void WindowManager::createNewChannel()
-{
-    ++m_channels;
-#if CONFIG_GNOME_COMPLIANCE != False
-    gnomeUpdateChannelList();
-#endif
-
-}
-
-void WindowManager::gotoChannel(int channel, Client *push)
-{
-    if (channel == m_currentChannel) {
-	flipChannel(True, False, False, 0);
-	return;
-   }
-
-    if (channel > 0 && channel <= m_channels) {
-
-	while (m_currentChannel != channel) {
-	    if (m_channels < channel) {
-		flipChannel(False, False, True, push);
-	    } else {
-		flipChannel(False, True, True, push);
-	    }
-	    XSync(display(), False);
-	}
-    }
-}
diff -NarU5 wmx-6pl1/Client.C wmx-cvs-2006-06-02/Client.C
--- wmx-6pl1/Client.C	2000-05-12 03:40:20.000000000 -0400
+++ wmx-cvs-2006-06-02/Client.C	2003-08-12 10:50:47.000000000 -0400
@@ -73,11 +73,11 @@
 }
 
 
 Client::~Client()
 {
-    // empty
+    delete m_border;
 }    
 
 
 Boolean Client::hasWindow(Window w)
 {
@@ -107,13 +107,10 @@
     windowManager()->skipInRevert(this, m_revert);
 
     if (isHidden()) unhide(False);
     windowManager()->removeFromOrderedList(this);
 
-    delete m_border;
-    m_window = None;
-
     if (isActive()) {
 	if (CONFIG_CLICK_TO_FOCUS) {
 	    if (m_revert) {
 		windowManager()->setActiveClient(m_revert);
 		m_revert->activate();
@@ -121,10 +118,12 @@
 	} else {
 	    windowManager()->setActiveClient(0);
 	}
     }
 
+    m_window = None;
+
     if (m_colormapWinCount > 0) {
 	XFree((char *)m_colormapWindows);
 	free((char *)m_windowColormaps); // not allocated through X
     }
 
@@ -212,10 +211,15 @@
 	};
 
         XGrabKey(display(), XKeysymToKeycode(display(), CONFIG_ALT_KEY),
                  0, m_window, True, GrabModeAsync, GrabModeAsync);
 
+	// for dragging windows from anywhere with Alt pressed
+	XGrabButton(display(), Button1,
+		    m_windowManager->altModMask(), m_window, False, 0,
+		    GrabModeAsync, GrabModeSync, None, None);
+
 	for (i = 0; i < sizeof(keys)/sizeof(keys[0]); ++i) {
 	    keycode = XKeysymToKeycode(display(), keys[i]);
 	    if (keycode) {
 		XGrabKey(display(), keycode,
 			 m_windowManager->altModMask()|LockMask|Mod2Mask,
@@ -513,15 +517,17 @@
     if (isActive()) {
 	decorate(True);
 	if (CONFIG_AUTO_RAISE || CONFIG_RAISE_ON_FOCUS) mapRaised();
 	return;
     }
-
+/*!!!
     if (activeClient()) {
 	activeClient()->deactivate();
 	// & some other-screen business
     }
+*/
+    windowManager()->setActiveClient(this); // deactivates any other
 
     XUngrabButton(display(), AnyButton, AnyModifier, parent());
 
     XSetInputFocus(display(), m_window, RevertToPointerRoot,
 		   windowManager()->timestamp(False));
@@ -536,11 +542,11 @@
     windowManager()->skipInRevert(this, m_revert);
 
     m_revert = activeClient();
     while (m_revert && !m_revert->isNormal()) m_revert = m_revert->revertTo();
 
-    windowManager()->setActiveClient(this);
+//!!!    windowManager()->setActiveClient(this);
     decorate(True);
 
     installColormap();		// new!
 }
 
@@ -1213,10 +1219,13 @@
 	if (CONFIG_MAD_FEEDBACK) {
 	    removeFeedback(isNormal()); // mostly it won't be there anyway, but...
 	}
 
 	if (!isNormal()) return;
+	if (activeClient() == this) {
+	    windowManager()->setActiveClient(0);
+	}
 	m_unmappedForChannel = True;
 	XUnmapWindow(display(), m_window);
 	withdraw(False);
 	return;
 
diff -NarU5 wmx-6pl1/Client.h wmx-cvs-2006-06-02/Client.h
--- wmx-6pl1/Client.h	2001-04-24 04:58:31.000000000 -0400
+++ wmx-cvs-2006-06-02/Client.h	2003-08-12 10:49:35.000000000 -0400
@@ -136,11 +136,11 @@
     int m_w;
     int m_h;
     int m_bw;
     Window m_wroot;
     int m_screen;
-    Boolean doSomething;	// Become true if move() or resize() made
+    Boolean m_doSomething;	// Become true if move() or resize() made
 				// effect to this client.
 
     int m_channel;
     Boolean m_unmappedForChannel;
     Boolean m_sticky;
diff -NarU5 wmx-6pl1/Config.C wmx-cvs-2006-06-02/Config.C
--- wmx-6pl1/Config.C	2000-03-02 08:56:35.000000000 -0500
+++ wmx-cvs-2006-06-02/Config.C	2003-08-14 09:07:12.000000000 -0400
@@ -5,11 +5,14 @@
 #include <stdio.h>
 #include <ctype.h>
 #include <stdlib.h>
 #include <unistd.h>
 
-DynamicConfig DynamicConfig::dynamicConfig;
+// 32 is enough to fit even "light goldenrod yellow" comfortably
+#define COLOR_LEN 32
+
+DynamicConfig DynamicConfig::config;
 
 struct DynamicConfigImpl
 {
     char options[1000];	// Old options-string
     char path[1000];	// Path to Options-Link
@@ -19,10 +22,13 @@
     char menu;		// 0 = no unmapped, 1 = everything
     char feedback;	// 0 = no , 1 = yes
     int  feeddelay;
     char disable;	// 0 = New Window option, 1 = no New
     char rightBt;	// 0 = disable, 1 = circulate, 2 = lower, 4 = height
+    char tabfg[COLOR_LEN];     // black
+    char tabbg[COLOR_LEN];     // gray80
+    char framebg[COLOR_LEN];   // gray95
 };  
 
 DynamicConfig::DynamicConfig() : m_impl(new DynamicConfigImpl)
 {
     strcpy(m_impl->options, "");
@@ -55,10 +61,13 @@
     m_impl->menu = 1;	// 0 = no unmapped, 1 = everything
     m_impl->feedback = 1;	// 0 = no , 1 = yes
     m_impl->feeddelay = 300;
     m_impl->disable = 0;        // 0 = allow New window, 1 = don't
     m_impl->rightBt = 1;	// 0 = disable, 1 = circulate, 2 = lower
+    strcpy(m_impl->tabfg, "black");
+    strcpy(m_impl->tabbg, "gray80");
+    strcpy(m_impl->framebg, "gray95");
 
     scan(1);
 }
 
 DynamicConfig::~DynamicConfig()
@@ -76,10 +85,13 @@
 int  DynamicConfig::feedbackDelay() { return m_impl->feeddelay; }
 char DynamicConfig::disableNew() { return m_impl->disable & 1; }
 char DynamicConfig::rightCirculate() { return m_impl->rightBt & 1; }
 char DynamicConfig::rightLower() { return m_impl->rightBt & 2; }
 char DynamicConfig::rightToggleHeight() { return m_impl->rightBt & 4; }
+char *DynamicConfig::tabForeground() { return m_impl->tabfg; }
+char *DynamicConfig::tabBackground() { return m_impl->tabbg; }
+char *DynamicConfig::frameBackground() { return m_impl->framebg; }
 
 void DynamicConfig::scan(char startup)
 {
     char temp[1000];
     memset(temp, 0, 1000);
@@ -137,16 +149,20 @@
 	    if (OPTION("off")) m_impl->rightBt = 0;
 	    else if (OPTION("circulate")) m_impl->rightBt = 1;
 	    else if (OPTION("lower")) m_impl->rightBt = 2;
 	    else if (OPTION("toggleheight")) m_impl->rightBt = 4;
 	
+	if (OPTION("tabfg:")) strncpy(m_impl->tabfg, s, COLOR_LEN);
+	if (OPTION("tabbg:")) strncpy(m_impl->tabbg, s, COLOR_LEN);
+	if (OPTION("framebg:")) strncpy(m_impl->framebg, s, COLOR_LEN);
+
 	if (*s != '\0') {
 	    fprintf(stderr, "\nwmx: Dynamic configuration error: "
 		    "`%s' @ position %d", s, string - s);
 	}
 
-    } while (s = strtok(NULL, "/"));
+    } while ((s = strtok(NULL, "/")));
 
     fprintf(stderr, "\n");
 
 #undef OPTION
 }
diff -NarU5 wmx-6pl1/config.cache wmx-cvs-2006-06-02/config.cache
--- wmx-6pl1/config.cache	2001-04-23 08:09:21.000000000 -0400
+++ wmx-cvs-2006-06-02/config.cache	1969-12-31 19:00:00.000000000 -0500
@@ -1,26 +0,0 @@
-# This file is a shell script that caches the results of configure
-# tests run on this system so they can be shared between configure
-# scripts and configure runs.  It is not useful on other systems.
-# If it contains results you don't want to keep, you may remove or edit it.
-#
-# By default, configure uses ./config.cache as the cache file,
-# creating it if it does not exist already.  You can give configure
-# the --cache-file=FILE option to use a different cache file; that is
-# what configure does when it calls configure scripts in
-# subdirectories, so they share the cache.
-# Giving --cache-file=/dev/null disables caching, for debugging configure.
-# config.status only pays attention to the cache file if you give it the
-# --recheck option to rerun configure.
-#
-ac_cv_have_x=${ac_cv_have_x='have_x=yes 		ac_x_includes=/usr/X11R6/include ac_x_libraries=/usr/X11R6/lib'}
-ac_cv_lib_X11_XOpenDisplay=${ac_cv_lib_X11_XOpenDisplay='yes'}
-ac_cv_lib_Xext_XShapeQueryExtension=${ac_cv_lib_Xext_XShapeQueryExtension='yes'}
-ac_cv_lib_Xpm_XpmCreatePixmapFromData=${ac_cv_lib_Xpm_XpmCreatePixmapFromData='yes'}
-ac_cv_path_TWM=${ac_cv_path_TWM='/usr/X11R6/bin/twm'}
-ac_cv_prog_CXX=${ac_cv_prog_CXX='c++'}
-ac_cv_prog_CXXCPP=${ac_cv_prog_CXXCPP='c++ -E'}
-ac_cv_prog_cxx_cross=${ac_cv_prog_cxx_cross='no'}
-ac_cv_prog_cxx_g=${ac_cv_prog_cxx_g='yes'}
-ac_cv_prog_cxx_works=${ac_cv_prog_cxx_works='yes'}
-ac_cv_prog_gxx=${ac_cv_prog_gxx='yes'}
-ac_cv_prog_make_make_set=${ac_cv_prog_make_make_set='yes'}
diff -NarU5 wmx-6pl1/Config.h wmx-cvs-2006-06-02/Config.h
--- wmx-6pl1/Config.h	2001-04-23 11:48:31.000000000 -0400
+++ wmx-cvs-2006-06-02/Config.h	2003-08-14 09:07:12.000000000 -0400
@@ -49,41 +49,42 @@
     int  feedbackDelay();
     char disableNew();
     char rightCirculate();
     char rightLower();
     char rightToggleHeight();
+    char *tabForeground();
+    char *tabBackground();
+    char *frameBackground();
 
-    static DynamicConfig dynamicConfig;
+    static DynamicConfig config;
 
 private:
     DynamicConfigImpl *m_impl;
     void update(char *);
 };
 
-static DynamicConfig &dConfig = DynamicConfig::dynamicConfig;
-
 
 // =================================================
 // Section I. Straightforward operational parameters
 // =================================================
 
 // List visible as well as hidden clients on the root menu?  (Visible
 // ones will be towards the bottom of the menu, flush-right.)
-#define CONFIG_EVERYTHING_ON_ROOT_MENU (dConfig.fullMenu())
+#define CONFIG_EVERYTHING_ON_ROOT_MENU (DynamicConfig::config.fullMenu())
 
 // Spawn a temporary new shell between the wm and each new process?
 #define CONFIG_EXEC_USING_SHELL   False
 
 // What to run to get a new window (from the "New" menu option)
 #define CONFIG_NEW_WINDOW_LABEL "New"
-//#define CONFIG_NEW_WINDOW_COMMAND "xterm"
-#define CONFIG_NEW_WINDOW_COMMAND "/home/chris/.wmx/terminal"
+#define CONFIG_NEW_WINDOW_COMMAND "xterm"
+//#define CONFIG_NEW_WINDOW_COMMAND "/home/ccannam/.wmx/terminal"
 #define CONFIG_NEW_WINDOW_COMMAND_OPTIONS 0
 // or, for example,
 //#define CONFIG_NEW_WINDOW_COMMAND_OPTIONS "-ls","-sb","-sl","1024",0
 // alternatively,
-#define CONFIG_DISABLE_NEW_WINDOW_COMMAND (dConfig.disableNew())
+#define CONFIG_DISABLE_NEW_WINDOW_COMMAND (DynamicConfig::config.disableNew())
 
 // Area where [exit wmx] is added (0 -> everywhere -# -> px from other side)
 #define CONFIG_EXIT_CLICK_SIZE_X 0
 #define CONFIG_EXIT_CLICK_SIZE_Y -3
  
@@ -101,24 +102,24 @@
 // You can't have CLICK_TO_FOCUS without RAISE_ON_FOCUS, but the other
 // combinations should be okay.  If you set AUTO_RAISE you must leave
 // the other two False; you'll then get focus-follows, auto-raise, and
 // a delay on auto-raise as configured in the DELAY settings below.
 
-#define CONFIG_CLICK_TO_FOCUS     (dConfig.clickFocus())
-#define CONFIG_RAISE_ON_FOCUS     (dConfig.raiseFocus())
-#define CONFIG_AUTO_RAISE         (dConfig.autoRaiseFocus())
+#define CONFIG_CLICK_TO_FOCUS     (DynamicConfig::config.clickFocus())
+#define CONFIG_RAISE_ON_FOCUS     (DynamicConfig::config.raiseFocus())
+#define CONFIG_AUTO_RAISE         (DynamicConfig::config.autoRaiseFocus())
 
 // Delays when using AUTO_RAISE focus method
 // 
 // In theory these only apply when using AUTO_RAISE, not when just
 // using RAISE_ON_FOCUS without CLICK_TO_FOCUS.  First of these is the
 // usual delay before raising; second is the delay after the pointer
 // has stopped moving (only when over simple X windows such as xvt).
 
-#define CONFIG_AUTO_RAISE_DELAY       (dConfig.raiseDelay())
+#define CONFIG_AUTO_RAISE_DELAY       (DynamicConfig::config.raiseDelay())
 #define CONFIG_POINTER_STOPPED_DELAY  80
-#define CONFIG_DESTROY_WINDOW_DELAY   1000
+#define CONFIG_DESTROY_WINDOW_DELAY   600
 
 // Number of pixels off the screen you have to push a window
 // before the manager notices the window is off-screen (the higher
 // the value, the easier it is to place windows at the screen edges)
 
@@ -171,17 +172,17 @@
 // ========================
 // Section II. Key bindings
 // ========================
 
 // Allow keyboard control?
-#define CONFIG_USE_KEYBOARD       (dConfig.useKeyboard())
+#define CONFIG_USE_KEYBOARD       (DynamicConfig::config.useKeyboard())
 
 // This is the key for wm controls: e.g. Alt/Left and Alt/Right to
 // flip channels, and Alt/Tab to switch windows.  (On my 105-key
 // PC keyboard, Meta_L corresponds to the left Windows key.)
 
-#define CONFIG_ALT_KEY            XK_Meta_L
+#define CONFIG_ALT_KEY            XK_Super_L
 
 // And these define the rest of the keyboard controls, when the above
 // modifier is pressed; they're keysyms as defined in <X11/keysym.h>
 // and <X11/keysymdef.h>
 
@@ -232,10 +233,21 @@
 #define CONFIG_QUICKRAISE_ALSO_LOWERS True 
 #define CONFIG_SUNPOWER_EXEC	"/usr/openwin/bin/sys-suspend"
 #define CONFIG_SUNPOWER_OPTIONS	"-x","-h",0
 #define CONFIG_SUNPOWER_SHIFTOPTIONS	"-x","-n",0
 
+// Mouse Configuration
+// Use this section to remap your mouse button actions.
+//   Button1 = LMB, Button2 = MMB, Button3 = RMB 
+//   Button4 = WheelUp, Button5 = WheelDown 
+
+#define CONFIG_CLIENTMENU_BUTTON Button1
+#define CONFIG_COMMANDMENU_BUTTON Button2
+#define CONFIG_CIRCULATE_BUTTON Button3
+#define CONFIG_PREVCHANNEL_BUTTON Button5
+#define CONFIG_NEXTCHANNEL_BUTTON Button4
+
 
 // ==============================
 // Section III. Colours and fonts
 // ==============================
 
@@ -261,14 +273,12 @@
 #if I18N
 #define CONFIG_NICE_FONT	  "-*-lucida-bold-r-*-*-14-*-75-75-*-*-*-*,-*-*-medium-r-*-*-14-*-75-75-*-*-*-*"
 #define CONFIG_NICE_MENU_FONT	  "-*-lucida-medium-r-*-*-14-*-75-75-*-*-*-*,-*-*-medium-r-*-*-14-*-75-75-*-*-*-*"
 #define CONFIG_NASTY_FONT	  "fixed,-*-*-*-*-*-*-14-*-75-75-*-*-*-*"
 #else
-//#define CONFIG_NICE_FONT	  "-*-lucida-bold-r-*-*-14-*-75-75-*-*-*-*"
-//#define CONFIG_NICE_MENU_FONT	  "-*-lucida-medium-r-*-*-14-*-75-75-*-*-*-*"
-#define CONFIG_NICE_FONT	  "-*-verdana-medium-r-*-*-12-*-*-*-*-*-*-*"
-#define CONFIG_NICE_MENU_FONT	  "-*-verdana-medium-r-*-*-12-*-*-*-*-*-*-*"
+#define CONFIG_NICE_FONT	  "-*-lucida-bold-r-*-*-14-*-75-75-*-*-*-*"
+#define CONFIG_NICE_MENU_FONT	  "-*-lucida-medium-r-*-*-14-*-75-75-*-*-*-*"
 #define CONFIG_NASTY_FONT	  "fixed"
 #endif
 
 // If USE_PLAIN_X_CURSORS is True, wmx will use cursors from the
 // standard X cursor font; otherwise it will install its own.  You may
@@ -280,19 +290,19 @@
 
 // Colours for window decorations.  The BORDERS one is for the
 // one-pixel border around the edge of each piece of decoration, not
 // for the whole decoration
 
-#define CONFIG_TAB_FOREGROUND	  "black"
-#define CONFIG_TAB_BACKGROUND     "gray80"
-#define CONFIG_FRAME_BACKGROUND   "gray95"
-#define CONFIG_BUTTON_BACKGROUND  "gray95"
+#define CONFIG_TAB_FOREGROUND     (DynamicConfig::config.tabForeground())
+#define CONFIG_TAB_BACKGROUND     (DynamicConfig::config.tabBackground())
+#define CONFIG_FRAME_BACKGROUND   (DynamicConfig::config.frameBackground())
+#define CONFIG_BUTTON_BACKGROUND  (DynamicConfig::config.frameBackground())
 #define CONFIG_BORDERS            "black"
 #define CONFIG_CHANNEL_NUMBER	  "green"
 
-#define CONFIG_MENU_FOREGROUND    "black"
-#define CONFIG_MENU_BACKGROUND    "gray80"
+#define CONFIG_MENU_FOREGROUND    (DynamicConfig::config.tabForeground())
+#define CONFIG_MENU_BACKGROUND    (DynamicConfig::config.tabBackground())
 #define CONFIG_MENU_BORDERS       "black"
 
 // Pixel width for the bit of frame to the left of the window and the
 // sum of the two bits at the top
 
@@ -339,12 +349,12 @@
 // post the entire window contents instead; if it's negative, the
 // contents will never be posted.  Experiment with these -- if your
 // machine is fast and you're really hyper, you might even like a
 // delay of 0ms.
 
-#define CONFIG_MAD_FEEDBACK       (dConfig.useFeedback())
-#define CONFIG_FEEDBACK_DELAY     (dConfig.feedbackDelay())
+#define CONFIG_MAD_FEEDBACK       (DynamicConfig::config.useFeedback())
+#define CONFIG_FEEDBACK_DELAY     (DynamicConfig::config.feedbackDelay())
 
 // Groups are fun. you can bind a bunch of windows to a number key
 // and when you press CONFIG_ALT_KEY_MASK and the number key
 // all the windows of that group are raised.
 
diff -NarU5 wmx-6pl1/config.log wmx-cvs-2006-06-02/config.log
--- wmx-6pl1/config.log	2001-04-24 04:58:56.000000000 -0400
+++ wmx-cvs-2006-06-02/config.log	1969-12-31 19:00:00.000000000 -0500
@@ -1,17 +0,0 @@
-This file contains any messages produced by compilers while
-running configure, to aid debugging if configure makes a mistake.
-
-configure:529: checking whether make sets ${MAKE}
-configure:560: checking for c++
-configure:592: checking whether the C++ compiler (c++  ) works
-configure:608: c++ -o conftest    conftest.C  1>&5
-configure:634: checking whether the C++ compiler (c++  ) is a cross-compiler
-configure:639: checking whether we are using GNU C++
-configure:667: checking whether c++ accepts -g
-configure:707: checking how to run the C++ preprocessor
-configure:754: checking for X
-configure:997: checking for XOpenDisplay in -lX11
-configure:1048: checking for XShapeQueryExtension in -lXext
-configure:1099: checking for XpmCreatePixmapFromData in -lXpm
-configure:1154: checking for twm
-configure:1193: checking whether you're still watching
diff -NarU5 wmx-6pl1/config.status wmx-cvs-2006-06-02/config.status
--- wmx-6pl1/config.status	2001-04-24 04:58:56.000000000 -0400
+++ wmx-cvs-2006-06-02/config.status	1969-12-31 19:00:00.000000000 -0500
@@ -1,153 +0,0 @@
-#! /bin/sh
-# Generated automatically by configure.
-# Run this file to recreate the current configuration.
-# This directory was configured as follows,
-# on host amanita:
-#
-# ./configure 
-#
-# Compiler output produced by configure, useful for debugging
-# configure, is in ./config.log if it exists.
-
-ac_cs_usage="Usage: ./config.status [--recheck] [--version] [--help]"
-for ac_option
-do
-  case "$ac_option" in
-  -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r)
-    echo "running ${CONFIG_SHELL-/bin/sh} ./configure  --no-create --no-recursion"
-    exec ${CONFIG_SHELL-/bin/sh} ./configure  --no-create --no-recursion ;;
-  -version | --version | --versio | --versi | --vers | --ver | --ve | --v)
-    echo "./config.status generated by autoconf version 2.13"
-    exit 0 ;;
-  -help | --help | --hel | --he | --h)
-    echo "$ac_cs_usage"; exit 0 ;;
-  *) echo "$ac_cs_usage"; exit 1 ;;
-  esac
-done
-
-ac_given_srcdir=.
-
-trap 'rm -fr Makefile conftest*; exit 1' 1 2 15
-
-# Protect against being on the right side of a sed subst in config.status.
-sed 's/%@/@@/; s/@%/@@/; s/%g$/@g/; /@g$/s/[\\&%]/\\&/g;
- s/@@/%@/; s/@@/@%/; s/@g$/%g/' > conftest.subs <<\CEOF
-/^[ 	]*VPATH[ 	]*=[^:]*$/d
-
-s%@SHELL@%/bin/sh%g
-s%@CFLAGS@%%g
-s%@CPPFLAGS@%%g
-s%@CXXFLAGS@%-g -O2 -I/usr/X11R6/include%g
-s%@FFLAGS@%%g
-s%@DEFS@% -DHAVE_LIBX11=1 -DHAVE_LIBXEXT=1 -DHAVE_LIBXPM=1 %g
-s%@LDFLAGS@% -L/usr/X11R6/lib%g
-s%@LIBS@%-lXpm -lXext -lX11 %g
-s%@exec_prefix@%${prefix}%g
-s%@prefix@%/usr/X11R6%g
-s%@program_transform_name@%s,x,x,%g
-s%@bindir@%${exec_prefix}/bin%g
-s%@sbindir@%${exec_prefix}/sbin%g
-s%@libexecdir@%${exec_prefix}/libexec%g
-s%@datadir@%${prefix}/share%g
-s%@sysconfdir@%${prefix}/etc%g
-s%@sharedstatedir@%${prefix}/com%g
-s%@localstatedir@%${prefix}/var%g
-s%@libdir@%${exec_prefix}/lib%g
-s%@includedir@%${prefix}/include%g
-s%@oldincludedir@%/usr/include%g
-s%@infodir@%${prefix}/info%g
-s%@mandir@%${prefix}/man%g
-s%@SET_MAKE@%%g
-s%@CXX@%c++%g
-s%@CXXCPP@%c++ -E%g
-s%@TWM@%/usr/X11R6/bin/twm%g
-
-CEOF
-
-# Split the substitutions into bite-sized pieces for seds with
-# small command number limits, like on Digital OSF/1 and HP-UX.
-ac_max_sed_cmds=90 # Maximum number of lines to put in a sed script.
-ac_file=1 # Number of current file.
-ac_beg=1 # First line for current file.
-ac_end=$ac_max_sed_cmds # Line after last line for current file.
-ac_more_lines=:
-ac_sed_cmds=""
-while $ac_more_lines; do
-  if test $ac_beg -gt 1; then
-    sed "1,${ac_beg}d; ${ac_end}q" conftest.subs > conftest.s$ac_file
-  else
-    sed "${ac_end}q" conftest.subs > conftest.s$ac_file
-  fi
-  if test ! -s conftest.s$ac_file; then
-    ac_more_lines=false
-    rm -f conftest.s$ac_file
-  else
-    if test -z "$ac_sed_cmds"; then
-      ac_sed_cmds="sed -f conftest.s$ac_file"
-    else
-      ac_sed_cmds="$ac_sed_cmds | sed -f conftest.s$ac_file"
-    fi
-    ac_file=`expr $ac_file + 1`
-    ac_beg=$ac_end
-    ac_end=`expr $ac_end + $ac_max_sed_cmds`
-  fi
-done
-if test -z "$ac_sed_cmds"; then
-  ac_sed_cmds=cat
-fi
-
-CONFIG_FILES=${CONFIG_FILES-"Makefile"}
-for ac_file in .. $CONFIG_FILES; do if test "x$ac_file" != x..; then
-  # Support "outfile[:infile[:infile...]]", defaulting infile="outfile.in".
-  case "$ac_file" in
-  *:*) ac_file_in=`echo "$ac_file"|sed 's%[^:]*:%%'`
-       ac_file=`echo "$ac_file"|sed 's%:.*%%'` ;;
-  *) ac_file_in="${ac_file}.in" ;;
-  esac
-
-  # Adjust a relative srcdir, top_srcdir, and INSTALL for subdirectories.
-
-  # Remove last slash and all that follows it.  Not all systems have dirname.
-  ac_dir=`echo $ac_file|sed 's%/[^/][^/]*$%%'`
-  if test "$ac_dir" != "$ac_file" && test "$ac_dir" != .; then
-    # The file is in a subdirectory.
-    test ! -d "$ac_dir" && mkdir "$ac_dir"
-    ac_dir_suffix="/`echo $ac_dir|sed 's%^\./%%'`"
-    # A "../" for each directory in $ac_dir_suffix.
-    ac_dots=`echo $ac_dir_suffix|sed 's%/[^/]*%../%g'`
-  else
-    ac_dir_suffix= ac_dots=
-  fi
-
-  case "$ac_given_srcdir" in
-  .)  srcdir=.
-      if test -z "$ac_dots"; then top_srcdir=.
-      else top_srcdir=`echo $ac_dots|sed 's%/$%%'`; fi ;;
-  /*) srcdir="$ac_given_srcdir$ac_dir_suffix"; top_srcdir="$ac_given_srcdir" ;;
-  *) # Relative path.
-    srcdir="$ac_dots$ac_given_srcdir$ac_dir_suffix"
-    top_srcdir="$ac_dots$ac_given_srcdir" ;;
-  esac
-
-
-  echo creating "$ac_file"
-  rm -f "$ac_file"
-  configure_input="Generated automatically from `echo $ac_file_in|sed 's%.*/%%'` by configure."
-  case "$ac_file" in
-  *Makefile*) ac_comsub="1i\\
-# $configure_input" ;;
-  *) ac_comsub= ;;
-  esac
-
-  ac_file_inputs=`echo $ac_file_in|sed -e "s%^%$ac_given_srcdir/%" -e "s%:% $ac_given_srcdir/%g"`
-  sed -e "$ac_comsub
-s%@configure_input@%$configure_input%g
-s%@srcdir@%$srcdir%g
-s%@top_srcdir@%$top_srcdir%g
-" $ac_file_inputs | (eval "$ac_sed_cmds") > $ac_file
-fi; done
-rm -f conftest.s*
-
-
-
-exit 0
diff -NarU5 wmx-6pl1/CVS/Entries wmx-cvs-2006-06-02/CVS/Entries
--- wmx-6pl1/CVS/Entries	1969-12-31 19:00:00.000000000 -0500
+++ wmx-cvs-2006-06-02/CVS/Entries	2006-06-02 10:50:25.000000000 -0400
@@ -0,0 +1,29 @@
+/ANNOYING-BUGS/1.1/Tue Aug 12 13:24:10 2003//
+/Border.C/1.9/Thu Aug 14 12:54:22 2003//
+/Border.h/1.4/Tue Aug 12 13:11:19 2003//
+/Buttons.C/1.14/Thu Aug 14 13:07:12 2003//
+/Channel.C/1.11/Sun Aug 17 13:56:59 2003//
+/Client.C/1.11/Tue Aug 12 14:50:47 2003//
+/Client.h/1.9/Tue Aug 12 14:49:35 2003//
+/Config.C/1.4/Thu Aug 14 13:07:12 2003//
+/Config.h/1.15/Thu Aug 14 13:07:12 2003//
+/Cursors.h/1.1/Tue Aug 12 12:55:17 2003//
+/Events.C/1.9/Thu Aug 14 13:07:12 2003//
+/General.h/1.4/Tue Aug 12 13:11:19 2003//
+/Main.C/1.2/Tue Aug 12 13:07:39 2003//
+/Makefile.in/1.1/Tue Aug 12 13:11:19 2003//
+/Manager.C/1.13/Thu Aug 14 13:07:12 2003//
+/Manager.h/1.13/Tue Aug 12 14:50:47 2003//
+/Menu.C/1.11/Thu Aug 14 13:07:12 2003//
+/Menu.h/1.7/Tue Aug 12 13:16:28 2003//
+/README/1.8/Tue Aug 12 13:21:33 2003//
+/README.contrib/1.1/Tue Aug 12 13:07:39 2003//
+/Rotated.C/1.4/Tue Aug 12 13:16:28 2003//
+/Rotated.h/1.4/Tue Aug 12 13:16:28 2003//
+/Session.C/1.1/Tue Aug 12 13:07:39 2003//
+/UPDATES/1.3/Tue Aug 12 14:49:35 2003//
+/background.xpm/1.2/Tue Aug 12 13:17:29 2003//
+/configure/1.1/Tue Aug 12 13:11:19 2003//
+/configure.in/1.1/Tue Aug 12 13:11:19 2003//
+/listmacro.h/1.1/Tue Aug 12 13:07:39 2003//
+D
diff -NarU5 wmx-6pl1/CVS/Repository wmx-cvs-2006-06-02/CVS/Repository
--- wmx-6pl1/CVS/Repository	1969-12-31 19:00:00.000000000 -0500
+++ wmx-cvs-2006-06-02/CVS/Repository	2006-06-02 10:50:25.000000000 -0400
@@ -0,0 +1 @@
+wmx
diff -NarU5 wmx-6pl1/CVS/Root wmx-cvs-2006-06-02/CVS/Root
--- wmx-6pl1/CVS/Root	1969-12-31 19:00:00.000000000 -0500
+++ wmx-cvs-2006-06-02/CVS/Root	2006-06-02 10:50:25.000000000 -0400
@@ -0,0 +1 @@
+:pserver:anonymous at wm2.cvs.sourceforge.net:/cvsroot/wm2
diff -NarU5 wmx-6pl1/Events.C wmx-cvs-2006-06-02/Events.C
--- wmx-6pl1/Events.C	2001-08-31 04:02:49.000000000 -0400
+++ wmx-cvs-2006-06-02/Events.C	2003-08-14 09:07:12.000000000 -0400
@@ -244,11 +244,11 @@
 
 void WindowManager::checkDelaysForFocus()
 {
     if (!CONFIG_AUTO_RAISE) return;
 
-    int t = timestamp(True);
+    Time t = timestamp(True);
 
     if (m_focusPointerMoved) {	// only raise when pointer stops
 
 	if (t < m_focusTimestamp ||
 	    t - m_focusTimestamp > CONFIG_POINTER_STOPPED_DELAY) {
@@ -262,11 +262,11 @@
 	    } else m_focusPointerNowStill = True; // until proven false
 	}
     } else {
 
 	if (t < m_focusTimestamp ||
-	    t - m_focusTimestamp > CONFIG_AUTO_RAISE_DELAY) {
+	    t - m_focusTimestamp > (Time)CONFIG_AUTO_RAISE_DELAY) {
 
 	    m_focusCandidate->focusIfAppropriate(True);
 
 //	    if (m_focusCandidate->isNormal()) m_focusCandidate->mapRaised();
 //	    stopConsideringFocus();
diff -NarU5 wmx-6pl1/Makefile wmx-cvs-2006-06-02/Makefile
--- wmx-6pl1/Makefile	2001-04-24 04:58:56.000000000 -0400
+++ wmx-cvs-2006-06-02/Makefile	1969-12-31 19:00:00.000000000 -0500
@@ -1,69 +0,0 @@
-# Generated automatically from Makefile.in by configure.
-
-CCC=c++
-prefix=/usr/X11R6
-exec_prefix=${prefix}
-
-# If you're not using background pixmaps, remove -lXpm from the LIBS.
-# If your X libraries are somewhere other than /usr/X11/lib, give their
-# location here.
-#LIBS	= -L/usr/X11/lib -lXpm -lXext -lX11 -lXmu -lSM -lICE -lm
-LIBS=-lXpm -lXext -lX11 
-LDFLAGS= -L/usr/X11R6/lib
-
-
-# If your X includes are not in /usr/include/X11, add their location
-# as a -I option here (excluding the X11 bit).  If you're using I18N
-# and Xlocale, please add -DX_LOCALE.
-#CFLAGS = -g -O2 -I/usr/include -I/usr/openwin/include
-CXXFLAGS=-g -O2 -I/usr/X11R6/include
-
-OBJECTS	= Border.o Buttons.o Channel.o Client.o Config.o Events.o Main.o Manager.o Menu.o Rotated.o Session.o
-
-.C.o:
-	$(CCC) -c $(CXXFLAGS) $<
-
-all:	wmx
-
-wmx:	$(OBJECTS)
-	test -f wmx && mv -f wmx wmx.old || true
-	$(CCC) -o wmx $(OBJECTS) $(LDFLAGS) $(LIBS)
-
-depend:
-	-awk '{print;} /^# DO NOT DELETE/{exit}' Makefile>Makefile.dep
-	test -s Makefile.dep
-	mv Makefile.dep Makefile;g++ -MM $(CXXFLAGS) *.C>>Makefile
-
-clean:
-	rm -f *.o core
-
-distclean: clean
-	rm -f wmx wmx.old *~ *.bak *.org *.orig config.* Makefile
-
-install:
-	-mv -f ${exec_prefix}/bin/wmx ${exec_prefix}/bin/wmx.old
-	cp wmx ${exec_prefix}/bin/wmx
-	-chmod 0755 ${exec_prefix}/bin/wmx
-	-chown root:wheel ${exec_prefix}/bin/wmx
-	-rm -f ${exec_prefix}/bin/wmx.old
-
-# DO NOT DELETE -- make depend depends on it
-Border.o: Border.C Border.h General.h Config.h Rotated.h Client.h \
- Manager.h listmacro.h background.xpm
-Buttons.o: Buttons.C Manager.h General.h Config.h listmacro.h Client.h \
- Border.h Rotated.h Menu.h
-Channel.o: Channel.C Manager.h General.h Config.h listmacro.h Client.h \
- Border.h Rotated.h
-Client.o: Client.C Manager.h General.h Config.h listmacro.h Client.h \
- Border.h Rotated.h
-Config.o: Config.C Config.h
-Events.o: Events.C Manager.h General.h Config.h listmacro.h Client.h \
- Border.h Rotated.h
-Main.o: Main.C Manager.h General.h Config.h listmacro.h Client.h \
- Border.h Rotated.h
-Manager.o: Manager.C Manager.h General.h Config.h listmacro.h Menu.h \
- Client.h Border.h Rotated.h Cursors.h
-Menu.o: Menu.C Menu.h General.h Config.h Manager.h listmacro.h \
- Client.h Border.h Rotated.h
-Rotated.o: Rotated.C Config.h Rotated.h
-Session.o: Session.C Manager.h General.h Config.h listmacro.h
diff -NarU5 wmx-6pl1/Manager.C wmx-cvs-2006-06-02/Manager.C
--- wmx-6pl1/Manager.C	2001-04-23 05:10:42.000000000 -0400
+++ wmx-cvs-2006-06-02/Manager.C	2003-08-14 09:07:12.000000000 -0400
@@ -53,18 +53,19 @@
     m_altModMask(0) // later
 {
     char *home = getenv("HOME");
     char *wmxdir = getenv("WMXDIR");
     
-    fprintf(stderr, "\nwmx: Copyright (c) 1996-2001 Chris Cannam."
-	    "  Sixth release, April 2001\n"
+    fprintf(stderr, "\nwmx: Copyright (c) 1996-2003 Chris Cannam."
+	    "  Not a release\n"
 	    "     Parts derived from 9wm Copyright (c) 1994-96 David Hogan\n"
 	    "     Command menu code Copyright (c) 1997 Jeremy Fitzhardinge\n"
  	    "     Japanize code Copyright (c) 1998 Kazushi (Jam) Marukawa\n"
  	    "     Original keyboard-menu code Copyright (c) 1998 Nakayama Shintaro\n"
 	    "     Dynamic configuration code Copyright (c) 1998 Stefan `Sec' Zehl\n"
 	    "     Multihead display code Copyright (c) 2000 Sven Oliver `SvOlli' Moll\n"
+	    "     See source distribution for other patch contributors\n"
 	    "     %s\n     Copying and redistribution encouraged.  "
 	    "No warranty.\n\n", XV_COPYRIGHT);
 
     int i;
 #if CONFIG_USE_SESSION_MANAGER != False
@@ -515,11 +516,13 @@
 
 	char error[100];
 	sprintf(error, "couldn't load %s colour", desc);
 	fatal(error);
 
-    } else return nearest.pixel;
+    }
+
+    return nearest.pixel;
 }
 
 
 void WindowManager::installCursor(RootCursor c)
 {
@@ -568,15 +571,16 @@
 	m_restart = True;
 }
 
 void WindowManager::scanInitialWindows()
 {
-    unsigned int i, n, s;
+    unsigned int i, n;
+    int s;
     Window w1, w2, *wins;
     XWindowAttributes attr;
     
-    for(s=0;s<m_screensTotal;s++)
+    for (s = 0; s < m_screensTotal; s++)
     {
         XQueryTree(m_display, m_root[s], &w1, &w2, &wins, &n);
 
         for (i = 0; i < n; ++i) {
 
@@ -645,14 +649,14 @@
         unsigned int w_clip = 0;
         unsigned int h_clip = 0;
         int x_clip = 0;
         int y_clip = 0;
 
-        int shapeq = XShapeQueryExtents(m_display, w, &bounding_shape, 
-                                        &x_bounding, &y_bounding, 
-                                        &w_bounding, &h_bounding, &clip_shape,
-                                        &x_clip, &y_clip, &w_clip, &h_clip);
+        (void)XShapeQueryExtents(m_display, w, &bounding_shape, 
+				 &x_bounding, &y_bounding, 
+				 &w_bounding, &h_bounding, &clip_shape,
+				 &x_clip, &y_clip, &w_clip, &h_clip);
 
         if (bounding_shape == 1) {
             //	fprintf(stderr, "0x%X: shapeq = %d, bounding_shape = %d x=%d y=%d w=%d h=%d clip_shape=%d x=%d y=%d w=%d h=%d\n",w, shapeq, bounding_shape, x_bounding, y_bounding, w_bounding, h_bounding,clip_shape,  x_clip, y_clip, w_clip, h_clip);
 	
             //            int count = 0;
@@ -688,10 +692,18 @@
     } else {
 	XInstallColormap(m_display, cmap);
     }
 }
 
+void WindowManager::setActiveClient(Client *const c)
+{
+    if (m_activeClient && m_activeClient != c) {
+	m_activeClient->deactivate();
+    }
+    m_activeClient = c;
+}
+
 void WindowManager::clearFocus()
 {
     static Window w = 0;
     Client *active = activeClient();
 
diff -NarU5 wmx-6pl1/Manager.h wmx-cvs-2006-06-02/Manager.h
--- wmx-6pl1/Manager.h	2001-04-24 04:58:31.000000000 -0400
+++ wmx-cvs-2006-06-02/Manager.h	2003-08-12 10:50:47.000000000 -0400
@@ -25,11 +25,11 @@
     Client *activeClient() { return m_activeClient; }
     Boolean raiseTransients(Client *); // true if raised any
     Time timestamp(Boolean reset);
     void clearFocus();
 
-    void setActiveClient(Client *const c) { m_activeClient = c; }
+    void setActiveClient(Client *const c);
 
     void addToHiddenList(Client *);
     void removeFromHiddenList(Client *);
     void skipInRevert(Client *, Client *);
 
diff -NarU5 wmx-6pl1/Menu.C wmx-cvs-2006-06-02/Menu.C
--- wmx-6pl1/Menu.C	2001-10-05 09:01:21.000000000 -0400
+++ wmx-cvs-2006-06-02/Menu.C	2003-08-14 09:07:12.000000000 -0400
@@ -25,12 +25,13 @@
 #define STRLEN_MITEMS(i) strlen(m_items[(i)])
 #endif
 
 Menu::Menu(WindowManager *manager, XEvent *e)
     : m_items(0), m_nItems(0), m_nHidden(0),
-      m_windowManager(manager), m_event(e),
-      m_hasSubmenus(False)
+      m_hasSubmenus(False),
+      m_windowManager(manager),
+      m_event(e)
 {
     if (!m_initialised)
     {
 	XGCValues *values;
 	XSetWindowAttributes *attr;
@@ -236,11 +237,11 @@
     {
 	int i;
 	foundEvent = False;
 
 	if (CONFIG_FEEDBACK_DELAY >= 0 &&
-	    tdiff > CONFIG_FEEDBACK_DELAY &&
+	    tdiff > (unsigned long)CONFIG_FEEDBACK_DELAY &&
 	    !isKeyboardMenu && // removeFeedback didn't seem to work for it
 	    !speculating) {
 
 	    if (selecting >= 0 && selecting < m_nItems) {
 		raiseFeedbackLevel(selecting);
@@ -618,12 +619,11 @@
 {
     if (Client *c = checkFeedback(item)) c->raiseFeedbackLevel();
 }
 
 
-CommandMenu::CommandMenu(WindowManager *manager, XEvent *e,
-			 char* otherdir = NULL)
+CommandMenu::CommandMenu(WindowManager *manager, XEvent *e, char* otherdir)
     : Menu(manager, e)
 {
     const char *home = getenv("HOME");
     const char *wmxdir = getenv("WMXDIR");
 
diff -NarU5 wmx-6pl1/UPDATES wmx-cvs-2006-06-02/UPDATES
--- wmx-6pl1/UPDATES	2000-05-11 12:42:30.000000000 -0400
+++ wmx-cvs-2006-06-02/UPDATES	2003-08-12 10:49:35.000000000 -0400
@@ -1,7 +1,12 @@
 /* vim:set ts=4 ai: ,e to add info */
 
+- 2000/05/12
+	added Zvezdan Petkovic's patch for horizontal and full-
+	screen maximise as well as vertical, and to make maximise
+	and unmaximise optionally use the same key (toggle).
+
 wmx-6pre4:
 
 - 2000/05/11
         change so as to use alt-modifier keysym instead of
         coding the mask straight in to Config.h.  now Manager.C

wmx-6pl1-cfg.patch:

Index: wmx-6pl1-cfg.patch
===================================================================
RCS file: /cvs/extras/rpms/wmx/devel/wmx-6pl1-cfg.patch,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- wmx-6pl1-cfg.patch	14 Feb 2006 21:20:05 -0000	1.1
+++ wmx-6pl1-cfg.patch	5 Jun 2006 17:37:39 -0000	1.2
@@ -1,22 +1,19 @@
 diff -NarU5 wmx-6pl1.orig/Config.h wmx-6pl1/Config.h
---- wmx-6pl1.orig/Config.h	2001-04-23 11:48:31.000000000 -0400
-+++ wmx-6pl1/Config.h	2005-12-16 09:08:35.000000000 -0500
-@@ -73,12 +73,12 @@
- // Spawn a temporary new shell between the wm and each new process?
+--- wmx-6pl1.orig/Config.h	2006-06-04 13:57:06.000000000 -0400
++++ wmx-6pl1/Config.h	2006-06-04 13:59:12.000000000 -0400
+@@ -75,11 +75,10 @@
  #define CONFIG_EXEC_USING_SHELL   False
  
  // What to run to get a new window (from the "New" menu option)
  #define CONFIG_NEW_WINDOW_LABEL "New"
--//#define CONFIG_NEW_WINDOW_COMMAND "xterm"
--#define CONFIG_NEW_WINDOW_COMMAND "/home/chris/.wmx/terminal"
-+#define CONFIG_NEW_WINDOW_COMMAND "xterm"
-+//#define CONFIG_NEW_WINDOW_COMMAND "/home/chris/.wmx/terminal"
+ #define CONFIG_NEW_WINDOW_COMMAND "xterm"
+-//#define CONFIG_NEW_WINDOW_COMMAND "/home/ccannam/.wmx/terminal"
  #define CONFIG_NEW_WINDOW_COMMAND_OPTIONS 0
  // or, for example,
  //#define CONFIG_NEW_WINDOW_COMMAND_OPTIONS "-ls","-sb","-sl","1024",0
  // alternatively,
- #define CONFIG_DISABLE_NEW_WINDOW_COMMAND (dConfig.disableNew())
-@@ -89,11 +89,11 @@
+ #define CONFIG_DISABLE_NEW_WINDOW_COMMAND (DynamicConfig::config.disableNew())
+@@ -90,11 +89,11 @@
   
  // Directory under $HOME in which to look for commands for the
  // middle-button menu
@@ -29,7 +26,7 @@
  #define CONFIG_ADD_SCREEN_TO_COMMAND_MENU False
   
  // Focus possibilities.
-@@ -120,11 +120,11 @@
+@@ -121,11 +120,11 @@
  
  // Number of pixels off the screen you have to push a window
  // before the manager notices the window is off-screen (the higher
@@ -42,7 +39,20 @@
  // recalculated afresh every time their focus changes.  This will
  // probably slow things down hideously, but has been reported as
  // necessary on some systems (possibly SunOS 4.x with OpenWindows).
-@@ -294,11 +294,11 @@
+@@ -178,11 +177,11 @@
+ 
+ // This is the key for wm controls: e.g. Alt/Left and Alt/Right to
+ // flip channels, and Alt/Tab to switch windows.  (On my 105-key
+ // PC keyboard, Meta_L corresponds to the left Windows key.)
+ 
+-#define CONFIG_ALT_KEY            XK_Super_L
++#define CONFIG_ALT_KEY            XK_Meta_L
+ 
+ // And these define the rest of the keyboard controls, when the above
+ // modifier is pressed; they're keysyms as defined in <X11/keysym.h>
+ // and <X11/keysymdef.h>
+ 
+@@ -304,11 +303,11 @@
  #define CONFIG_MENU_BORDERS       "black"
  
  // Pixel width for the bit of frame to the left of the window and the
@@ -55,7 +65,7 @@
  // ========================
  // Section IV. Flashy stuff
  // ========================
-@@ -307,11 +307,11 @@
+@@ -317,11 +316,11 @@
  // in ./background.xpm; if USE_PIXMAP_MENUS is also True, the menus
  // will be too.  The latter screws up in palette-based visuals, but
  // should be okay in true-colour.
@@ -68,22 +78,3 @@
  // how close you have to middle-button-click to the top-right corner
  // of the root window before the channel change happens.  Set
  // USE_CHANNEL_KEYS if you want Alt-F1, Alt-F2 etc for quick channel
-diff -NarU5 wmx-6pl1.orig/Makefile.in wmx-6pl1/Makefile.in
---- wmx-6pl1.orig/Makefile.in	1999-08-31 19:53:08.000000000 -0400
-+++ wmx-6pl1/Makefile.in	2005-12-16 09:07:16.000000000 -0500
-@@ -39,13 +39,14 @@
- distclean: clean
- 	rm -f wmx wmx.old *~ *.bak *.org *.orig config.* Makefile
- 
- install:
- 	-mv -f @bindir@/wmx @bindir@/wmx.old
-+	strip wmx
- 	cp wmx @bindir@/wmx
- 	-chmod 0755 @bindir@/wmx
--	-chown root:wheel @bindir@/wmx
-+	-chown root:root @bindir@/wmx
- 	-rm -f @bindir@/wmx.old
- 
- # DO NOT DELETE -- make depend depends on it
- Border.o: Border.C Border.h General.h Config.h Rotated.h Client.h \
-  Manager.h listmacro.h background.xpm


Index: wmx.spec
===================================================================
RCS file: /cvs/extras/rpms/wmx/devel/wmx.spec,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- wmx.spec	19 May 2006 19:07:44 -0000	1.5
+++ wmx.spec	5 Jun 2006 17:37:39 -0000	1.6
@@ -1,6 +1,6 @@
 Name: wmx
 Version: 6pl1
-Release: 8%{?dist}
+Release: 9%{?dist}
 Summary: A really simple window manager for X
 License: BSD
 Group: User Interface/X
@@ -10,11 +10,16 @@
 Source2: background.xpm
 Source3: wmx.desktop
 Source4: Xclients.wmx.sh
-Patch0: wmx-6pl1-fix.patch
-Patch1: wmx-6pl1-cfg.patch
-Patch2: wmx-6pl1-64b.patch
+Patch0: wmx-6pl1-cvs20060602.patch
+Patch1: wmx-6pl1-64b.patch
+Patch2: wmx-6pl1-cfgbug.patch
+Patch3: wmx-6pl1-cfg.patch
 BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n)
+%if "%{fedora}" <= "4"
+BuildRequires: xorg-x11-devel
+%else
 BuildRequires: xorg-x11-proto-devel libX11-devel libXpm-devel libXext-devel
+%endif
 
 %description
 A really simple window manager for X, based on wm2, with a minimal set of
@@ -26,7 +31,8 @@
 %{__install} -p %{SOURCE2} .
 %patch0 -p1
 %patch1 -p1
-%patch2 -p1 -b .64b
+%patch2 -p1
+%patch3 -p1
 
 %build
 export LDFLAGS=-L/usr/X11R6/%{_lib}
@@ -53,15 +59,18 @@
 %{_sysconfdir}/X11/xinit/Xclients.d/*
 
 %changelog
+* Sun Jun 04 2006 Gabriel Somlo <somlo at cmu.edu> 6pl1-9
+- added patch containing latest cvs fixes
+- both monolithic and modular X supported in the same specfile (to be removed when we drop support for fc4)
+- added patch by zpetkovic at acm.org for dynamic config string termination bug
+- cvs patch screws up ALT key define, subsequent config patch puts it back
+
 * Fri May 19 2006 Gabriel Somlo <somlo at cmu.edu> 6pl1-8
 - Don't strip binary during install to preserve debuginfo (bugzilla #192435)
 
 * Thu Feb 16 2006 Ignacio Vazquez-Abrams <ivazquez at ivazquez.net>
 - Fixed 64-bit build
 
-* Wed Feb 15 2006 Ignacio Vazquez-Abrams <ivazquez at ivazquez.net>
-- Modified for modular X
-
 * Sat Dec 31 2005 Gabriel Somlo <somlo at cmu.edu> 6pl1-7
 - added BuildRequires for X
 


--- wmx-6pl1-fix.patch DELETED ---




More information about the fedora-extras-commits mailing list