diff options
author | Bernard Cafarelli <voyageur@gentoo.org> | 2007-08-26 23:26:05 +0000 |
---|---|---|
committer | Bernard Cafarelli <voyageur@gentoo.org> | 2007-08-26 23:26:05 +0000 |
commit | 5858a416c72ef690ffb279aba2ab37e73a34c46b (patch) | |
tree | ba54bbfa09efe1005ac652d2bf6e84f866658256 /x11-wm | |
parent | ~ppc keywords reported by ndansmith (diff) | |
download | gnustep-5858a416c72ef690ffb279aba2ab37e73a34c46b.tar.gz gnustep-5858a416c72ef690ffb279aba2ab37e73a34c46b.tar.bz2 gnustep-5858a416c72ef690ffb279aba2ab37e73a34c46b.zip |
Cleanup of windowmaker, includes:
* themes path in some default menus (bug #187092)
* locale path fixed (bug #103698)
* WPrefs.app in GNUstep System domain (bug #170467)
* uses new GNUstep eclasses
* internal ebuild cleanups
svn path=/overlay/; revision=330
Diffstat (limited to 'x11-wm')
12 files changed, 947 insertions, 0 deletions
diff --git a/x11-wm/windowmaker/Manifest b/x11-wm/windowmaker/Manifest new file mode 100644 index 0000000..3724548 --- /dev/null +++ b/x11-wm/windowmaker/Manifest @@ -0,0 +1,13 @@ +AUX 0.91.0/64bit+endian-fixes-0.9x.patch 4831 RMD160 3faeee2ee8c812808bd88a95cdce395ca84843e9 SHA1 a599063bc73a7cb5bdadeba7c112fff1271746ce SHA256 f39eff1216a2207f72ebd95785759627e7cf8fc723bafce987633b85dec616c0 +AUX 0.91.0/maximize-fix-0.9x.patch 1245 RMD160 21b035369a382c189917fbc5090d05138cbd38d7 SHA1 80d5a99337c11123b8966ffd58ef7afc9cc072d5 SHA256 7883bb2ff68aee3411a3048b025541731c1dac710132dca30a511fa17f8588f1 +AUX 0.91.0/menufocus.patch 1554 RMD160 dc9e73943b3d36e0fa71d85c51e19555465224a8 SHA1 3b6bdf49c3c5ad4d0cf5efc5b4f46d9e4fc6e8cf SHA256 e334b8ac57fd5995e90047ef5cb0268a8dcfd64b008c957d1f05b823903bb484 +AUX 0.91.0/singleclick-shadeormaxopts-0.9x.patch2 7788 RMD160 c448c6ac9269650b89dfcc87bcf3bbbf9fb20fd8 SHA1 6c97d5467f749ce8e183355e5ff0fe7606f95b23 SHA256 4cdf6629afeaec576864f6738ffa62497e63a429d2db69ea5db01dbde3894f49 +AUX 0.91.0/wlist-0.9x.patch 2980 RMD160 903fb1977228f651868515ca9719343b6f03ed4b SHA1 d29e5dc6c2f9fee2bc1200496fac6136ded21f53 SHA256 5f9ba4d49371e517834f9c8e1718cab943a682c43c573b1e6b6541bbf96b8a5d +AUX 0.92.0/windowmaker-0.92.0-configure.patch 1003 RMD160 cd91114ae8d8a3e96ac04887ccdfcb128d7936b7 SHA1 66e9a3cacf1a5aed75ff8903a5536a1c8ace4639 SHA256 a71a4245be52013bb985b63508727fb19a379fbcbebfa89cdb00c02dbd796089 +AUX 0.92.0/windowmaker-0.92.0-fullscreen.patch 500 RMD160 9502957cd4affa92441911bacfd0fdf9b0c226ca SHA1 cfbc5f6cde4decd56987f1a604084fb19cbc33f0 SHA256 28dfdcac0c073bc08c06042ccc5ea97f6833c948238085321f80e3a4b3c0683c +AUX 0.92.0/windowmaker-0.92.0-gcc41.patch 5212 RMD160 087111b64a199ad56faa7fcc0e90c91540e35666 SHA1 6acf7ac5a0c25b6fc842c6f7e1e03f7a10de6860 SHA256 aef2a3b6e3e74fad11e0c3cc338446b40e90af3f3a1b0d15d97c5e5d79449858 +AUX 0.92.0/windowmaker-0.92.0-qtdialogsfix.patch 2071 RMD160 6b66f1f4c91196dae32876c5adb0eeb54733fbba SHA1 41051888180dd490cb0f65a7e02667ee7be723a2 SHA256 5f442989d9d0ba352a8c327e4ffaa39e72362eb1719d9b50e5bb90f63c9b096f +AUX wmaker.desktop 221 RMD160 501ba6451f7e756cc3d07682d728bcd6fe55366d SHA1 acd95a41645fbef358459f8f4753056cb321497e SHA256 40359d3c61117f0dbc5eb547e4c369982427e8bc3174c95002d34eb30f9a4a84 +DIST WindowMaker-0.92.0.tar.gz 2758524 RMD160 b8bebed6a34696625ae0ae7c0ebcfdfc0ba09cdd SHA1 6f545356acde7e9bf4c11345ac1359b451a9d1bc SHA256 9edaa8d9ee6e6beb06f4c391c0aec5cd0e5b5494456cae2cdcfd49656177afc6 +DIST WindowMaker-extra-0.1.tar.gz 238018 RMD160 94334c2c12d20a8fd0cd2a70e54cd3689f043038 SHA1 80f34cb3af705ec0f79d727b82cef28ee50fc4e7 SHA256 acd6e1fb790485b107daf2b710da372367b41383c55d9c8bdfdac521d850edc4 +EBUILD windowmaker-0.92.0-r4.ebuild 3600 RMD160 13df1a9ce625917a2ef8cb39d47d865bbea6043a SHA1 6a815c942e802b0edc7a67af968a08ca344ed71b SHA256 d58cc4d07a6ff8a212aa3c8526c8aef3ca7205080e983b6a07f3d252bd237784 diff --git a/x11-wm/windowmaker/files/0.91.0/64bit+endian-fixes-0.9x.patch b/x11-wm/windowmaker/files/0.91.0/64bit+endian-fixes-0.9x.patch new file mode 100644 index 0000000..c922fc9 --- /dev/null +++ b/x11-wm/windowmaker/files/0.91.0/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/0.91.0/maximize-fix-0.9x.patch b/x11-wm/windowmaker/files/0.91.0/maximize-fix-0.9x.patch new file mode 100644 index 0000000..553b05c --- /dev/null +++ b/x11-wm/windowmaker/files/0.91.0/maximize-fix-0.9x.patch @@ -0,0 +1,33 @@ +--- WindowMaker-0.91.0/src/actions.c_old 2005-06-12 15:37:16.000000000 +0200 ++++ WindowMaker-0.91.0/src/actions.c 2005-06-12 15:38:44.000000000 +0200 +@@ -474,7 +474,7 @@ + void + wUnmaximizeWindow(WWindow *wwin) + { +- int restore_x, restore_y; ++ int x, y, w, h; + + if (!wwin->flags.maximized) + return; +@@ -483,13 +483,17 @@ + wwin->flags.skip_next_animation = 1; + wUnshadeWindow(wwin); + } +- restore_x = (wwin->flags.maximized & MAX_HORIZONTAL) ? ++ x = ((wwin->flags.maximized & MAX_HORIZONTAL) && wwin->old_geometry.x) ? + wwin->old_geometry.x : wwin->frame_x; +- restore_y = (wwin->flags.maximized & MAX_VERTICAL) ? ++ y = ((wwin->flags.maximized & MAX_VERTICAL) && wwin->old_geometry.y) ? + wwin->old_geometry.y : wwin->frame_y; ++ w = wwin->old_geometry.width ? ++ wwin->old_geometry.width : wwin->client.width; ++ h = wwin->old_geometry.height ? ++ wwin->old_geometry.height : wwin->client.height; ++ + wwin->flags.maximized = 0; +- wWindowConfigure(wwin, restore_x, restore_y, +- wwin->old_geometry.width, wwin->old_geometry.height); ++ wWindowConfigure(wwin, x, y, w, h); + + WMPostNotificationName(WMNChangedState, wwin, "maximize"); + diff --git a/x11-wm/windowmaker/files/0.91.0/menufocus.patch b/x11-wm/windowmaker/files/0.91.0/menufocus.patch new file mode 100644 index 0000000..f913777 --- /dev/null +++ b/x11-wm/windowmaker/files/0.91.0/menufocus.patch @@ -0,0 +1,37 @@ +diff -Naur ./WindowMaker-0.91.0/src/switchmenu.c WindowMaker-0.91.0.mod2/src/switchmenu.c +--- ./WindowMaker-0.91.0/src/switchmenu.c 2004-10-18 19:41:54.000000000 -0700 ++++ WindowMaker-0.91.0.mod2/src/switchmenu.c 2004-11-22 03:56:48.540567984 -0800 +@@ -231,7 +231,11 @@ + char *t; + int idx; + +- if (wwin->flags.internal_window || WFLAGP(wwin, skip_window_list)) ++ if (wwin->flags.internal_window || WFLAGP(wwin, skip_window_list) ++ || ((wwin->wm_gnustep_attr ++ && wwin->wm_gnustep_attr->flags & GSWindowLevelAttr) ++ && (wwin->wm_gnustep_attr->window_level == WMMainMenuWindowLevel ++ || wwin->wm_gnustep_attr->window_level == WMSubmenuWindowLevel))) + return; + + if (wwin->frame->title) +diff -Naur ./WindowMaker-0.91.0/src/window.c WindowMaker-0.91.0.mod2/src/window.c +--- ./WindowMaker-0.91.0/src/window.c 2004-10-22 20:11:10.000000000 -0700 ++++ WindowMaker-0.91.0.mod2/src/window.c 2004-11-22 03:56:48.540567984 -0800 +@@ -340,17 +340,6 @@ + wwin->client_flags.no_appicon = 1; + } + +- /* temporary solution to avoid GS menus in our window list. +- * it's temporary because it's not the proper way: windows at the +- * floating level are also skipped from the window list with this. +- * Fix it -Dan */ +- if (gs_hints->flags & GSWindowLevelAttr) { +- if (gs_hints->window_level == WMMainMenuWindowLevel || +- gs_hints->window_level == WMSubmenuWindowLevel) { +- wwin->client_flags.skip_window_list = 1; +- } +- } +- + } + + diff --git a/x11-wm/windowmaker/files/0.91.0/singleclick-shadeormaxopts-0.9x.patch2 b/x11-wm/windowmaker/files/0.91.0/singleclick-shadeormaxopts-0.9x.patch2 new file mode 100644 index 0000000..dd37b92 --- /dev/null +++ b/x11-wm/windowmaker/files/0.91.0/singleclick-shadeormaxopts-0.9x.patch2 @@ -0,0 +1,222 @@ +--- WindowMaker-0.91.0/WPrefs.app/Expert.c 2005-05-21 17:04:42.000000000 -0700 ++++ /tmp/WindowMaker-0.91.0/WPrefs.app/Expert.c 2005-05-21 16:10:41.000000000 -0700 +@@ -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"); + } + + +--- WindowMaker-0.91.0/src/WindowMaker.h 2005-05-21 17:04:42.000000000 -0700 ++++ /tmp/WindowMaker-0.91.0/src/WindowMaker.h 2005-05-21 16:10:41.000000000 -0700 +@@ -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; + +--- WindowMaker-0.91.0/src/appicon.c 2005-05-21 17:04:42.000000000 -0700 ++++ /tmp/WindowMaker-0.91.0/src/appicon.c 2005-05-21 16:10:41.000000000 -0700 +@@ -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; + } +--- WindowMaker-0.91.0/src/defaults.c 2005-05-21 17:04:42.000000000 -0700 ++++ /tmp/WindowMaker-0.91.0/src/defaults.c 2005-05-21 16:10:41.000000000 -0700 +@@ -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 +--- WindowMaker-0.91.0/src/dock.c 2005-05-21 17:04:42.000000000 -0700 ++++ /tmp/WindowMaker-0.91.0/src/dock.c 2005-05-21 16:12:58.000000000 -0700 +@@ -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,13 @@ + 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 ++ handleDockMove(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) { +--- WindowMaker-0.91.0/src/icon.c 2005-05-21 17:04:42.000000000 -0700 ++++ /tmp/WindowMaker-0.91.0/src/icon.c 2005-05-21 16:10:41.000000000 -0700 +@@ -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; + + } +--- WindowMaker-0.91.0/src/window.c 2005-05-21 17:04:42.000000000 -0700 ++++ /tmp/WindowMaker-0.91.0/src/window.c 2005-05-21 16:10:41.000000000 -0700 +@@ -3089,13 +3089,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/0.91.0/wlist-0.9x.patch b/x11-wm/windowmaker/files/0.91.0/wlist-0.9x.patch new file mode 100644 index 0000000..c165cce --- /dev/null +++ b/x11-wm/windowmaker/files/0.91.0/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/files/0.92.0/windowmaker-0.92.0-configure.patch b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-configure.patch new file mode 100644 index 0000000..e3b50ac --- /dev/null +++ b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-configure.patch @@ -0,0 +1,23 @@ +--- configure.ac.orig 2007-08-27 00:51:31.000000000 +0200 ++++ configure.ac 2007-08-27 00:52:14.000000000 +0200 +@@ -197,7 +197,7 @@ + + AC_CACHE_CHECK(whether gcc supports x86 inline asm, + ac_cv_c_inline_asm, +- [AC_TRY_LINK(,[{int x; asm volatile("movl %%eax, %%ebx\n":: ++ [AC_TRY_LINK(,[{int x; asm volatile("movl %%eax, %%ebx\n\t pushal\n\t popal":: + "m" (x),"m" (x),"m" (x),"m" (x),"m" (x),"m" (x), + "m" (x),"m" (x),"m" (x),"m" (x),"m" (x),"m" (x));}], + ac_cv_c_inline_asm=yes, +@@ -840,11 +840,6 @@ + else + gnustepdir=$appspath + +- if test "x$GNUSTEP_LOCAL_ROOT" != "x" ; then +- gnustepdir=`echo "$GNUSTEP_LOCAL_ROOT" | sed -e "s|^${prefix}|prefix|"` +- gnustepdir=`echo $gnustepdir | sed -e 's|^prefix|${prefix}|'` +- fi +- + wprefs_base_dir=$gnustepdir/Applications + wprefs_datadir=$wprefs_base_dir/WPrefs.app + wprefs_bindir=$wprefs_base_dir/WPrefs.app diff --git a/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-fullscreen.patch b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-fullscreen.patch new file mode 100644 index 0000000..cbb4c0a --- /dev/null +++ b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-fullscreen.patch @@ -0,0 +1,15 @@ +Index: src/event.c +=================================================================== +--- src/event.c (revision 41) ++++ src/event.c (working copy) +@@ -559,6 +559,10 @@ + wwin->flags.skip_next_animation = 1; + wIconifyWindow(wwin); + } ++ if (wwin->flags.fullscreen) { ++ wwin->flags.fullscreen = 0; ++ wFullscreenWindow(wwin); ++ } + if (wwin->flags.hidden) { + WApplication *wapp = wApplicationOf(wwin->main_window); + diff --git a/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-gcc41.patch b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-gcc41.patch new file mode 100644 index 0000000..4312435 --- /dev/null +++ b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-gcc41.patch @@ -0,0 +1,131 @@ +--- NEW FILE windowmaker-gcc4-x86_64.patch --- +--- WindowMaker-0.92.0/wrlib/x86_specific.c 2004-10-31 02:44:01.000000000 +0100 ++++ WindowMaker-0.92.0/wrlib/x86_specific.c 2005-08-22 21:07:57.000000000 +0200 +@@ -98,15 +98,23 @@ + int height, + int line_offset) + { +- long long rrggbbaa; +- long long pixel; ++ union { ++ long long rrggbbaa; ++ struct {short int rr, gg, bb, aa;} words; ++ } rrggbbaa; ++ ++ union { ++ long long pixel; ++ struct {short int rr, gg, bb, aa;} words; ++ } pixel; ++ + short *tmp_err; + short *tmp_nerr; + int x; + + asm volatile + ( +- "pushal \n\t" ++ "pushl %%ebx \n\t" + + // pack dr, dg and db into mm6 + "movl %7, %%eax \n\t" +@@ -290,7 +298,7 @@ + + ".Enda: \n\t" // THE END + "emms \n\t" +- "popal \n\t" ++ "popl %%ebx \n\t" + : + : + "m" (image), // %0 +@@ -309,17 +317,18 @@ + "m" (width), // %13 + "m" (height), // %14 + "m" (line_offset), // %15 +- "m" (rrggbbaa), // %16 (access to rr) +- "m" ((*((short*)(&rrggbbaa)+1))), // %17 (access to gg) +- "m" ((*((short*)(&rrggbbaa)+2))), // %18 (access to bb) +- "m" ((*((short*)(&rrggbbaa)+3))), // %19 (access to aa) +- "m" (pixel), // %20 (access to pixel.r) +- "m" ((*((short*)(&pixel)+1))), // %21 (access to pixel.g) +- "m" ((*((short*)(&pixel)+2))), // %22 (access to pixel.b) +- "m" ((*((short*)(&pixel)+3))), // %23 (access to pixel.a) ++ "m" (rrggbbaa.rrggbbaa), // %16 (access to rr) ++ "m" (rrggbbaa.words.gg), // %17 (access to gg) ++ "m" (rrggbbaa.words.bb), // %18 (access to bb) ++ "m" (rrggbbaa.words.aa), // %19 (access to aa) ++ "m" (pixel.pixel), // %20 (access to pixel.r) ++ "m" (pixel.words.gg), // %21 (access to pixel.g) ++ "m" (pixel.words.bb), // %22 (access to pixel.b) ++ "m" (pixel.words.aa), // %23 (access to pixel.a) + "m" (tmp_err), // %24 + "m" (tmp_nerr), // %25 + "m" (x) // %26 ++ : "eax", "ecx", "edx", "esi", "edi" + ); + } + +@@ -342,8 +351,15 @@ + int height, + int line_offset) + { +- long long rrggbbaa; +- long long pixel; ++ union { ++ long long rrggbbaa; ++ struct {short int rr, gg, bb, aa;} words; ++ } rrggbbaa; ++ ++ union { ++ long long pixel; ++ struct {short int rr, gg, bb, aa;} words; ++ } pixel; + + short *tmp_err; + short *tmp_nerr; +@@ -354,7 +370,7 @@ + + asm volatile + ( +- "pushal \n\t" ++ "pushl %%ebx \n\t" + + "movl %13, %%eax \n\t" // eax = width + "movl %%eax, %%ebx \n\t" +@@ -424,7 +440,7 @@ + + ".Endc: \n\t" // THE END + "emms \n\t" +- "popal \n\t" ++ "popl %%ebx \n\t" + : + : + "m" (image), // %0 +@@ -443,19 +459,20 @@ + "m" (width), // %13 + "m" (height), // %14 + "m" (line_offset), // %15 +- "m" (rrggbbaa), // %16 (access to rr) +- "m" ((*((short*)(&rrggbbaa)+1))), // %17 (access to gg) +- "m" ((*((short*)(&rrggbbaa)+2))), // %18 (access to bb) +- "m" ((*((short*)(&rrggbbaa)+3))), // %19 (access to aa) +- "m" (pixel), // %20 (access to pixel.r) +- "m" ((*((short*)(&pixel)+1))), // %21 (access to pixel.g) +- "m" ((*((short*)(&pixel)+2))), // %22 (access to pixel.b) +- "m" ((*((short*)(&pixel)+3))), // %23 (access to pixel.a) ++ "m" (rrggbbaa.rrggbbaa), // %16 (access to rr) ++ "m" (rrggbbaa.words.gg), // %17 (access to gg) ++ "m" (rrggbbaa.words.bb), // %18 (access to bb) ++ "m" (rrggbbaa.words.aa), // %19 (access to aa) ++ "m" (pixel.pixel), // %20 (access to pixel.r) ++ "m" (pixel.words.gg), // %21 (access to pixel.g) ++ "m" (pixel.words.bb), // %22 (access to pixel.b) ++ "m" (pixel.words.aa), // %23 (access to pixel.a) + "m" (tmp_err), // %24 + "m" (tmp_nerr), // %25 + "m" (x), // %26 + "m" (w1), // %27 + "m" (w2) // %28 ++ : "eax", "ecx", "edx", "esi", "edi" + ); + } + diff --git a/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-qtdialogsfix.patch b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-qtdialogsfix.patch new file mode 100644 index 0000000..626630e --- /dev/null +++ b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-qtdialogsfix.patch @@ -0,0 +1,84 @@ +--- src/wmspec.c.sav 2004-10-24 21:36:15.000000000 +0200 ++++ src/wmspec.c 2005-01-26 17:13:54.266216856 +0100 +@@ -314,15 +314,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 +362,7 @@ + 0, 1, &count); + if (prop) + { +- int desktop= *(CARD32*)prop; ++ int desktop= *(long*)prop; + XFree(prop); + return desktop; + } +@@ -426,7 +426,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 +599,7 @@ + void + wNETWMUpdateWorkarea(WScreen *scr, WArea usableArea) + { +- CARD32 *area; ++ long *area; + int count, i; + + /* XXX: not Xinerama compatible, +@@ -609,7 +609,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 +732,7 @@ + static void + updateWorkspaceCount(WScreen *scr) /* changeable */ + { +- CARD32 count; ++ long count; + + count = scr->workspace_count; + +@@ -744,7 +744,7 @@ + static void + updateCurrentWorkspace(WScreen *scr) /* changeable */ + { +- CARD32 count; ++ long count; + + count = scr->current_workspace; + +@@ -791,7 +791,7 @@ + static void + updateWorkspaceHint(WWindow *wwin, Bool fake, Bool del) + { +- CARD32 l; ++ long l; + + if (del) { + XDeleteProperty(dpy, wwin->client_win, net_wm_desktop); diff --git a/x11-wm/windowmaker/files/wmaker.desktop b/x11-wm/windowmaker/files/wmaker.desktop new file mode 100644 index 0000000..1bda476 --- /dev/null +++ b/x11-wm/windowmaker/files/wmaker.desktop @@ -0,0 +1,8 @@ +[Desktop Entry] +Encoding=UTF-8 +# The names/descriptions should really be better +Name=GNUStep WindowMaker +Comment=Use this session to run WindowMaker as your desktop environment +Exec=/usr/bin/wmaker +Icon= +Type=Application diff --git a/x11-wm/windowmaker/windowmaker-0.92.0-r4.ebuild b/x11-wm/windowmaker/windowmaker-0.92.0-r4.ebuild new file mode 100644 index 0000000..24d4a38 --- /dev/null +++ b/x11-wm/windowmaker/windowmaker-0.92.0-r4.ebuild @@ -0,0 +1,123 @@ +# Copyright 1999-2007 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: $ + +inherit autotools eutils gnustep-base flag-o-matic + +S=${WORKDIR}/${P/windowm/WindowM} + +DESCRIPTION="The fast and light GNUstep window manager" +SRC_URI="ftp://ftp.windowmaker.info/pub/source/release/${P/windowm/WindowM}.tar.gz + http://www.windowmaker.info/pub/source/release/WindowMaker-extra-0.1.tar.gz" +HOMEPAGE="http://www.windowmaker.info/" + +IUSE="gif gnustep jpeg nls png tiff modelock xinerama" +DEPEND="x11-libs/libXv + x11-libs/libXft + x11-libs/libXt + media-libs/fontconfig + gif? ( >=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 ) + gnustep? ( gnustep-base/gnustep-make )" +RDEPEND="${DEPEND} + nls? ( >=sys-devel/gettext-0.10.39 )" + +SLOT="0" +LICENSE="GPL-2" +KEYWORDS="~alpha ~amd64 ~hppa ~mips ~ppc ~ppc64 ~sparc ~x86 ~x86-fbsd" + +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 + replace-flags "-Os" "-O2" + replace-flags "-O3" "-O2" + + unpack ${A} + cd "${S}" + epatch ${FILESDIR}/${PV/0.92/0.91}/singleclick-shadeormaxopts-0.9x.patch2 + epatch ${FILESDIR}/${PV/0.92/0.91}/wlist-0.9x.patch + epatch ${FILESDIR}/${PV}/${P}-configure.patch + epatch ${FILESDIR}/${PV}/${P}-gcc41.patch + epatch ${FILESDIR}/${PV}/${P}-fullscreen.patch + epatch ${FILESDIR}/${PV}/${P}-qtdialogsfix.patch + + # Fix some paths + for file in ${S}/WindowMaker/*menu*; do + if [ -r $file ]; then + if use gnustep ; then + egnustep_env + sed -i "s:/usr/local/GNUstep/Applications:${GNUSTEP_SYSTEM_APPS}:g" $file + else + sed -i "s:/usr/local/GNUstep/Applications/WPrefs.app:/usr/bin/:g;" $file + fi + + sed -i 's:/usr/local/share/WindowMaker:/usr/share/WindowMaker:g;' $file + sed -i 's:/opt/share/WindowMaker:/usr/share/WindowMaker:g;' $file + fi; + done; + + eautoreconf || die "eautoreconf failed" +} + +src_compile() { + local myconf + + # 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 xinerama)" + + if use gnustep ; then + egnustep_env + myconf="${myconf} --with-gnustepdir=${GNUSTEP_SYSTEM_ROOT}" + fi + + if use nls; then + [ -z "$LINGUAS" ] && export LINGUAS="`ls po/*.po | sed 's:po/\(.*\)\.po$:\1:'`" + else + myconf="${myconf} --disable-locale" + fi + + # default settings with $myconf appended + econf \ + --sysconfdir=/etc/X11 \ + --with-x \ + --enable-usermenu \ + --with-pixmapdir=/usr/share/pixmaps \ + --with-nlsdir=/usr/share/locale \ + ${myconf} || die + + emake || die "windowmaker: make has failed" + + # 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 DESTDIR="${D}" install || 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 DESTDIR="${D}" install || 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 + make_desktop_entry /usr/bin/wmaker +} |