summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorArmando Di Cianno <fafhrd@gentoo.org>2005-03-17 22:55:09 +0000
committerArmando Di Cianno <fafhrd@gentoo.org>2005-03-17 22:55:09 +0000
commitb481297dec18ff5e3d29bb6b8595f1ccacf687f8 (patch)
tree1cf3a0476f8224432a01518d5554dfd63505ef14
parentRemove old ebuild. (diff)
downloadgentoo-2-b481297dec18ff5e3d29bb6b8595f1ccacf687f8.tar.gz
gentoo-2-b481297dec18ff5e3d29bb6b8595f1ccacf687f8.tar.bz2
gentoo-2-b481297dec18ff5e3d29bb6b8595f1ccacf687f8.zip
windowmaker updated to include a slew of patches that add options to WPrefs.app, as well as fix misc. big endian and window listing issues -- mips is still missing a dep (gnustep), getting on that immediately
(Portage version: 2.0.51.19)
-rw-r--r--x11-wm/windowmaker/Manifest37
-rw-r--r--x11-wm/windowmaker/files/64bit+endian-fixes-0.9x.patch166
-rw-r--r--x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r12
-rw-r--r--x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r22
-rw-r--r--x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r32
-rw-r--r--x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r42
-rw-r--r--x11-wm/windowmaker/files/digest-windowmaker-0.91.0-r32
-rw-r--r--x11-wm/windowmaker/files/singleclick-shadeormaxopts-0.9x.patch227
-rw-r--r--x11-wm/windowmaker/files/wlist-0.9x.patch92
-rw-r--r--x11-wm/windowmaker/windowmaker-0.91.0-r3.ebuild197
10 files changed, 709 insertions, 20 deletions
diff --git a/x11-wm/windowmaker/Manifest b/x11-wm/windowmaker/Manifest
index e14d91875901..a33dcebf3d16 100644
--- a/x11-wm/windowmaker/Manifest
+++ b/x11-wm/windowmaker/Manifest
@@ -1,27 +1,32 @@
-MD5 9ea82ec741526eb6ba38b58628e54702 windowmaker-0.91.0-r1.ebuild 6201
+MD5 910eeaaf5b0b83d9df261fdca8e1af5d ChangeLog 9724
+MD5 091028d21186597cb01d1440ed387951 metadata.xml 221
+MD5 efdf7c58ef9906d15d3e4c896f597e0b windowmaker-0.80.2-r1.ebuild 3408
MD5 854dcb516944d70161a4a251489fc793 windowmaker-0.80.2-r2.ebuild 3437
+MD5 fef00a73d3dffa9133d0c116dd08a92d windowmaker-0.80.2-r3.ebuild 3750
MD5 c9327e6f972efe1cb1b7d6909d369cdd windowmaker-0.80.2-r4.ebuild 4034
MD5 5952e7ef277cd7abc1f40ec000e654f9 windowmaker-0.90.0.ebuild 4492
-MD5 efdf7c58ef9906d15d3e4c896f597e0b windowmaker-0.80.2-r1.ebuild 3408
-MD5 c720fae3c7c7372972529f3b2d7f5071 windowmaker-0.91.0.ebuild 4478
+MD5 9ea82ec741526eb6ba38b58628e54702 windowmaker-0.91.0-r1.ebuild 6201
MD5 aa2f4df566b5fbdd64bdd37815a55777 windowmaker-0.91.0-r2.ebuild 6278
-MD5 fef00a73d3dffa9133d0c116dd08a92d windowmaker-0.80.2-r3.ebuild 3750
-MD5 910eeaaf5b0b83d9df261fdca8e1af5d ChangeLog 9724
-MD5 091028d21186597cb01d1440ed387951 metadata.xml 221
-MD5 a42a33a349ca84fb6e2cc5fdbd627b99 files/trance.patch.WM-0.80.2.diff 9738
+MD5 c720fae3c7c7372972529f3b2d7f5071 windowmaker-0.91.0.ebuild 4478
+MD5 3c2554f288bc1e271239f4931e139ea0 windowmaker-0.91.0-r3.ebuild 6698
+MD5 f0ba434033b1f1e0956a037076da0b9c files/20_endian+64bit.diff 2740
MD5 c8eb68627dc7b53b10143626018ff597 files/gtk2flickerfix.patch 1969
-MD5 915c0fe65c24d54a1507f662d7b24114 files/xinerama.patch 26662
MD5 c41215f830e33a636a440ce389db01eb files/menufocus.patch 1554
+MD5 a42a33a349ca84fb6e2cc5fdbd627b99 files/trance.patch.WM-0.80.2.diff 9738
+MD5 9a5c9f1b2b44a678526f0fd71b2cf51d files/windowmaker-0.80.2-r1-gentoo.patch 4331
MD5 a062e261bd5aaca39bc17be01f07f1b6 files/wlist.patch 2776
+MD5 f70c1e1b121cfc32dbd802678f3b111f files/wmaker.desktop 221
MD5 37aefa1e6f793583e8fa7890231d1721 files/wmfpo.patch 7696
-MD5 f0ba434033b1f1e0956a037076da0b9c files/20_endian+64bit.diff 2740
-MD5 b5304655d4ff5441989ab94a1bdc9506 files/digest-windowmaker-0.80.2-r1 144
-MD5 b5304655d4ff5441989ab94a1bdc9506 files/digest-windowmaker-0.80.2-r2 144
-MD5 b5304655d4ff5441989ab94a1bdc9506 files/digest-windowmaker-0.80.2-r3 144
-MD5 b5304655d4ff5441989ab94a1bdc9506 files/digest-windowmaker-0.80.2-r4 144
-MD5 9a5c9f1b2b44a678526f0fd71b2cf51d files/windowmaker-0.80.2-r1-gentoo.patch 4331
+MD5 915c0fe65c24d54a1507f662d7b24114 files/xinerama.patch 26662
+MD5 3a5eaebd5ccf7d3384c042e13f52bef1 files/wlist-0.9x.patch 2980
+MD5 c53a14e14931247288ba66cb017a9f42 files/64bit+endian-fixes-0.9x.patch 4831
+MD5 618ce508c693218a801d59c1b7909a07 files/singleclick-shadeormaxopts-0.9x.patch 8299
+MD5 001ecc7ca2bda1ffa49407907aa304c3 files/digest-windowmaker-0.80.2-r1 142
+MD5 001ecc7ca2bda1ffa49407907aa304c3 files/digest-windowmaker-0.80.2-r2 142
+MD5 001ecc7ca2bda1ffa49407907aa304c3 files/digest-windowmaker-0.80.2-r3 142
+MD5 001ecc7ca2bda1ffa49407907aa304c3 files/digest-windowmaker-0.80.2-r4 142
+MD5 8cb3b3bf7cef606cb356c4ba82744a50 files/digest-windowmaker-0.90.0 144
MD5 8b11b75a0ece3b854bf47e03ded7e0ba files/digest-windowmaker-0.91.0-r1 144
MD5 8b11b75a0ece3b854bf47e03ded7e0ba files/digest-windowmaker-0.91.0-r2 144
-MD5 f70c1e1b121cfc32dbd802678f3b111f files/wmaker.desktop 221
-MD5 8cb3b3bf7cef606cb356c4ba82744a50 files/digest-windowmaker-0.90.0 144
+MD5 8b11b75a0ece3b854bf47e03ded7e0ba files/digest-windowmaker-0.91.0-r3 144
MD5 8b11b75a0ece3b854bf47e03ded7e0ba files/digest-windowmaker-0.91.0 144
diff --git a/x11-wm/windowmaker/files/64bit+endian-fixes-0.9x.patch b/x11-wm/windowmaker/files/64bit+endian-fixes-0.9x.patch
new file mode 100644
index 000000000000..c922fc965789
--- /dev/null
+++ b/x11-wm/windowmaker/files/64bit+endian-fixes-0.9x.patch
@@ -0,0 +1,166 @@
+diff -ur WindowMaker-0.91.0/src/wmspec.c WindowMaker-0.91.0-test/src/wmspec.c
+--- WindowMaker-0.91.0/src/wmspec.c 2004-10-24 15:36:15.000000000 -0400
++++ WindowMaker-0.91.0-test/src/wmspec.c 2005-03-13 14:25:18.860008096 -0500
+@@ -27,6 +27,7 @@
+
+ #include <X11/Xlib.h>
+ #include <X11/Xatom.h>
++#include <X11/Xarch.h>
+ #include <string.h>
+
+ #include "WindowMaker.h"
+@@ -314,15 +315,15 @@
+ void
+ wNETWMUpdateDesktop(WScreen *scr)
+ {
+- CARD32 *views, sizes[2];
++ long *views, sizes[2];
+ int count, i;
+
+ if (scr->workspace_count==0)
+ return;
+
+ count = scr->workspace_count * 2;
+- views = wmalloc(sizeof(CARD32) * count);
+- /*memset(views, 0, sizeof(CARD32) * count);*/
++ views = wmalloc(sizeof(long) * count);
++ /*memset(views, 0, sizeof(long) * count);*/
+
+ #ifdef VIRTUAL_DESKTOP
+ sizes[0] = scr->workspaces[scr->current_workspace]->width;
+@@ -362,7 +363,7 @@
+ 0, 1, &count);
+ if (prop)
+ {
+- int desktop= *(CARD32*)prop;
++ int desktop= *(long*)prop;
+ XFree(prop);
+ return desktop;
+ }
+@@ -382,40 +383,54 @@
+ &nitems_return, &bytes_after_return, &prop_return);
+
+ if (rc==Success && prop_return) {
+- unsigned int *data = (unsigned int *)prop_return;
++ unsigned long *data = (unsigned long *)prop_return;
+ unsigned int pos = 0, len = 0;
+ unsigned int best_pos = 0, best_tmp = ~0;
++ unsigned int tmp;
+ extern WPreferences wPreferences;
+ unsigned int pref_size = wPreferences.icon_size;
+ unsigned int pref_sq = pref_size*pref_size;
+- char *src, *dst;
++ unsigned char *src, *dst;
+ RImage *new_rimage;
+
+ do {
+ len = data[pos+0]*data[pos+1];
+- unsigned int tmp = pref_sq-len;
++ tmp = pref_sq-len;
+ if (tmp < best_tmp && tmp > 0) {
+ best_tmp = tmp;
+- best_pos = pos;
++ best_pos = pos+2;
+ }
+ pos += 2+len;
+ } while (pos < nitems_return && len != 0);
+
+- new_rimage = RCreateImage(data[best_pos+0], data[best_pos+1], True);
+- len = data[best_pos+0] * data[best_pos+1];
+- src = (char*)&data[best_pos+2];
+- dst = new_rimage->data;
+- for (pos=0; pos<len; ++pos, src+=4, dst+=4) {
+- dst[0] = src[2]; /* R */
+- dst[1] = src[1]; /* G */
+- dst[2] = src[0]; /* B */
+- dst[3] = src[3]; /* A */
+- }
++ if ( best_pos < 2 ) best_pos = 2;
++
++ new_rimage = RCreateImage(data[best_pos-2], data[best_pos-1], True);
+
+ if (new_rimage) {
+- if (wwin->net_icon_image)
+- RReleaseImage(wwin->net_icon_image);
+- wwin->net_icon_image = new_rimage;
++ len = data[best_pos-2] * data[best_pos-1];
++ dst = new_rimage->data;
++
++ for (pos = best_pos; pos < best_pos + len; pos++, dst += 4) {
++ src = (unsigned char *) &data[pos];
++
++#if BYTE_ORDER == BIG_ENDIAN
++ src += sizeof(unsigned long) - 4;
++ dst[0] = src[1]; /* R */
++ dst[1] = src[2]; /* G */
++ dst[2] = src[3]; /* B */
++ dst[3] = src[0]; /* A */
++#else /* Little endian */
++ dst[0] = src[2]; /* R */
++ dst[1] = src[1]; /* G */
++ dst[2] = src[0]; /* B */
++ dst[3] = src[3]; /* A */
++#endif /* endianness */
++ }
++
++ if (wwin->net_icon_image)
++ RReleaseImage(wwin->net_icon_image);
++ wwin->net_icon_image = new_rimage;
+ }
+
+ XFree(prop_return);
+@@ -426,7 +441,7 @@
+ static void
+ updateShowDesktop(WScreen * scr, Bool show)
+ {
+- CARD32 foo;
++ long foo;
+
+ foo = (show == True);
+ XChangeProperty(dpy, scr->root_win, net_showing_desktop, XA_CARDINAL, 32,
+@@ -599,7 +614,7 @@
+ void
+ wNETWMUpdateWorkarea(WScreen *scr, WArea usableArea)
+ {
+- CARD32 *area;
++ long *area;
+ int count, i;
+
+ /* XXX: not Xinerama compatible,
+@@ -609,7 +624,7 @@
+ return;
+
+ count = scr->workspace_count * 4;
+- area = wmalloc(sizeof(CARD32) * count);
++ area = wmalloc(sizeof(long) * count);
+ for (i=0; i<scr->workspace_count; i++) {
+ area[4*i + 0] = usableArea.x1;
+ area[4*i + 1] = usableArea.y1;
+@@ -732,7 +747,7 @@
+ static void
+ updateWorkspaceCount(WScreen *scr) /* changeable */
+ {
+- CARD32 count;
++ long count;
+
+ count = scr->workspace_count;
+
+@@ -744,7 +759,7 @@
+ static void
+ updateCurrentWorkspace(WScreen *scr) /* changeable */
+ {
+- CARD32 count;
++ long count;
+
+ count = scr->current_workspace;
+
+@@ -791,7 +806,7 @@
+ static void
+ updateWorkspaceHint(WWindow *wwin, Bool fake, Bool del)
+ {
+- CARD32 l;
++ long l;
+
+ if (del) {
+ XDeleteProperty(dpy, wwin->client_win, net_wm_desktop);
+Only in WindowMaker-0.91.0-test/src: wmspec.c.orig
diff --git a/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r1 b/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r1
index 4ef83da7e63a..0166f4cc3b9c 100644
--- a/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r1
+++ b/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r1
@@ -1,2 +1,2 @@
-MD5 e4b71ee2b35a4e16b371ab9595e7335f WindowMaker-0.80.2.tar.gz 2532831
+MD5 6a22ce04e5a444ce14ba904131fdae4a WindowMaker-0.80.2.tar.gz 70952
MD5 07c7700daaaf232bc490f5abaabef085 WindowMaker-extra-0.1.tar.gz 238018
diff --git a/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r2 b/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r2
index 4ef83da7e63a..0166f4cc3b9c 100644
--- a/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r2
+++ b/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r2
@@ -1,2 +1,2 @@
-MD5 e4b71ee2b35a4e16b371ab9595e7335f WindowMaker-0.80.2.tar.gz 2532831
+MD5 6a22ce04e5a444ce14ba904131fdae4a WindowMaker-0.80.2.tar.gz 70952
MD5 07c7700daaaf232bc490f5abaabef085 WindowMaker-extra-0.1.tar.gz 238018
diff --git a/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r3 b/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r3
index 4ef83da7e63a..0166f4cc3b9c 100644
--- a/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r3
+++ b/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r3
@@ -1,2 +1,2 @@
-MD5 e4b71ee2b35a4e16b371ab9595e7335f WindowMaker-0.80.2.tar.gz 2532831
+MD5 6a22ce04e5a444ce14ba904131fdae4a WindowMaker-0.80.2.tar.gz 70952
MD5 07c7700daaaf232bc490f5abaabef085 WindowMaker-extra-0.1.tar.gz 238018
diff --git a/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r4 b/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r4
index 4ef83da7e63a..0166f4cc3b9c 100644
--- a/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r4
+++ b/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r4
@@ -1,2 +1,2 @@
-MD5 e4b71ee2b35a4e16b371ab9595e7335f WindowMaker-0.80.2.tar.gz 2532831
+MD5 6a22ce04e5a444ce14ba904131fdae4a WindowMaker-0.80.2.tar.gz 70952
MD5 07c7700daaaf232bc490f5abaabef085 WindowMaker-extra-0.1.tar.gz 238018
diff --git a/x11-wm/windowmaker/files/digest-windowmaker-0.91.0-r3 b/x11-wm/windowmaker/files/digest-windowmaker-0.91.0-r3
new file mode 100644
index 000000000000..8973161344f4
--- /dev/null
+++ b/x11-wm/windowmaker/files/digest-windowmaker-0.91.0-r3
@@ -0,0 +1,2 @@
+MD5 be07953e905d1e42fe7a65ac2193a5f9 WindowMaker-0.91.0.tar.gz 2742380
+MD5 07c7700daaaf232bc490f5abaabef085 WindowMaker-extra-0.1.tar.gz 238018
diff --git a/x11-wm/windowmaker/files/singleclick-shadeormaxopts-0.9x.patch b/x11-wm/windowmaker/files/singleclick-shadeormaxopts-0.9x.patch
new file mode 100644
index 000000000000..000a3b45f0c7
--- /dev/null
+++ b/x11-wm/windowmaker/files/singleclick-shadeormaxopts-0.9x.patch
@@ -0,0 +1,227 @@
+diff -ur WindowMaker-0.91.0/WPrefs.app/Expert.c WindowMaker-0.91.0-test/WPrefs.app/Expert.c
+--- WindowMaker-0.91.0/WPrefs.app/Expert.c 2004-10-22 23:04:38.000000000 -0400
++++ WindowMaker-0.91.0-test/WPrefs.app/Expert.c 2005-03-13 14:44:03.428047768 -0500
+@@ -54,9 +54,10 @@
+ WMSetButtonSelected(panel->swi[4], GetBoolForKey("DontConfirmKill"));
+ WMSetButtonSelected(panel->swi[5], GetBoolForKey("DisableBlinking"));
+ WMSetButtonSelected(panel->swi[6], GetBoolForKey("AntialiasedText"));
++ WMSetButtonSelected(panel->swi[7], GetBoolForKey("DCMaximize"));
++ WMSetButtonSelected(panel->swi[8], GetBoolForKey("SingleClickLaunch"));
+ }
+
+-
+ static void
+ createPanel(Panel *p)
+ {
+@@ -66,10 +67,10 @@
+ panel->box = WMCreateBox(panel->parent);
+ WMSetViewExpandsToParent(WMWidgetView(panel->box), 2, 2, 2, 2);
+
+- for (i=0; i<7; i++) {
++ for (i=0; i<9; i++) {
+ panel->swi[i] = WMCreateSwitchButton(panel->box);
+ WMResizeWidget(panel->swi[i], FRAME_WIDTH-40, 25);
+- WMMoveWidget(panel->swi[i], 20, 20+i*25);
++ WMMoveWidget(panel->swi[i], 20, 20+i*23);
+ }
+
+ WMSetButtonText(panel->swi[0], _("Disable miniwindows (icons for minimized windows). For use with KDE/GNOME."));
+@@ -81,6 +82,9 @@
+ WMSetButtonText(panel->swi[6], _("Smooth font edges (needs restart)."));
+
+ WMSetButtonEnabled(panel->swi[6], True);
++ WMSetButtonText(panel->swi[7], _("Double click on title bar maximize"));
++ WMSetButtonText(panel->swi[8], _("Launch applications and restore windows with a single click"));
++
+
+ WMRealizeWidget(panel->box);
+ WMMapSubwidgets(panel->box);
+@@ -103,6 +107,8 @@
+ SetBoolForKey(WMGetButtonSelected(panel->swi[4]), "DontConfirmKill");
+ SetBoolForKey(WMGetButtonSelected(panel->swi[5]), "DisableBlinking");
+ SetBoolForKey(WMGetButtonSelected(panel->swi[6]), "AntialiasedText");
++ SetBoolForKey(WMGetButtonSelected(panel->swi[7]), "DCMaximize");
++ SetBoolForKey(WMGetButtonSelected(panel->swi[8]), "SingleClickLaunch");
+ }
+
+
+diff -ur WindowMaker-0.91.0/src/WindowMaker.h WindowMaker-0.91.0-test/src/WindowMaker.h
+--- WindowMaker-0.91.0/src/WindowMaker.h 2004-10-24 21:48:39.000000000 -0400
++++ WindowMaker-0.91.0-test/src/WindowMaker.h 2005-03-13 14:44:03.430047464 -0500
+@@ -466,6 +466,12 @@
+ /* shading animation */
+ signed char shade_speed;
+
++ /* double click on title bar maximize */
++ char dc_maximize;
++
++ /* single click to lauch applications */
++ char single_click;
++
+ int edge_resistance;
+ char attract;
+
+diff -ur WindowMaker-0.91.0/src/appicon.c WindowMaker-0.91.0-test/src/appicon.c
+--- WindowMaker-0.91.0/src/appicon.c 2004-10-14 13:31:49.000000000 -0400
++++ WindowMaker-0.91.0-test/src/appicon.c 2005-03-13 14:44:03.432047160 -0500
+@@ -585,6 +585,7 @@
+ int shad_x = 0, shad_y = 0, docking=0, dockable, collapsed = 0;
+ int ix, iy;
+ int clickButton = event->xbutton.button;
++ Bool hasMoved = False;
+ Pixmap ghost = None;
+ Window wins[2];
+ Bool movingSingle = False;
+@@ -665,6 +666,7 @@
+ break;
+
+ case MotionNotify:
++ hasMoved = True;
+ if (!grabbed) {
+ if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD
+ || abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) {
+@@ -802,6 +804,9 @@
+ if (wPreferences.auto_arrange_icons)
+ wArrangeIcons(scr, True);
+
++ if (!hasMoved && wPreferences.single_click)
++ iconDblClick(desc, event);
++
+ done = 1;
+ break;
+ }
+diff -ur WindowMaker-0.91.0/src/defaults.c WindowMaker-0.91.0-test/src/defaults.c
+--- WindowMaker-0.91.0/src/defaults.c 2004-10-25 21:13:50.000000000 -0400
++++ WindowMaker-0.91.0-test/src/defaults.c 2005-03-13 14:44:03.436046552 -0500
+@@ -556,6 +556,12 @@
+ {"DisableBlinking", "NO", NULL,
+ &wPreferences.dont_blink, getBool, NULL
+ },
++ {"DCMaximize", "NO", NULL,
++ &wPreferences.dc_maximize, getBool, NULL
++ },
++ {"SingleClickLaunch", "NO", NULL,
++ &wPreferences.single_click, getBool, NULL
++ },
+ /* style options */
+ {"MenuStyle", "normal", seMenuStyles,
+ &wPreferences.menu_style, getEnum, setMenuStyle
+diff -ur WindowMaker-0.91.0/src/dock.c WindowMaker-0.91.0-test/src/dock.c
+--- WindowMaker-0.91.0/src/dock.c 2004-10-22 23:10:40.000000000 -0400
++++ WindowMaker-0.91.0-test/src/dock.c 2005-03-13 14:52:34.738316792 -0500
+@@ -3758,7 +3758,7 @@
+
+
+
+-static void
++static Bool
+ handleIconMove(WDock *dock, WAppIcon *aicon, XEvent *event)
+ {
+ WScreen *scr = dock->screen_ptr;
+@@ -3774,6 +3774,7 @@
+ int tmp;
+ Pixmap ghost = None;
+ Bool docked;
++ Bool hasMoved = False;
+ int superfluous = wPreferences.superfluous; /* we catch it to avoid problems */
+ int omnipresent = aicon->omnipresent; /* this must be cached!!! */
+
+@@ -3828,6 +3829,7 @@
+ break;
+
+ case MotionNotify:
++ hasMoved = True;
+ if (!grabbed) {
+ if (abs(ofs_x-ev.xmotion.x)>=MOVE_THRESHOLD
+ || abs(ofs_y-ev.xmotion.y)>=MOVE_THRESHOLD) {
+@@ -3977,7 +3979,7 @@
+ #ifdef DEBUG
+ puts("End icon move");
+ #endif
+- return;
++ return hasMoved;
+ }
+ }
+ }
+@@ -4114,10 +4116,11 @@
+ if (getClipButton(event->xbutton.x, event->xbutton.y)!=CLIP_IDLE
+ && dock->type==WM_CLIP)
+ handleClipChangeWorkspace(scr, event);
+- else
+- handleDockMove(dock, aicon, event);
+- } else
+- handleIconMove(dock, aicon, event);
++ } else {
++ Bool hasMoved = handleIconMove(dock, aicon, event);
++ if (!hasMoved && wPreferences.single_click)
++ iconDblClick(desc, event);
++ }
+
+ } else if (event->xbutton.button==Button2 && dock->type==WM_CLIP &&
+ aicon==scr->clip_icon) {
+diff -ur WindowMaker-0.91.0/src/icon.c WindowMaker-0.91.0-test/src/icon.c
+--- WindowMaker-0.91.0/src/icon.c 2004-10-16 18:16:21.000000000 -0400
++++ WindowMaker-0.91.0-test/src/icon.c 2005-03-13 14:44:03.443045488 -0500
+@@ -891,6 +891,7 @@
+ int dx=event->xbutton.x, dy=event->xbutton.y;
+ int grabbed=0;
+ int clickButton=event->xbutton.button;
++ Bool hasMoved = False;
+
+ if (WCHECK_STATE(WSTATE_MODAL))
+ return;
+@@ -942,6 +943,7 @@
+ break;
+
+ case MotionNotify:
++ hasMoved = True;
+ if (!grabbed) {
+ if (abs(dx-ev.xmotion.x)>=MOVE_THRESHOLD
+ || abs(dy-ev.xmotion.y)>=MOVE_THRESHOLD) {
+@@ -979,6 +981,9 @@
+
+ if (wPreferences.auto_arrange_icons)
+ wArrangeIcons(wwin->screen_ptr, True);
++ if (!hasMoved && wPreferences.single_click)
++ miniwindowDblClick(desc, event);
++
+ return;
+
+ }
+diff -ur WindowMaker-0.91.0/src/window.c WindowMaker-0.91.0-test/src/window.c
+--- WindowMaker-0.91.0/src/window.c 2004-10-22 23:11:10.000000000 -0400
++++ WindowMaker-0.91.0-test/src/window.c 2005-03-13 14:44:03.446045032 -0500
+@@ -3100,13 +3100,29 @@
+
+ if (event->xbutton.button==Button1) {
+ if (event->xbutton.state == 0) {
+- if (!WFLAGP(wwin, no_shadeable)) {
++ /* check preferences, maximize or shade */
++ if (wPreferences.dc_maximize) {
++ if (!WFLAGP(wwin, no_resizable)) {
++ /* maximize window */
++ if (wwin->flags.maximized != 0) {
++ wUnmaximizeWindow(wwin);
++ wwin->flags.maximized = 0;
++ }
++ else {
++ wMaximizeWindow(wwin, MAX_VERTICAL|MAX_HORIZONTAL);
++ wwin->flags.maximized = MAX_VERTICAL|MAX_HORIZONTAL;
++ }
++ }
++ }
++ else {
++ if (!WFLAGP(wwin, no_shadeable)) {
+ /* shade window */
+ if (wwin->flags.shaded)
+- wUnshadeWindow(wwin);
++ wUnshadeWindow(wwin);
+ else
+- wShadeWindow(wwin);
+- }
++ wShadeWindow(wwin);
++ }
++ }
+ } else {
+ int dir = 0;
+
diff --git a/x11-wm/windowmaker/files/wlist-0.9x.patch b/x11-wm/windowmaker/files/wlist-0.9x.patch
new file mode 100644
index 000000000000..c165cce2e545
--- /dev/null
+++ b/x11-wm/windowmaker/files/wlist-0.9x.patch
@@ -0,0 +1,92 @@
+diff -ur WindowMaker-0.91.0/WINGs/wlist.c WindowMaker-0.91.0-test/WINGs/wlist.c
+--- WindowMaker-0.91.0/WINGs/wlist.c 2004-10-12 14:36:42.000000000 -0400
++++ WindowMaker-0.91.0-test/WINGs/wlist.c 2005-03-13 13:37:39.914633856 -0500
+@@ -4,6 +4,8 @@
+
+ #include "WINGsP.h"
+
++#include <X11/keysym.h>
++
+ char *WMListDidScrollNotification = "WMListDidScrollNotification";
+ char *WMListSelectionDidChangeNotification = "WMListSelectionDidChangeNotification";
+
+@@ -44,6 +46,7 @@
+ unsigned int redrawPending:1;
+ unsigned int buttonPressed:1;
+ unsigned int buttonWasPressed:1;
++ unsigned int focused:1;
+ } flags;
+ } List;
+
+@@ -141,10 +144,10 @@
+ lPtr->view->delegate = &_ListViewDelegate;
+
+ WMCreateEventHandler(lPtr->view, ExposureMask|StructureNotifyMask
+- |ClientMessageMask, handleEvents, lPtr);
++ |FocusChangeMask|ClientMessageMask, handleEvents, lPtr);
+
+ WMCreateEventHandler(lPtr->view, ButtonPressMask|ButtonReleaseMask
+- |EnterWindowMask|LeaveWindowMask|ButtonMotionMask,
++ |EnterWindowMask|LeaveWindowMask|ButtonMotionMask|KeyPressMask,
+ handleActionEvents, lPtr);
+
+ lPtr->itemHeight = WMFontHeight(scrPtr->normalFont) + 1;
+@@ -1044,6 +1047,11 @@
+ int topItem = lPtr->topItem;
+ static int lastClicked = -1, prevItem = -1;
+
++ /* for arrow keys handling */
++ char buffer[64];
++ KeySym ksym;
++ int count, row;
++
+ CHECK_CLASS(data, WC_List);
+
+ switch (event->type) {
+@@ -1096,6 +1104,10 @@
+ case ButtonPress:
+ if (event->xbutton.x <= WMWidgetWidth(lPtr->vScroller))
+ break;
++ /* need focus for keyboard events */
++ if (!lPtr->flags.focused);
++ WMSetFocusToWidget(lPtr);
++
+ if (event->xbutton.button == WINGsConfiguration.mouseWheelDown ||
+ event->xbutton.button == WINGsConfiguration.mouseWheelUp) {
+ int amount = 0;
+@@ -1202,6 +1214,34 @@
+ prevItem = tmp;
+ }
+ break;
++ case KeyPress:
++ /* handle arrow keys, space and return */
++ count = XLookupString(&event->xkey, buffer, 63, &ksym, NULL);
++ buffer[count] = '\0';
++ switch(ksym) {
++ case XK_Up:
++ row = WMGetListSelectedItemRow(lPtr);
++ WMSelectListItem(lPtr, row - 1);
++ if (row <= topItem)
++ scrollByAmount(lPtr, -1);
++ break;
++ case XK_Down:
++ row = WMGetListSelectedItemRow(lPtr);
++ WMSelectListItem(lPtr, row + 1);
++ if (row - topItem >= lPtr->fullFitLines)
++ scrollByAmount(lPtr, 1);
++ break;
++ case XK_space:
++ if (lPtr->action)
++ (*lPtr->action)(lPtr, lPtr->clientData);
++ break;
++ case XK_Return:
++ if (lPtr->doubleAction)
++ (*lPtr->doubleAction)(lPtr, lPtr->clientData);
++ break;
++ }
++ break;
++
+ }
+ if (lPtr->topItem != topItem)
+ WMPostNotificationName(WMListDidScrollNotification, lPtr, NULL);
+Only in WindowMaker-0.91.0-test/WINGs: wlist.c.orig
diff --git a/x11-wm/windowmaker/windowmaker-0.91.0-r3.ebuild b/x11-wm/windowmaker/windowmaker-0.91.0-r3.ebuild
new file mode 100644
index 000000000000..515d6b8f9eb7
--- /dev/null
+++ b/x11-wm/windowmaker/windowmaker-0.91.0-r3.ebuild
@@ -0,0 +1,197 @@
+# Copyright 1999-2005 Gentoo Foundation
+# Distributed under the terms of the GNU General Public License v2
+# $Header: /var/cvsroot/gentoo-x86/x11-wm/windowmaker/windowmaker-0.91.0-r3.ebuild,v 1.1 2005/03/17 22:55:09 fafhrd Exp $
+
+inherit eutils gnustep-funcs flag-o-matic
+
+S=${WORKDIR}/${P/windowm/WindowM}
+
+DESCRIPTION="The fast and light GNUstep window manager"
+SRC_URI="ftp://ftp.windowmaker.org/pub/source/release/${P/windowm/WindowM}.tar.gz
+ http://www.windowmaker.org/pub/source/release/WindowMaker-extra-0.1.tar.gz"
+HOMEPAGE="http://www.windowmaker.org/"
+
+IUSE="gif gnustep jpeg nls png tiff modelock vdesktop xinerama"
+DEPEND="x11-base/xorg-x11
+ media-libs/fontconfig
+ gif? ( || ( >=media-libs/libungif-4.1.0
+ >=media-libs/giflib-4.1.0-r3 ) )
+ png? ( >=media-libs/libpng-1.2.1 )
+ jpeg? ( >=media-libs/jpeg-6b-r2 )
+ tiff? ( >=media-libs/tiff-3.6.1-r2 )"
+RDEPEND="nls? ( >=sys-devel/gettext-0.10.39 )
+ gnustep? ( gnustep-base/gnustep-env )"
+
+SLOT="0"
+LICENSE="GPL-2"
+#KEYWORDS="~x86 ~ppc ~sparc ~amd64 ~mips ~alpha"
+# mips removed until bug missing dep bug is fixed (not in bugzilla :-\)
+KEYWORDS="~x86 ~ppc ~sparc ~amd64 ~alpha"
+
+if use gnustep; then
+ egnustep_install_domain "System"
+fi
+
+src_unpack() {
+ is-flag -fstack-protector && filter-flags -fstack-protector \
+ && ewarn "CFLAG -fstack-protector has been disabled, as it is known to cause bugs with WindowMaker (bug #78051)" && ebeep 2
+ unpack ${A}
+ cd ${S}
+ epatch ${FILESDIR}/menufocus.patch || die "menu focus patch failed"
+ epatch ${FILESDIR}/singleclick-shadeormaxopts-0.9x.patch || die "single click and shade-or-maximize-options patch failed"
+ epatch ${FILESDIR}/wlist-0.9x.patch || die "window list patch failed"
+ epatch ${FILESDIR}/64bit+endian-fixes-0.9x.patch || die "64-bit + endian fix patch failed"
+}
+
+src_compile() {
+ local myconf
+ local gs_user_postfix
+
+ # image format types
+ # xpm is provided by X itself
+ myconf="--enable-xpm $(use_enable png) $(use_enable jpeg) $(use_enable gif) $(use_enable tiff)"
+
+ # non required X capabilities
+ myconf="${myconf} $(use_enable modelock) $(use_enable vdesktop) $(use_enable xinerama)"
+
+ # integrate with GNUstep environment, or not
+ if use gnustep ; then
+ egnustep_env
+ myconf="${myconf} --with-appspath=$(egnustep_system_root)/Applications"
+ else
+ # no change from wm-0.80* ebuilds, as to not pollute things more
+ myconf="${myconf} --with-appspath=/usr/lib/GNUstep/Applications"
+ fi
+
+ use nls \
+ && export LINGUAS="`ls po/*.po | sed 's:po/\(.*\)\.po$:\1:'`" \
+ || myconf="${myconf} --disable-nls --disable-locale"
+
+ # default settings with $myconf appended
+ econf \
+ --sysconfdir=/etc/X11 \
+ --with-x \
+ --enable-usermenu \
+ --with-pixmapdir=/usr/share/pixmaps \
+ ${myconf} || die
+
+ # don't know if zh_TW is still non-functional, but leaving it out still
+ # for now
+ cd ${S}/po
+ cp Makefile Makefile.orig
+ sed 's:zh_TW.*::' \
+ Makefile.orig > Makefile
+
+ cd ${S}/WPrefs.app/po
+ cp Makefile Makefile.orig
+ sed 's:zh_TW.*::' \
+ Makefile.orig > Makefile
+
+ cd ${S}
+ for file in ${S}/WindowMaker/*menu*; do
+ if [ -r $file ]; then
+ if use gnustep ; then
+ sed -e "s/\/usr\/local\/GNUstep/`cat ${TMP}/sed.gs_prefix`System/g;
+ s/XXX_SED_FSLASH/\//g;" < $file > $file.tmp
+ else
+ sed -e 's/\/usr\/local\/GNUstep/\/usr\/lib\/GNUstep/g;' < $file > $file.tmp
+ fi
+ mv $file.tmp $file;
+
+ sed -e 's/\/usr\/local\/share\/WindowMaker/\/usr\/share\/WindowMaker/g;' < $file > $file.tmp;
+ mv $file.tmp $file;
+ fi;
+ done;
+
+ cd ${S}
+ emake -j1 || die "windowmaker: make has failed"
+
+ cd ${S}
+ for file in ${S}/WindowMaker/Defaults/W*; do
+ if [ -r $file ]; then
+ if use gnustep; then
+ sed -e "s/\$HOME\/GNUstep\//\$HOME`cat ${TMP}/sed.gs_user_root_suffix`/g;
+ s/XXX_SED_FSLASH/\//g;" < $file > $file.tmp
+ mv $file.tmp $file;
+
+ sed -e "s/~\/GNUstep\//~`cat ${TMP}/sed.gs_user_root_suffix`/g;
+ s/XXX_SED_FSLASH/\//g;" < $file > $file.tmp
+ mv $file.tmp $file;
+ fi
+ fi
+ done;
+
+ # WindowMaker Extra Package (themes and icons)
+ cd ../WindowMaker-extra-0.1
+ econf || die "windowmaker-extra: configure has failed"
+ emake || die "windowmaker-extra: make has failed"
+}
+
+src_install() {
+ emake install DESTDIR=${D} || die "windowmaker: install has failed."
+
+ dodoc AUTHORS BUGFORM BUGS ChangeLog COPYING* INSTALL* FAQ* \
+ MIRRORS README* NEWS TODO
+
+ # WindowMaker Extra
+ cd ../WindowMaker-extra-0.1
+ emake install DESTDIR=${D} || die "windowmaker-extra: install failed"
+
+ newdoc README README.extra
+
+ # create wmaker session shell script
+ echo "#!/bin/bash" > wmaker
+ echo "/usr/bin/wmaker" >> wmaker
+ exeinto /etc/X11/Sessions/
+ doexe wmaker
+
+ insinto /etc/X11/dm/Sessions
+ doins ${FILESDIR}/wmaker.desktop
+}
+
+pkg_postinst() {
+ einfo "If you are using 'startx' from the command line, and require"
+ einfo " .xinitrc, you may need to execute 'wmaker.inst', which will"
+ einfo " setup default configurations for you."
+ einfo ""
+
+ if use gnustep ; then
+ einfo "WPrefs.app is installed in you GNUstep System Applications directory."
+ einfo ""
+ ewarn "*** IMPORTANT ***"
+ ewarn "If you changed the GNUstep user root, via a use flag like 'layout-osx-like' in gnustep-make"
+ ewarn " you will have to repair the personal WindowMaker config files you have. For example,"
+ ewarn " if you changed the default user root as above, \$HOME/GNUstep to ~/, these commands"
+ ewarn " will help you:"
+ ewarn "cd ; cp -a ./GNUstep/.AppInfo . ; cp -a ./GNUstep/Defaults/W* ./Defaults/ ;"
+ ewarn " cp -a ./GNUstep/Library/Icons ./GNUstep/Library/WindowMaker ./Library/"
+ ewarn "The above commands are specifically to help repair your WindowMaker install;"
+ ewarn " a less elegant, but reasonable method is to simply run wmaker.inst again,"
+ ewarn " **after sourcing GNUstep.sh**, as this env script sets the GNUSTEP_USER_ROOT variable."
+ ewarn "Generally, other config files in your old ~/GNUstep directory, can simply be"
+ ewarn " moved to the new GNUSTEP_USER_ROOT."
+ ewarn "^^^ IMPORTANT ^^^"
+ ewarn ""
+ else
+ einfo "Even though you are not using the GNUstep environment, wmaker.inst will"
+ einfo " create a 'GNUstep' directory in your home -- it uses this directory"
+ einfo " to store your WindowMaker configuration files."
+ einfo "WPrefs.app can be launched at /usr/lib/GNUstep/Applications/WPrefs.app/WPrefs"
+ einfo " or by simply **clicking on it in the WindowMaker default dock.**"
+ einfo ""
+ fi
+
+ if use vdesktop ; then
+ ewarn "Note that enabling support for NETWM virtual desktops will make"
+ ewarn " menus that should be autoscrolling seem to not scroll, as they"
+ ewarn " are not off the screen, but rather in another virtual desktop."
+ ewarn ""
+ fi
+
+ ewarn "This package provides libwraster.so.3. Packages depending on"
+ ewarn " libwraster.so.2 will have to be rebuilt, i.e. 'revdep-rebuild'"
+
+ ebeep 4
+ epause 4
+}
+