rem: WMPostNotificationName(WMTextDidEndEditingNotification, tPtr, WMIllegalTextMovement);
add: WMPostNotificationName(WMTextDidEndEditingNotification, tPtr, (void*)WMIllegalTextMovement);
context: handleEvents(XEvent *event, void *data){    TextField *tPtr = (TextField*)data;    CHECK_CLASS(data, WC_TextField);    switch (event->type) {     case FocusIn:	if (W_FocusedViewOfToplevel(W_TopLevelOfView(tPtr->view))!=tPtr->view)	    return;	tPtr->flags.focused = 1;#if 0	if (!tPtr->timerID) {	    tPtr->timerID = WMAddTimerHandler(CURSOR_BLINK_ON_DELAY, 					      blinkCursor, tPtr);	}#endif	paintTextField(tPtr);        WMPostNotificationName(WMTextDidBeginEditingNotification, tPtr, NULL);        tPtr->flags.notIllegalMovement = 0;	break;	     case FocusOut:	tPtr->flags.focused = 0;#if 0	if (tPtr->timerID)	    WMDeleteTimerHandler(tPtr->timerID);	tPtr->timerID = NULL;#endif	paintTextField(tPtr);	if (!tPtr->flags.notIllegalMovement) {            WMPostNotificationName(WMTextDidEndEditingNotification, tPtr,                                   WMIllegalTextMovement);	}	break;	     case Expose:	if (event->xexpose.count!=0)	    break;	paintTextField(tPtr);	break;	     case DestroyNotify:	destroyTextField(tPtr);	break;    }}