diff options
author | Nick Hadaway <raker@gentoo.org> | 2003-07-11 02:37:21 +0000 |
---|---|---|
committer | Nick Hadaway <raker@gentoo.org> | 2003-07-11 02:37:21 +0000 |
commit | 50a523acadb5a602816dfce39ed5ffa350af9c40 (patch) | |
tree | dfc012f83b9c8832655d3fe8ce6ecef361bd0ad2 /x11-wm/windowmaker/files | |
parent | Marked 2.7.1 as x86 (diff) | |
download | gentoo-2-50a523acadb5a602816dfce39ed5ffa350af9c40.tar.gz gentoo-2-50a523acadb5a602816dfce39ed5ffa350af9c40.tar.bz2 gentoo-2-50a523acadb5a602816dfce39ed5ffa350af9c40.zip |
filter bad flags, add menu transparency and a keyboard scolling patch
Diffstat (limited to 'x11-wm/windowmaker/files')
-rw-r--r-- | x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r3 | 2 | ||||
-rw-r--r-- | x11-wm/windowmaker/files/trance.patch.WM-0.80.2.diff | 334 | ||||
-rw-r--r-- | x11-wm/windowmaker/files/wlist.patch | 90 |
3 files changed, 426 insertions, 0 deletions
diff --git a/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r3 b/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r3 new file mode 100644 index 000000000000..4ef83da7e63a --- /dev/null +++ b/x11-wm/windowmaker/files/digest-windowmaker-0.80.2-r3 @@ -0,0 +1,2 @@ +MD5 e4b71ee2b35a4e16b371ab9595e7335f WindowMaker-0.80.2.tar.gz 2532831 +MD5 07c7700daaaf232bc490f5abaabef085 WindowMaker-extra-0.1.tar.gz 238018 diff --git a/x11-wm/windowmaker/files/trance.patch.WM-0.80.2.diff b/x11-wm/windowmaker/files/trance.patch.WM-0.80.2.diff new file mode 100644 index 000000000000..c5ef62f76cee --- /dev/null +++ b/x11-wm/windowmaker/files/trance.patch.WM-0.80.2.diff @@ -0,0 +1,334 @@ +--- WindowMaker-0.80.2/WPrefs.app/Appearance.c Tue Jan 8 08:44:38 2002 ++++ WindowMaker-0.80.2-trance/WPrefs.app/Appearance.c Tue Feb 4 20:45:34 2003 +@@ -82,6 +82,11 @@ + WMFrame *taliF; + WMButton *taliB[3]; + ++ WMFrame *tranceF; ++ WMButton *tranceB; ++ WMSlider *tranceSl; ++ WMLabel *tranceL; ++ + /* root bg */ + WMFrame *bgF; + +@@ -1683,6 +1688,23 @@ + } + } + ++static void ++tranceCallback(WMWidget *self, void *data) ++{ ++ _Panel *panel = (_Panel*)data; ++ char buffer[5]; ++ int i; ++ ++ i = WMGetSliderValue(panel->tranceSl); ++ i = 10*(10-i); ++ ++ if (i == 0) { ++ WMSetLabelText(panel->tranceL, "OFF"); ++ } else { ++ sprintf(buffer, "%i%%", i); ++ WMSetLabelText(panel->tranceL, buffer); ++ } ++} + + static void + createPanel(Panel *p) +@@ -1974,7 +1996,7 @@ + + + panel->taliF = WMCreateFrame(panel->optF); +- WMResizeWidget(panel->taliF, 110, 80); ++ WMResizeWidget(panel->taliF, 105, 80); + WMMoveWidget(panel->taliF, 15, 100); + WMSetFrameTitle(panel->taliF, _("Title Alignment")); + +@@ -1992,7 +2014,7 @@ + WMSetButtonText(panel->taliB[i], _("Right")); + break; + } +- WMResizeWidget(panel->taliB[i], 90, 18); ++ WMResizeWidget(panel->taliB[i], 85, 18); + WMMoveWidget(panel->taliB[i], 10, 15 + 20*i); + } + WMGroupButtons(panel->taliB[0], panel->taliB[1]); +@@ -2000,6 +2022,38 @@ + + WMMapSubwidgets(panel->taliF); + ++ ++ ++ panel->tranceF = WMCreateFrame(panel->optF); ++ WMResizeWidget(panel->tranceF, 105,80); ++ WMMoveWidget(panel->tranceF, 125, 100); ++ WMSetFrameTitle(panel->tranceF,_("Transparency")); ++ ++ WMSetBalloonTextForView(_("<yermom> i love windowmaker\n" ++ "<tarzeau> get some fresh sand-wich-es\n" ++ "<flip-> heh\n" ++ "<flip-> transparency\n" ++ "<flip-> moo\n" ++ "<flip-> :P\n"), WMWidgetView(panel->tranceF)); ++ ++ panel->tranceB = WMCreateSwitchButton(panel->tranceF); ++ WMSetButtonText(panel->tranceB, _("Menu")); ++ WMResizeWidget(panel->tranceB,85,18); ++ WMMoveWidget(panel->tranceB, 10, 15); ++ ++ panel->tranceSl = WMCreateSlider(panel->tranceF); ++ WMResizeWidget(panel->tranceSl, 70, 18); ++ WMMoveWidget(panel->tranceSl, 17, 15 + 20*2); ++ WMSetSliderMinValue(panel->tranceSl, 0); ++ WMSetSliderMaxValue(panel->tranceSl, 10); ++ WMSetSliderAction(panel->tranceSl, tranceCallback, panel); ++ ++ panel->tranceL = WMCreateLabel(panel->tranceF); ++ WMResizeWidget(panel->tranceL, 27, 18); ++ WMMoveWidget(panel->tranceL, 40, 35); ++ ++ WMMapSubwidgets(panel->tranceF); ++ + WMMapSubwidgets(panel->optF); + + /**/ +@@ -2058,6 +2112,7 @@ + static void + showData(_Panel *panel) + { ++ int x; + int i; + char *str; + +@@ -2103,6 +2158,13 @@ + + WMSetButtonSelected(panel->mstyB[panel->menuStyle], True); + WMSetButtonSelected(panel->taliB[panel->titleAlignment], True); ++ ++ ++ WMSetButtonSelected(panel->tranceB, GetBoolForKey("MenuTrance")); ++ ++ x = GetIntegerForKey("TranceAmount"); ++ WMSetSliderValue(panel->tranceSl, x); ++ tranceCallback(NULL, panel); + } + + +@@ -2154,6 +2216,9 @@ + SetStringForKey("center", "TitleJustify"); + break; + } ++ ++ SetBoolForKey(WMGetButtonSelected(panel->tranceB), "MenuTrance"); ++ SetIntegerForKey(WMGetSliderValue(panel->tranceSl), "TranceAmount"); + } + + +--- WindowMaker-0.80.2/src/WindowMaker.h Thu Feb 21 06:28:48 2002 ++++ WindowMaker-0.80.2-trance/src/WindowMaker.h Tue Feb 4 19:13:20 2003 +@@ -337,6 +337,8 @@ + char opaque_move; /* update window position during */ + /* move */ + ++ char menu_trance; /* whether menu should be translucent */ ++ int trance_amount; /* percentage of translucency */ + char wrap_menus; /* wrap menus at edge of screen */ + char scrollable_menus; /* let them be scrolled */ + char align_menus; /* align menu with their parents */ +--- WindowMaker-0.80.2/src/defaults.c Tue Jan 8 08:45:07 2002 ++++ WindowMaker-0.80.2-trance/src/defaults.c Tue Feb 4 19:13:07 2003 +@@ -494,6 +494,12 @@ + {"UseSaveUnders", "NO", NULL, + &wPreferences.use_saveunders, getBool, NULL + }, ++ {"MenuTrance", "NO", NULL, ++ &wPreferences.menu_trance, getBool, NULL ++ }, ++ {"TranceAmount", "30", NULL, ++ &wPreferences.trance_amount, getInt, NULL ++ }, + {"OpaqueMove", "NO", NULL, + &wPreferences.opaque_move, getBool, NULL + }, +--- WindowMaker-0.80.2/src/menu.c Thu Feb 21 06:28:48 2002 ++++ WindowMaker-0.80.2-trance/src/menu.c Tue Feb 4 18:50:02 2003 +@@ -85,6 +85,7 @@ + static void menuCloseClick(WCoreWindow *sender, void *data, XEvent *event); + + static void updateTexture(WMenu *menu); ++static void clipDimensionsToScreen(WMenu *menu, int *x, int *y, int *width, int *height); + + #ifndef LITE + static int saveMenuRecurs(WMPropList *menus, WScreen *scr, WMenu *menu); +@@ -480,16 +481,129 @@ + menu->menu->width-1, i*menu->entry_height, + &light); + } +- } +- if (!RConvertImage(scr->rcontext, img, &pix)) { +- wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode)); +- } ++ } ++ if (!RConvertImage(scr->rcontext, img, &pix)) { ++ wwarning(_("error rendering image:%s"), RMessageForError(RErrorCode)); ++ } + RReleaseImage(img); + + return pix; + } + + ++ static void ++clipDimensionsToScreen(WMenu *menu, int *x, int *y, int *width, int *height) ++{ ++ int sw, sh; ++ int fx, fy; ++ ++ sw = menu->menu->screen_ptr->scr_width; ++ sh = menu->menu->screen_ptr->scr_height; ++ ++ fx = *x + *width; ++ fy = *y + *height; ++ ++ /* CLAMP everything */ ++ if (*x > sw) { *x = sw; } else if (*x < 0) { *x = 0; } ++ if (*y > sh) { *y = sh; } else if (*y < 0) { *y = 0; } ++ if (fx > sw) { fx = sw; } else if (fx < 0) { fx = 0; } ++ if (fy > sh) { fy = sh; } else if (fy < 0) { fy = 0; } ++ ++ /* Make sure that height and width are positive */ ++ if (fx < *x) { *width = 0; } else { *width = fx - *x; } ++ if (fy < *y) { *height = 0; } else { *height = fy - *y; } ++} ++ ++static Pixmap ++tranceMenu(WMenu *menu) ++{ ++ WScreen *scr = menu->menu->screen_ptr; ++ ++ XImage *back, *front; ++ RImage *trance, *menu_image, *msnormal; ++ Pixmap original, result; ++ ++ int mw, mh, dx, dy; /* these correspond to the menu proper */ ++ int gx, gy, gw, gh; /* these correspond to what we grab from the root window */ ++ int tamount; ++ unsigned long red_mask, green_mask, blue_mask; ++ ++ unsigned int w, h, bar; ++ int foo; ++ Window baz; ++ ++ mw = gw = menu->menu->width; ++ mh = gh = menu->menu->height; ++ dx = gx = menu->frame_x + 1; ++ dy = gy = menu->frame_y + menu->frame->top_width + 1; ++ ++ tamount = wPreferences.trance_amount; ++ clipDimensionsToScreen(menu, &gx, &gy, &gw, &gh); ++ back = XGetImage(dpy, scr->root_win, gx, gy, gw, gh, ++ AllPlanes, ZPixmap); ++ if (!back) { ++ wwarning(_("error capturing \"back\" image"),RMessageForError(RErrorCode)); ++ return None; ++ } else { ++ red_mask = back->red_mask; ++ green_mask = back->green_mask; ++ blue_mask = back->blue_mask; ++ ++ trance = RCreateImageFromXImage(scr->rcontext, back, NULL); ++ XDestroyImage(back); ++ if (!trance) { ++ wwarning(_("error rendering \"trance\" image"), ++ RMessageForError(RErrorCode)); ++ return None; ++ } else { ++ /************************************************************/ ++ original = renderTexture(menu); ++ ++ XGetGeometry(dpy, original, &baz, &foo, ++ &foo, &w, &h, &bar, &bar); ++ front = XGetImage(dpy, original, 0, 0, w, h, ++ AllPlanes, ZPixmap); ++ if (!front) { ++ wwarning(_("error capturing \"front\" image"), ++ RMessageForError(RErrorCode)); ++ return None; ++ } ++ front->red_mask = red_mask; ++ front->green_mask = green_mask; ++ front->blue_mask = blue_mask; ++ ++ menu_image=RCreateImageFromXImage(scr->rcontext,front,NULL); ++ ++ XDestroyImage(front); ++ /************************************************************/ ++ if (original) { ++ FREE_PIXMAP(original); ++ } ++ if (!menu_image) { ++ wwarning(_("error rendering \"menu_image\""), ++ RMessageForError(RErrorCode)); ++ return None; ++ } else { ++ if (wPreferences.menu_style == MS_NORMAL) { ++ msnormal = RMakeTiledImage(menu_image, mw, mh); ++ RCombineAreaWithOpaqueness(trance, msnormal,0,0,gw,gh, ++ gx - dx,gy - dy,256*tamount/10); ++ RReleaseImage(menu_image); ++ RReleaseImage(msnormal); ++ } else { ++ RCombineAreaWithOpaqueness(trance, menu_image,0,0,gw,gh, ++ gx - dx,gy - dy,256*tamount/10); ++ RReleaseImage(menu_image); ++ } ++ RConvertImage(scr->rcontext, trance, ++ &result); ++ } ++ RReleaseImage(trance); ++ } ++ } ++ return result; ++} ++ + static void + updateTexture(WMenu *menu) + { +@@ -500,7 +614,11 @@ + if (!menu->flags.brother) { + FREE_PIXMAP(menu->menu_texture_data); + +- menu->menu_texture_data = renderTexture(menu); ++ if (wPreferences.menu_trance) { ++ menu->menu_texture_data = tranceMenu(menu); ++ } else { ++ menu->menu_texture_data = renderTexture(menu); ++ } + + XSetWindowBackgroundPixmap(dpy, menu->menu->window, + menu->menu_texture_data); +@@ -1154,6 +1272,11 @@ + XMoveWindow(dpy, menu->frame->core->window, x, y); + menu->frame_x = x; + menu->frame_y = y; ++ /* FIXME: needs an if */ ++ if (wPreferences.menu_trance) { ++ updateTexture(menu); ++ } ++ /* */ + XMapWindow(dpy, menu->frame->core->window); + wRaiseFrame(menu->frame->core); + menu->flags.mapped = 1; +@@ -1178,6 +1301,11 @@ + menu->frame_y = menu->frame->screen_ptr->app_menu_y; + XMoveWindow(dpy, menu->frame->core->window, menu->frame_x, menu->frame_y); + } ++ /* FIXME: needs an if */ ++ if (wPreferences.menu_trance) { ++ updateTexture(menu); ++ } ++ /* */ + XMapWindow(dpy, menu->frame->core->window); + wRaiseFrame(menu->frame->core); + menu->flags.mapped = 1; diff --git a/x11-wm/windowmaker/files/wlist.patch b/x11-wm/windowmaker/files/wlist.patch new file mode 100644 index 000000000000..4e24e6f0d211 --- /dev/null +++ b/x11-wm/windowmaker/files/wlist.patch @@ -0,0 +1,90 @@ +--- wlist.c.orig Sat Apr 20 20:17:16 2002 ++++ wlist.c Sun Apr 21 14:12:06 2002 +@@ -4,6 +4,8 @@ + + #include "WINGsP.h" + ++#include <X11/keysym.h> ++ + char *WMListDidScrollNotification = "WMListDidScrollNotification"; + char *WMListSelectionDidChangeNotification = "WMListSelectionDidChangeNotification"; + +@@ -42,6 +44,7 @@ + unsigned int redrawPending:1; + unsigned int buttonPressed:1; + unsigned int buttonWasPressed:1; ++ unsigned int focused:1; + } flags; + } List; + +@@ -115,10 +118,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; +@@ -1011,6 +1014,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) { +@@ -1063,6 +1071,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; +@@ -1169,6 +1181,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); |