diff --git a/dev-libs/stfl/Manifest b/dev-libs/stfl/Manifest index 279f4f1..c592511 100644 --- a/dev-libs/stfl/Manifest +++ b/dev-libs/stfl/Manifest @@ -1,3 +1,3 @@ AUX stfl-0.21-multilib.patch 1936 RMD160 fce9de74ac0cab5abe0e9b2d53c82cad602a5be1 SHA1 1ae240823806120b94c5cda5ba96b57e289bd730 SHA256 905260dbd13b4ce374d95ced9ea5d443fc44de0f14c0f1140fc8c7cead6c1f06 DIST stfl-0.21.tar.gz 41093 RMD160 d8b56cc97b4d76adba8034ce9bbae631e6e9d17e SHA1 0313eafa1fe4dcfea1f2edd34d453baaa46df277 SHA256 bf0ead0a66b635602222bc9089414b99f99081b956c92baf77699d283bcc88eb -EBUILD stfl-0.21.ebuild 1683 RMD160 e628dc7b4e910438e695679368a13bec7d4d2035 SHA1 e62cbfdb730f0d544474791983fbd485affe2640 SHA256 1d7047e76ae71b740285b6b22f8570860bf6634bf750f531cd874cbfb3869219 +EBUILD stfl-0.21.ebuild 1684 RMD160 c0f4d0a2b5e0172d23675a14378689eaae5b5261 SHA1 60faa40fffbf88eaa69269dfca0d564297140035 SHA256 f75cd451bdc4757d153838a8bfc1e9d45486af60adb099863b55fb6ede2048f8 diff --git a/dev-libs/stfl/stfl-0.21.ebuild b/dev-libs/stfl/stfl-0.21.ebuild index 3a514b3..fa0dbc0 100644 --- a/dev-libs/stfl/stfl-0.21.ebuild +++ b/dev-libs/stfl/stfl-0.21.ebuild @@ -11,7 +11,7 @@ SRC_URI="http://www.clifford.at/${PN}/${P}.tar.gz" LICENSE="LGPL-3" SLOT="0" -KEYWORDS="~amd64 ~ppc x86" +KEYWORDS="~amd64 ~ppc ~x86" IUSE="examples perl python ruby" diff --git a/x11-wm/windowmaker/Manifest b/x11-wm/windowmaker/Manifest new file mode 100644 index 0000000..cbbabf1 --- /dev/null +++ b/x11-wm/windowmaker/Manifest @@ -0,0 +1,14 @@ +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-gif-before-ungif.patch 877 RMD160 837849d3c2701a8848972e5a7d366b2815677b71 SHA1 d984a2547fe2a7d70a72c66ffaa2b0631df7ae44 SHA256 3b0608d45484f1d47b780baa68cede5bbbff2f28da65019aff0b0386cf0125b4 +AUX 0.92.0/windowmaker-0.92.0-math_h.patch 584 RMD160 0cc28eed098937a7adf70a49c8d5784c4385570b SHA1 0abcd4b4cf2f5e87cede994196ee1098466855de SHA256 b84fd57c6c1f9ca2b61354487bb09b55d1c9155dfde7b37d49fc115d1d44a28c +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 +AUX wmaker_modelock_fix.patch 2257 RMD160 d87dc26c2209cc13449695608d65f8eb2369d65d SHA1 0e3c8dadec3ae4416f211a83c310057584b851a9 SHA256 28aa382cd266cd7cb4002c3bc07566c809f2a4106fe9a8580be846c6b562d3bc +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 +DIST windowmaker-0.92.0-patchset-3.tar.bz2 220812 RMD160 d73cd0c6064576817929855aac481228296eb7b1 SHA1 dd62a750f0c610e1bb4a95f5d2251f3181e89a82 SHA256 8d50cb8c7ac9370b6870e9d220968485d8bafddb896aab04b88a93cae306c5a9 +EBUILD windowmaker-0.92.0-r899.ebuild 6846 RMD160 1520543d2cae72cba010fca5cca681e662d2dbbd SHA1 2a69a1838fbf0563b75d53034f144e93d0026672 SHA256 c05527e22cdf1aa71bd80732a73750f9c8a1034d102aa9b18ab1ed181bbf99e3 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 ++ + 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-gif-before-ungif.patch b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-gif-before-ungif.patch new file mode 100644 index 0000000..7efc229 --- /dev/null +++ b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-gif-before-ungif.patch @@ -0,0 +1,26 @@ +--- configure.ac ++++ configure.ac +@@ -705,17 +705,17 @@ + + if test "$gif" = yes; then + my_libname="" +- WM_CHECK_LIB(ungif, DGifOpenFileName, [$XLFLAGS $XLIBS]) +- if test "x$ac_cv_lib_ungif_DGifOpenFileName" = xyes; then +- my_libname=-lungif ++ WM_CHECK_LIB(gif, DGifOpenFileName, [$XLFLAGS $XLIBS]) ++ if test "x$ac_cv_lib_gif_DGifOpenFileName" = xyes; then ++ my_libname=-lgif + fi + dnl + dnl libungif is the same thing as libgif for all practical purposes. + dnl + if test "x$my_libname" = x; then +- WM_CHECK_LIB(gif, DGifOpenFileName, [$XLFLAGS $XLIBS]) +- if test "x$ac_cv_lib_gif_DGifOpenFileName" = xyes; then +- my_libname=-lgif ++ WM_CHECK_LIB(ungif, DGifOpenFileName, [$XLFLAGS $XLIBS]) ++ if test "x$ac_cv_lib_ungif_DGifOpenFileName" = xyes; then ++ my_libname=-lungif + fi + fi + diff --git a/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-math_h.patch b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-math_h.patch new file mode 100644 index 0000000..8c83d4d --- /dev/null +++ b/x11-wm/windowmaker/files/0.92.0/windowmaker-0.92.0-math_h.patch @@ -0,0 +1,25 @@ + + Add a missing #include . + +--- WindowMaker-0.92.0/configure.ac ++++ WindowMaker-0.92.0/configure.ac +@@ -78,7 +78,8 @@ + [ --with-incs-from pass compiler flags to look for header files], + [inc_search_path="$withval $inc_search_path"]) + +- ++AC_CHECK_LIBM ++AC_SUBST([LIBM]) + + dnl Checks for library functions. + dnl ============================ +--- WindowMaker-0.92.0/src/placement.c ++++ WindowMaker-0.92.0/src/placement.c +@@ -27,6 +27,7 @@ + #include + #include + #include ++#include + + #include "WindowMaker.h" + #include "wcore.h" 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; iworkspace_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/files/wmaker_modelock_fix.patch b/x11-wm/windowmaker/files/wmaker_modelock_fix.patch new file mode 100644 index 0000000..250c610 --- /dev/null +++ b/x11-wm/windowmaker/files/wmaker_modelock_fix.patch @@ -0,0 +1,68 @@ +diff -ur WindowMaker-0.92.0_orig/src/window.c WindowMaker-0.92.0/src/window.c +--- WindowMaker-0.92.0_orig/src/window.c 2005-07-01 02:56:11.000000000 +0200 ++++ WindowMaker-0.92.0/src/window.c 2010-07-17 12:07:44.000000000 +0200 +@@ -1301,7 +1301,9 @@ + if (WFLAGP(wwin, no_miniaturize_button)) + foo |= WFF_LEFT_BUTTON; + #ifdef XKB_BUTTON_HINT +- if (WFLAGP(wwin, no_language_button) || WFLAGP(wwin, no_focusable)) ++ if (wPreferences.modelock ++ && (WFLAGP(wwin, no_language_button) ++ || WFLAGP(wwin, no_focusable))) + foo |= WFF_LANGUAGE_BUTTON; + #endif + if (foo!=0) +@@ -1613,7 +1615,8 @@ + foo = WFF_RIGHT_BUTTON|WFF_BORDER; + foo |= WFF_TITLEBAR; + #ifdef XKB_BUTTON_HINT +- foo |= WFF_LANGUAGE_BUTTON; ++ if (wPreferences.modelock) ++ foo |= WFF_LANGUAGE_BUTTON; + #endif + + wwin->frame = wFrameWindowCreate(scr, WMFloatingLevel, +@@ -2435,7 +2438,8 @@ + } + + #ifdef XKB_BUTTON_HINT +- if (!WFLAGP(wwin, no_language_button)) { ++ if (wPreferences.modelock ++ && !WFLAGP(wwin, no_language_button)) { + if (fwin->languagebutton_image && + !fwin->languagebutton_image->shared) { + wPixmapDestroy(fwin->languagebutton_image); +@@ -2518,7 +2522,8 @@ + flags = WFF_LEFT_BUTTON|WFF_RIGHT_BUTTON; + + #ifdef XKB_BUTTON_HINT +- flags |= WFF_LANGUAGE_BUTTON; ++ if (wPreferences.modelock) ++ flags |= WFF_LANGUAGE_BUTTON; + #endif + + if (HAS_TITLEBAR(wwin)) +@@ -2546,10 +2551,10 @@ + flags |= WFF_LEFT_BUTTON; + + #ifdef XKB_BUTTON_HINT +- if (!WFLAGP(wwin, no_language_button) +- && wwin->frame->flags.hide_language_button) { ++ if (wPreferences.modelock ++ && !WFLAGP(wwin, no_language_button) ++ && wwin->frame->flags.hide_language_button) + flags |= WFF_LANGUAGE_BUTTON; +- } + #endif + + if (!WFLAGP(wwin, no_close_button) +@@ -2567,7 +2572,8 @@ + flags |= WFF_LEFT_BUTTON; + + #ifdef XKB_BUTTON_HINT +- if (WFLAGP(wwin, no_language_button) ++ if (wPreferences.modelock ++ && WFLAGP(wwin, no_language_button) + && !wwin->frame->flags.hide_language_button) + flags |= WFF_LANGUAGE_BUTTON; + #endif diff --git a/x11-wm/windowmaker/windowmaker-0.92.0-r899.ebuild b/x11-wm/windowmaker/windowmaker-0.92.0-r899.ebuild new file mode 100644 index 0000000..5851f0b --- /dev/null +++ b/x11-wm/windowmaker/windowmaker-0.92.0-r899.ebuild @@ -0,0 +1,196 @@ +# Copyright 1999-2010 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/x11-wm/windowmaker/windowmaker-0.92.0-r8.ebuild,v 1.11 2010/07/14 01:05:24 jer Exp $ + +EAPI=1 + +inherit autotools eutils gnustep-base flag-o-matic + +PATCHVER=3 +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 + mirror://gentoo/${P}-patchset-${PATCHVER}.tar.bz2" +HOMEPAGE="http://www.windowmaker.info/" + +IUSE="gif gnustep jpeg nls png tiff modelock +vdesktop xinerama" +DEPEND="x11-libs/libXv + >=x11-libs/libXft-2.1.0 + 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:0 ) + tiff? ( >=media-libs/tiff-3.6.1-r2 ) + gnustep? ( >=gnustep-base/gnustep-make-2.0 ) + xinerama? ( x11-libs/libXinerama )" +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 ~x86-interix ~amd64-linux ~x86-linux ~ppc-macos ~x86-macos ~sparc-solaris ~x64-solaris ~x86-solaris" + +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} + epatch "${FILESDIR}"/wmaker_modelock_fix.patch + cd "${S}" + local psd="${WORKDIR}"/${P}-patchset-${PATCHVER} + + epatch "${psd}"/WindowMaker-0.92.0-cvs20060123.patch + epatch "${psd}"/WindowMaker-0.92.0-cvs-gcc41.patch + epatch "${psd}"/wlist-0.9x.patch + epatch "${psd}"/${P}-gif-before-ungif.patch + epatch "${psd}"/${P}-math_h.patch + epatch "${psd}"/${P}-gettext.patch + epatch "${psd}"/${P}-libpng14.patch + + # Patches from upstream HG + epatch "${psd}"/${P}-composite-non-24bit-depth.patch + epatch "${psd}"/${P}-mouse-window-focus.patch + epatch "${psd}"/${P}-maximise-borderless-too-small.patch + epatch "${psd}"/${P}-xinerama-switchpanel-corruption.patch + epatch "${psd}"/${P}-dialog-history.patch + epatch "${psd}"/${P}-single-click-dockapp-start.patch + epatch "${psd}"/${P}-no-pop-empty-array.patch + epatch "${psd}"/${P}-empty-command-fatal-error.patch + epatch "${psd}"/${P}-findfile-overflow.patch + epatch "${psd}"/${P}-pointer-integer-warn-fix.patch + epatch "${psd}"/${P}-workspace-change-crash.patch + epatch "${psd}"/${P}-app-icon-fix.patch + epatch "${psd}"/${P}-xchangeproperty-64bits-fix.patch + + # Patches from altlinux + epatch "${psd}"/WindowMaker-0.91.0-alt-session.patch + epatch "${psd}"/WindowMaker-0.91.0-alt-restartscrpt.patch + epatch "${psd}"/WindowMaker-0.91.0-alt-menutrans.patch + epatch "${psd}"/WindowMaker-0.91.0-alt-titlebar.patch + epatch "${psd}"/${P}-no-clip-title.patch + epatch "${psd}"/WindowMaker-0.91.0-alt-mmx.patch + epatch "${psd}"/WindowMaker-0.91.0-alt-focus.patch + + # New features (cool!) + epatch "${psd}"/${P}-doubleclick-maximise.patch + epatch "${psd}"/WindowMaker-0.91.0-alt-dockhotkeys.patch + epatch "${psd}"/WindowMaker-0.91.0-alt-vlaad-trance.patch + epatch "${psd}"/WindowMaker-0.91.0-alt-vlaad-newbuttons.patch + epatch "${psd}"/WindowMaker-0.91.0-hmepas-minimizeall.patch + epatch "${psd}"/WindowMaker-0.91.0-hmepas-swmenu_rclick.patch + epatch "${psd}"/WindowMaker-0.91.0-sga-moving-add.patch + epatch "${psd}"/WindowMaker-0.91.0-peter-newappicon.patch + epatch "${psd}"/WindowMaker-0.91.0-peter-mouse-placement.patch + epatch "${psd}"/WindowMaker-0.91.0-peter-appicon-bouncer2.patch + epatch "${psd}"/WindowMaker-0.91.0-sga-swpanel-customization.patch + epatch "${psd}"/WindowMaker-0.92.0-alt-newpo.patch + + [[ ${CHOST} == *-interix* ]] && epatch "${psd}"/${P}-interix3.patch + epatch "${psd}"/${P}-darwin-setlocale.patch + epatch "${psd}"/${P}-nls.patch + #use nls && sed -i -e 's/#NLSENABLE //' configure.ac + #touch ABOUT-NLS config.rpath + + # Add UK localisation + cp "${psd}"/WindowMaker-uk.po po/uk.po + cp "${psd}"/WPrefs-uk.po WPrefs.app/po/uk.po + + # Add newbuttons resources + cp "${psd}"/WindowMaker-newbuttons.nextstyle.tiff \ + WPrefs.app/tiff/nextstyle.tiff + cp "${psd}"/WindowMaker-newbuttons.oldstyle.tiff \ + WPrefs.app/tiff/oldstyle.tiff + cp "${psd}"/WindowMaker-newbuttons.nextstyle.xpm \ + WPrefs.app/xpm/nextstyle.xpm + + # Fix some paths + if use gnustep; then + egnustep_env + fi + for file in "${S}"/WindowMaker/*menu*; do + if [ -r "$file" ]; then + if use gnustep ; then + sed -i "s:/usr/local/GNUstep/Applications:${GNUSTEP_SYSTEM_APPS}:g" "$file" + else + sed -i "s:/usr/local/GNUstep/Applications/WPrefs.app:${EPREFIX}/usr/bin/:g;" "$file" + fi + + sed -i 's:/usr/local/share/WindowMaker:${EPREFIX}/usr/share/WindowMaker:g;' "$file" + sed -i 's:/opt/share/WindowMaker:${EPREFIX}/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 + # Gentoo installs everything in System, make sure configure honors that + export GNUSTEP_LOCAL_ROOT=${GNUSTEP_SYSTEM_ROOT} + 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 + + # enable new features, need to be done via defines + append-flags -DBOUNCE_APP -DNEWAPPICON + use vdesktop && append-flags -DVIRTUAL_DESKTOP + + # default settings with $myconf appended + econf \ + --sysconfdir="${EPREFIX}"/etc/X11 \ + --with-x \ + --enable-usermenu \ + --with-pixmapdir="${EPREFIX}"/usr/share/pixmaps \ + --with-nlsdir="${EPREFIX}"/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 "#!/usr/bin/env bash" > wmaker + echo "${EPREFIX}/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 +}