Prerequisite: 1 diff -c BUILD/patchlevel.h src/patchlevel.h *** BUILD/patchlevel.h Tue Jan 13 16:38:32 1998 --- src/patchlevel.h Tue Jan 13 16:37:16 1998 *************** *** 1 **** ! #define PATCHLEVELv4 1 --- 1 ---- ! #define PATCHLEVELv4 2 diff -c BUILD/CHANGES src/CHANGES *** BUILD/CHANGES Tue Jan 13 16:38:32 1998 --- src/CHANGES Tue Jan 13 16:43:17 1998 *************** *** 1,3 **** --- 1,21 ---- + Version 4.2 fixes: + 1) Fixed problems with windows that have a compound text title + + 2) Fixed problems with the cursor font name + + 3) error.c will now compile under Solaris 2.6 + + 4) Fixed misc. compilation warnings. Some survive in error.c and states.c + + 5) Fixed warp function when two screens have the same program: warp will + now look first on the screen containing the mouse pointer + + 6) Fixed hot key functions when num lock/shift lock might be pressed + + 7) Fixed problem with AutoRootMenu startup + + 8) Fixed problem with VirtualIconic resource + Version 4.1 fixes: 1) Fixed compilation problems with /usr/ucb/cc on SunOS 4.1.3 diff -c BUILD/atom.c src/atom.c *** BUILD/atom.c Thu Jan 13 16:36:02 1994 --- src/atom.c Tue Jan 13 16:35:04 1998 *************** *** 73,83 **** Atom AtomDecorIconName; Atom AtomSunReReadMenuFile; #ifdef OW_I18N_L4 - Atom AtomCompoundText; Atom AtomDecorIMStatus; Atom AtomLeftIMStatus; Atom AtomRightIMStatus; #endif /*************************************************************************** * Global functions --- 73,83 ---- Atom AtomDecorIconName; Atom AtomSunReReadMenuFile; #ifdef OW_I18N_L4 Atom AtomDecorIMStatus; Atom AtomLeftIMStatus; Atom AtomRightIMStatus; #endif + Atom AtomCompoundText; /*************************************************************************** * Global functions *************** *** 153,161 **** AtomTargets = XInternAtom(dpy,"TARGETS",False); AtomTimestamp = XInternAtom(dpy,"TIMESTAMP",False); AtomUser = XInternAtom(dpy,"USER",False); - #ifdef OW_I18N_L4 AtomCompoundText = XInternAtom(dpy, "COMPOUND_TEXT" , False); - #endif /* SunView environment */ AtomSunViewEnv = XInternAtom(dpy,"_SUN_SUNVIEW_ENV",False); --- 153,159 ---- diff -c BUILD/cursors.c src/cursors.c *** BUILD/cursors.c Thu Jan 13 16:36:03 1994 --- src/cursors.c Tue Jan 13 16:35:05 1998 *************** *** 21,27 **** #include "st.h" #ifdef IDENT ! #ident "@(#)cursors.c 1.4 olvwm version 07 Jan 1994" #endif static st_table *cursorTable; --- 21,27 ---- #include "st.h" #ifdef IDENT ! #ident "@(#)cursors.c 1.5 olvwm version 01/13/98" #endif static st_table *cursorTable; *************** *** 278,284 **** if (our_copy[0] == 'X') font_file = "cursor"; else if (our_copy[0] == 'O') ! font_file = "olcursor"; createCursor(dpy, cmap, pointer, cursor_id, font_file, end, ptr); } else { --- 278,284 ---- if (our_copy[0] == 'X') font_file = "cursor"; else if (our_copy[0] == 'O') ! font_file = "-sun-open look cursor-----12-120-75-75-p-455-sunolcursor-1"; createCursor(dpy, cmap, pointer, cursor_id, font_file, end, ptr); } else { diff -c BUILD/error.c src/error.c *** BUILD/error.c Thu Jan 13 16:36:04 1994 --- src/error.c Tue Jan 13 16:35:04 1998 *************** *** 232,239 **** err->resourceid); FPRINTF(stderr, GetString(" serial number of failed request: %d\n"), err->serial); - FPRINTF(stderr, GetString(" current request serial number: %d\n"), - dpy->request); } --- 232,237 ---- diff -c BUILD/evbind.c src/evbind.c *** BUILD/evbind.c Tue Jan 13 16:38:33 1998 --- src/evbind.c Tue Jan 13 16:35:04 1998 *************** *** 5,11 **** */ #ifdef IDENT ! #ident "@(#)evbind.c 1.6 olvwm version 09 Feb 1994" #endif /* --- 5,11 ---- */ #ifdef IDENT ! #ident "@(#)evbind.c 1.7 olvwm version 01/13/98" #endif /* *************** *** 139,145 **** */ typedef struct { ! int state; int button; SemanticAction action; } MouseBinding; --- 139,145 ---- */ typedef struct { ! unsigned int state; int button; SemanticAction action; } MouseBinding; *** BUILD/menu.c Thu Jan 13 16:36:09 1994 --- src/menu.c Tue Jan 13 16:35:04 1998 *************** *** 5,11 **** */ #ifdef IDENT ! #ident "@(#)menu.c 1.6 olvwm version 07 Jan 1994" #endif /* --- 5,11 ---- */ #ifdef IDENT ! #ident "@(#)menu.c 1.7 olvwm version 01/13/98" #endif /* *************** *** 3154,3160 **** --- 3154,3164 ---- else if (pb->label[pb->which].kind == ComboLabel) { label = &combLabel; combLabel.pixlabel = *(pb->label[pb->which].pixlabel); + #ifdef OW_I18N_L4 + combLabel.strlabel = GetText(pb->label[pb->which].string); + #else combLabel.strlabel = pb->label[pb->which].string; + #endif state |= OLGX_LABEL_IS_COMB; } #endif diff -c BUILD/moveresize.c src/moveresize.c *** BUILD/moveresize.c Tue Jan 13 16:38:34 1998 --- src/moveresize.c Tue Jan 13 16:35:04 1998 *************** *** 5,11 **** */ #ifdef IDENT ! #ident "@(#)moveresize.c 1.7 olvwm version 09 Feb 1994" #endif /* --- 5,11 ---- */ #ifdef IDENT ! #ident "@(#)moveresize.c 1.8 olvwm version 01/13/98" #endif /* *************** *** 1067,1072 **** --- 1067,1073 ---- XUngrabPointer(mstuff->dpy, CurrentTime); XUngrabKeyboard(mstuff->dpy, CurrentTime); + XFlush(mstuff->dpy); /* * If we moved the outline (not the whole window) cause the window to be * raised at the same time it is moved. Raise just the frame the user diff -c BUILD/olvwmrc.y src/olvwmrc.y *** BUILD/olvwmrc.y Thu Jan 13 16:46:53 1994 --- src/olvwmrc.y Tue Jan 13 16:35:06 1998 *************** *** 5,11 **** %{ #ifdef IDENT ! #ident "@(#)olvwmrc.y 1.6 olvwm version 07 Jan 1994" #endif #include --- 5,11 ---- %{ #ifdef IDENT ! #ident "@(#)olvwmrc.y 1.7 olvwm version 01/13/98" #endif #include *************** *** 81,86 **** --- 81,87 ---- List *WinMenuActionsList = NULL; static Display *dpy; + static unsigned int NumLockMask; %} *************** *** 712,718 **** { if (p->keycode == ev->xkey.keycode && ! (p->modmask == AnyModifier || p->modmask == ev->xkey.state)) return p; return NULL; } --- 713,720 ---- { if (p->keycode == ev->xkey.keycode && ! (p->modmask == AnyModifier || ! (p->modmask == (~(NumLockMask|LockMask) & ev->xkey.state)))) return p; return NULL; } *************** *** 799,812 **** extern List *ScreenInfoList; List *l = ScreenInfoList; ScreenInfo *scr; /* allow one warp per screen */ for (scr = ListEnum(&l); scr != NULL; scr = ListEnum(&l)) { findClient_rootid = scr->rootid; c = (Client *) ListApply(ActiveClientList, findClient, t); ! if (c) ! clientWarp(c); } findClient_rootid = 0; } free(s); --- 801,826 ---- extern List *ScreenInfoList; List *l = ScreenInfoList; ScreenInfo *scr; + Client *saveClient = NULL; + Window root, child; + int rx, ry, wx, wy; + unsigned int keys; /* allow one warp per screen */ for (scr = ListEnum(&l); scr != NULL; scr = ListEnum(&l)) { findClient_rootid = scr->rootid; c = (Client *) ListApply(ActiveClientList, findClient, t); ! if (c) { ! if (XQueryPointer(dpy, c->groupid, &root, &child, ! &rx, &ry, &wx, &wy, &keys)) { ! clientWarp(c); ! break; ! } ! else saveClient = c; ! } } + if (saveClient) + clientWarp(c); findClient_rootid = 0; } free(s); *************** *** 1249,1254 **** --- 1263,1269 ---- return; olvwmOldBuf = olvwmBuf; dpy = ldpy; + NumLockMask = FindModifierMask(XKeysymToKeycode(dpy, XK_Num_Lock)); yyparse(); #ifdef DEBUG DumpProgKeyList(); diff -c BUILD/properties.c src/properties.c *** BUILD/properties.c Thu Jan 13 16:36:13 1994 --- src/properties.c Tue Jan 13 16:35:05 1998 *************** *** 63,70 **** extern Atom AtomDecorIMStatus; extern Atom AtomLeftIMStatus; extern Atom AtomRightIMStatus; - extern Atom AtomCompoundText; #endif /*************************************************************************** * GetWindowProperty --- 63,70 ---- extern Atom AtomDecorIMStatus; extern Atom AtomLeftIMStatus; extern Atom AtomRightIMStatus; #endif + extern Atom AtomCompoundText; /*************************************************************************** * GetWindowProperty *************** *** 147,154 **** } #else ! if (textProp.encoding == XA_STRING && ! textProp.format == 8) { *text = MemNewText(textProp.value); ret = True; } else { --- 147,155 ---- } #else ! if ((textProp.encoding == XA_STRING || ! textProp.encoding == AtomCompoundText) && ! textProp.format == 8) { *text = MemNewText(textProp.value); ret = True; } else { diff -c BUILD/resources.c src/resources.c *** BUILD/resources.c Tue Jan 13 16:38:35 1998 --- src/resources.c Tue Jan 13 16:35:05 1998 *************** *** 5,11 **** */ #ifdef IDENT ! #ident "@(#)resources.c 1.7 olvwm version 09 Feb 1994" #endif /* --- 5,11 ---- */ #ifdef IDENT ! #ident "@(#)resources.c 1.8 olvwm version 01/13/98" #endif /* *************** *** 562,569 **** &(GRV.VirtualFontColor), cvtString, updVirtualFontColor, 0L }, { "virtualIconic", "VirtualIconic", "False", ! &(GRV.VirtualIconic), cvtString, NULL, ! RI_IMMUTABLE }, { "virtualSticky", "VirtualSticky", "", &(GRV.StickyList), cvtStringList, NULL, 0L }, --- 562,569 ---- &(GRV.VirtualFontColor), cvtString, updVirtualFontColor, 0L }, { "virtualIconic", "VirtualIconic", "False", ! &(GRV.VirtualIconic), cvtBoolean, NULL, ! 0L }, { "virtualSticky", "VirtualSticky", "", &(GRV.StickyList), cvtStringList, NULL, 0L }, *************** *** 620,632 **** 0L }, { "autoShowRootMenu", "AutoShowRootMenu", "False", &(GRV.AutoShowRootMenu), cvtBoolean, NULL, ! RI_IMMUTABLE }, { "autoRootMenuX", "AutoRootMenuX", "0", &(GRV.AutoRootMenuX), cvtInteger, NULL, ! RI_IMMUTABLE }, { "autoRootMenuY", "AutoRootMenuY", "0", &(GRV.AutoRootMenuY), cvtInteger, NULL, ! RI_IMMUTABLE }, { "inputFocusColor", "InputFocusColor", NULL, &(GRV.InputFocusColor), cvtString, updInputFocusColor, 0L }, --- 620,632 ---- 0L }, { "autoShowRootMenu", "AutoShowRootMenu", "False", &(GRV.AutoShowRootMenu), cvtBoolean, NULL, ! 0L }, { "autoRootMenuX", "AutoRootMenuX", "0", &(GRV.AutoRootMenuX), cvtInteger, NULL, ! 0L }, { "autoRootMenuY", "AutoRootMenuY", "0", &(GRV.AutoRootMenuY), cvtInteger, NULL, ! 0L }, { "inputFocusColor", "InputFocusColor", NULL, &(GRV.InputFocusColor), cvtString, updInputFocusColor, 0L }, diff -c BUILD/usermenu.c src/usermenu.c *** BUILD/usermenu.c Thu Jan 13 16:36:21 1994 --- src/usermenu.c Tue Jan 13 16:35:05 1998 *************** *** 5,11 **** */ #ifdef IDENT ! #ident "@(#)usermenu.c 1.6 olvwm version 07 Jan 1994" #endif /* --- 5,11 ---- */ #ifdef IDENT ! #ident "@(#)usermenu.c 1.7 olvwm version 01/13/98" #endif /* *************** *** 1003,1009 **** int lineno = 1; /* Needed for recursion */ int rval; ! if (++menuRecursionCount > 25) { fprintf(stderr, GetString("olvwm: maximum menu filedepth exceeded\n")); menuRecursionCount = 0; return MENU_RECURSION; --- 1003,1009 ---- int lineno = 1; /* Needed for recursion */ int rval; ! if (++menuRecursionCount > 1000) { fprintf(stderr, GetString("olvwm: maximum menu filedepth exceeded\n")); menuRecursionCount = 0; return MENU_RECURSION;