rem: puts("got enter notify");
add: dputs("got enter notify");
context: handleEnterNotify(XEvent *event){    WWindow *wwin;    WObjDescriptor *desc = NULL;    XEvent ev;    WScreen *scr = wScreenForRootWindow(event->xcrossing.root);#ifdef DEBUG    puts("got enter notify");#endif    if (XCheckTypedWindowEvent(dpy, event->xcrossing.window, LeaveNotify,			       &ev)) {	/* already left the window... */	saveTimestamp(&ev);	if (ev.xcrossing.mode==event->xcrossing.mode	    && ev.xcrossing.detail==event->xcrossing.detail) {	    return;	}    }    if (XFindContext(dpy, event->xcrossing.window, wWinContext,                     (XPointer *)&desc)!=XCNOENT) {        if(desc->handle_enternotify)            (*desc->handle_enternotify)(desc, event);    }    /* enter to window */    wwin = wWindowFor(event->xcrossing.window);    if (!wwin) {	if (wPreferences.focus_mode==WKF_POINTER	    && event->xcrossing.window==event->xcrossing.root) {	    wSetFocusTo(scr, NULL);	}	if (wPreferences.colormap_mode==WKF_POINTER) {	    wColormapInstallForWindow(scr, NULL);	}	if (scr->autoRaiseTimer 	    && event->xcrossing.root==event->xcrossing.window) {	    WMDeleteTimerHandler(scr->autoRaiseTimer);	    scr->autoRaiseTimer = NULL;	}    } else {	/* set auto raise timer even if in focus-follows-mouse mode	 * and the event is for the frame window, even if the window	 * has focus already.  useful if you move the pointer from a focused	 * window to the root window and back pretty fast 	 *	 * set focus if in focus-follows-mouse mode and the event	 * is for the frame window and window doesn't have focus yet */	if ((wPreferences.focus_mode==WKF_POINTER	     || wPreferences.focus_mode==WKF_SLOPPY)	    && wwin->frame->core->window==event->xcrossing.window	    && !scr->flags.doing_alt_tab) {	    	    if (!wwin->flags.focused && !WFLAGP(wwin, no_focusable))		wSetFocusTo(scr, wwin);	    	    if (scr->autoRaiseTimer)		WMDeleteTimerHandler(scr->autoRaiseTimer);	    scr->autoRaiseTimer = NULL;	    	    if (wPreferences.raise_delay && !WFLAGP(wwin, no_focusable)) {		scr->autoRaiseWindow = wwin->frame->core->window;		scr->autoRaiseTimer		    = WMAddTimerHandler(wPreferences.raise_delay,					(WMCallback*)raiseWindow, scr);	    }	}	/* Install colormap for window, if the colormap installation mode	 * is colormap_follows_mouse */	if (wPreferences.colormap_mode==WKF_POINTER) {	    if (wwin->client_win==event->xcrossing.window)		wColormapInstallForWindow(scr, wwin);	    else		wColormapInstallForWindow(scr, NULL);	}    }        /* a little kluge to hide the clip balloon */    if (!wPreferences.flags.noclip && scr->flags.clip_balloon_mapped) {	if (!desc) {	    XUnmapWindow(dpy, scr->clip_balloon);	    scr->flags.clip_balloon_mapped = 0;	} else {	    if (desc->parent_type!=WCLASS_DOCK_ICON		|| scr->clip_icon != desc->parent) {		XUnmapWindow(dpy, scr->clip_balloon);		scr->flags.clip_balloon_mapped = 0;	    }	}    }    if (event->xcrossing.window == event->xcrossing.root	&& event->xcrossing.detail == NotifyNormal	&& event->xcrossing.detail != NotifyInferior	&& wPreferences.focus_mode != WKF_CLICK) {	wSetFocusTo(scr, scr->focused_window);    }#ifdef BALLOON_TEXT    wBalloonEnteredObject(scr, desc);#endif}