From d63a0b4859b292d82b895ee6ff8f882f3e996f36 Mon Sep 17 00:00:00 2001 From: kojima Date: Wed, 27 Oct 2004 02:54:32 +0000 Subject: [PATCH] added option to disable switchpanel fixed some bugs --- ChangeLog | 1 + NEWS | 9 +++++++++ WindowMaker/Defaults/WindowMaker.in | 1 - configure.ac | 4 ++-- src/cycling.c | 19 ++++++++----------- src/defaults.c | 23 +++++++++++------------ src/switchpanel.c | 19 +++++++++++++------ util/wm-oldmenu2new | 7 +++++-- util/wmsetbg.c | 1 + 9 files changed, 50 insertions(+), 34 deletions(-) diff --git a/ChangeLog b/ChangeLog index c73eba2b..1bd05779 100644 --- a/ChangeLog +++ b/ChangeLog @@ -2,6 +2,7 @@ Changes since version 0.91.0: ............................. - fixed crash with info panel and alt-tabbing - updated Japanese translations (Takeo Hashimoto ) +- allow disable of switch panel when SwitchPanelImages=None Changes since version 0.90.0: ............................. diff --git a/NEWS b/NEWS index b41dd20c..09457336 100644 --- a/NEWS +++ b/NEWS @@ -2,6 +2,15 @@ NEWS for veteran Window Maker users ----------------------------------- +--- 0.91.1 + +To disable the panel shown during Alt-tabbing, you may put the following in +~/GNUstep/Defaults/WindowMaker + +SwitchPanelImages= None; + + + --- 0.91.0 Alt-Tab Window Switching diff --git a/WindowMaker/Defaults/WindowMaker.in b/WindowMaker/Defaults/WindowMaker.in index a11f8da3..5b63257f 100644 --- a/WindowMaker/Defaults/WindowMaker.in +++ b/WindowMaker/Defaults/WindowMaker.in @@ -1,6 +1,5 @@ { SmoothWorkspaceBack = NO; - WindozeCycling = YES; PopupSwitchMenu = NO; MenuStyle = normal; DisableMiniwindows = NO; diff --git a/configure.ac b/configure.ac index 7907c3ba..d767e1aa 100644 --- a/configure.ac +++ b/configure.ac @@ -299,8 +299,8 @@ dnl ================== dnl List of supported locales dnl ------------------------- -supported_locales="be bg bs ca cs da de el es et fi fr gl hr hu it ja ko ms nl no pl pt ro ru sk sv tr zh_CN zh_TW.Big5" -supported_wprefs_locales="bg ca cs de es et fi fr hr hu it ja ko pt ru sk zh_CN zh_TW.Big5" +supported_locales="be bg bs ca cs da de el es et fi fr gl hr hu it ja ko ms nl no pl pt ro ru sk sv tr zh_CN zh_TW" +supported_wprefs_locales="bg ca cs de es et fi fr hr hu it ja ko pt ru sk zh_CN zh_TW" supported_wings_locales="bg ca cs de fr sk" for lang in $LINGUAS; do diff --git a/src/cycling.c b/src/cycling.c index 2669be78..ee4218e9 100644 --- a/src/cycling.c +++ b/src/cycling.c @@ -50,12 +50,15 @@ static void raiseWindow(WSwitchPanel *swpanel, WWindow *wwin) Window swwin= wSwitchPanelGetWindow(swpanel); if (wwin->flags.mapped) { - Window win[2]; + if (swwin!=None) { + Window win[2]; - win[0]= swwin; - win[1]= wwin->frame->core->window; + win[0]= swwin; + win[1]= wwin->frame->core->window; - XRestackWindows(dpy, win, 2); + XRestackWindows(dpy, win, 2); + } else + XRaiseWindow(dpy, wwin->frame->core->window); } } @@ -128,8 +131,7 @@ StartWindozeCycle(WWindow *wwin, XEvent *event, Bool next) int i; WMMaskEvent(dpy, KeyPressMask|KeyReleaseMask|ExposureMask - |PointerMotionMask|ButtonReleaseMask - |LeaveWindowMask, &ev); + |PointerMotionMask|ButtonReleaseMask, &ev); /* ignore CapsLock */ modifiers = ev.xkey.state & ValidModMask; @@ -253,11 +255,6 @@ StartWindozeCycle(WWindow *wwin, XEvent *event, Bool next) wSetFocusTo(scr, newFocused); } - if (!getenv("SWPDEBUG")) - { - if (swpanel) - wSwitchPanelDestroy(swpanel); - } scr->flags.doing_alt_tab = 0; if (somethingElse) diff --git a/src/defaults.c b/src/defaults.c index 4216a51d..b6f9879b 100644 --- a/src/defaults.c +++ b/src/defaults.c @@ -129,7 +129,7 @@ static int getModMask(); #ifdef NEWSTUFF static int getRImage(); #endif -static int getPLArray(); +static int getPropList(); /* value setting functions */ static int setJustify(); @@ -407,9 +407,6 @@ WDefaultEntry optionList[] = { {"RaiseDelay", "0", NULL, &wPreferences.raise_delay, getInt, NULL }, - {"WindozeCycling", "NO", NULL, - &wPreferences.windows_cycling,getBool, NULL - }, {"CirculateRaise", "NO", NULL, &wPreferences.circ_raise, getBool, NULL }, @@ -663,7 +660,7 @@ WDefaultEntry optionList[] = { NULL, getColor, setIconTitleBack }, {"SwitchPanelImages", "(\"swtile.png\")", &wPreferences, - NULL, getPLArray, setSwPOptions + NULL, getPropList, setSwPOptions }, /* keybindings */ #ifndef LITE @@ -1708,15 +1705,9 @@ again: static int -getPLArray(WScreen *scr, WDefaultEntry *entry, WMPropList *value, void *addr, +getPropList(WScreen *scr, WDefaultEntry *entry, WMPropList *value, void *addr, void **ret) { - if (!WMIsPLArray(value)) { - wwarning(_("Wrong value for key \"%s\". Should be an array."), - entry->key); - return False; - } - WMRetainPropList(value); *ret= value; @@ -3535,6 +3526,14 @@ setSwPOptions(WScreen *scr, WDefaultEntry *entry, WMPropList *array, void *foo) int cwidth, cheight; WPreferences *prefs= (WPreferences*)foo; + if (!WMIsPLArray(array) || WMGetPropListItemCount(array)==0) { + if (prefs->swtileImage) RReleaseImage(prefs->swtileImage); + prefs->swtileImage= NULL; + + WMReleasePropList(array); + return 0; + } + switch (WMGetPropListItemCount(array)) { case 4: diff --git a/src/switchpanel.c b/src/switchpanel.c index 24fe4a74..a66e4ed1 100644 --- a/src/switchpanel.c +++ b/src/switchpanel.c @@ -397,7 +397,8 @@ drawTitle(WSwitchPanel *panel, int idecks, char *title) -static WMArray *makeWindowListArray(WScreen *scr, WWindow *curwin, int workspace) +static WMArray *makeWindowListArray(WScreen *scr, WWindow *curwin, int workspace, + int include_unmapped) { WMArray *windows= WMCreateArray(10); int fl; @@ -406,7 +407,8 @@ static WMArray *makeWindowListArray(WScreen *scr, WWindow *curwin, int workspace for (fl= 0; fl < 2; fl++) { for (wwin= curwin; wwin; wwin= wwin->prev) { if (((!fl && canReceiveFocus(wwin) > 0) || (fl && canReceiveFocus(wwin) < 0)) && - (!WFLAGP(wwin, skip_window_list) || wwin->flags.internal_window)) { + (!WFLAGP(wwin, skip_window_list) || wwin->flags.internal_window) && + (wwin->flags.mapped || include_unmapped)) { WMAddToArray(windows, wwin); } } @@ -417,7 +419,8 @@ static WMArray *makeWindowListArray(WScreen *scr, WWindow *curwin, int workspace for (wwin= curwin; wwin && wwin != curwin; wwin= wwin->prev) { if (((!fl && canReceiveFocus(wwin) > 0) || (fl && canReceiveFocus(wwin) < 0)) && - (!WFLAGP(wwin, skip_window_list) || wwin->flags.internal_window)) { + (!WFLAGP(wwin, skip_window_list) || wwin->flags.internal_window) && + (wwin->flags.mapped || include_unmapped)) { WMAddToArray(windows, wwin); } } @@ -446,7 +449,8 @@ WSwitchPanel *wInitSwitchPanel(WScreen *scr, WWindow *curwin, int workspace) panel->scr= scr; - panel->windows= makeWindowListArray(scr, curwin, workspace); + panel->windows= makeWindowListArray(scr, curwin, workspace, + wPreferences.swtileImage!=0); count= WMGetArrayItemCount(panel->windows); if (count == 0) { @@ -465,6 +469,9 @@ WSwitchPanel *wInitSwitchPanel(WScreen *scr, WWindow *curwin, int workspace) panel->visibleCount= iconsThatFitCount; + if (!wPreferences.swtileImage) + return panel; + height= LABEL_HEIGHT + ICON_TILE_SIZE; panel->tileTmp= RCreateImage(ICON_TILE_SIZE, ICON_TILE_SIZE, 1); @@ -684,10 +691,10 @@ WWindow *wSwitchPanelHandleEvent(WSwitchPanel *panel, XEvent *event) if (!panel->win) return NULL; - if (event->type == LeaveNotify) { + /* if (event->type == LeaveNotify) { if (event->xcrossing.window == WMWidgetXID(panel->win)) focus= 0; - } else if (event->type == MotionNotify) { + } else*/ if (event->type == MotionNotify) { WM_ITERATE_ARRAY(panel->icons, icon, i) { if (WMWidgetXID(icon) == event->xmotion.window) { diff --git a/util/wm-oldmenu2new b/util/wm-oldmenu2new index 80f61cb6..6cdc7c2b 100755 --- a/util/wm-oldmenu2new +++ b/util/wm-oldmenu2new @@ -75,7 +75,9 @@ which1() # Expand macros if necessary. # Create a temp copy of the menu file to edit to turn into the new. # -T=/tmp/wmmenu$$ +TD=$(/bin/mktemp -d /tmp/wmmenu.XXXXXX) || { echo "$0: can not create temporary file" >& 2; exit 1; } +T=$TD/wmmenu$$ + echo "Converting $GLW/$OLD_MENU --> $GD/$NEW_MENU" cd $WLW || exit 1 if [ ! -s "$OLD_MENU" ] @@ -198,7 +200,8 @@ END { } ' > $WD/$NEW_MENU.new || exit 1 -rm $T +rm -f $T +rm -fr $TD # # Now install it. diff --git a/util/wmsetbg.c b/util/wmsetbg.c index 7171672e..794af7a1 100644 --- a/util/wmsetbg.c +++ b/util/wmsetbg.c @@ -557,6 +557,7 @@ parseTexture(RContext *rc, char *text) case 'C': { Pixmap tpixmap = XCreatePixmap( dpy, root, scrWidth, scrHeight, DefaultDepth(dpy, scr)); + XSetForeground(dpy, DefaultGC(dpy, scr), color.pixel); XFillRectangle(dpy, tpixmap, DefaultGC(dpy, scr), 0, 0, scrWidth, scrHeight); texture->pixmap = tpixmap; -- 2.11.4.GIT