diff options
author | Armando Di Cianno <fafhrd@gentoo.org> | 2005-03-17 22:55:09 +0000 |
---|---|---|
committer | Armando Di Cianno <fafhrd@gentoo.org> | 2005-03-17 22:55:09 +0000 |
commit | b481297dec18ff5e3d29bb6b8595f1ccacf687f8 (patch) | |
tree | 1cf3a0476f8224432a01518d5554dfd63505ef14 /x11-wm | |
parent | Remove old ebuild. (diff) | |
download | gentoo-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)
Diffstat (limited to 'x11-wm')
-rw-r--r-- | x11-wm/windowmaker/Manifest | 37 | ||||
-rw-r--r-- | x11-wm/windowmaker/files/64bit+endian-fixes-0.9x.patch | 166 | ||||
-rw-r--r-- | x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r1 | 2 | ||||
-rw-r--r-- | x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r2 | 2 | ||||
-rw-r--r-- | x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r3 | 2 | ||||
-rw-r--r-- | x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r4 | 2 | ||||
-rw-r--r-- | x11-wm/windowmaker/files/digest-windowmaker-0.91.0-r3 | 2 | ||||
-rw-r--r-- | x11-wm/windowmaker/files/singleclick-shadeormaxopts-0.9x.patch | 227 | ||||
-rw-r--r-- | x11-wm/windowmaker/files/wlist-0.9x.patch | 92 | ||||
-rw-r--r-- | x11-wm/windowmaker/windowmaker-0.91.0-r3.ebuild | 197 |
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 +} + |