ignoreCharacter = false;
LRESULT WM_UNDO (int wParam, int lParam) {	LRESULT result = super.WM_UNDO (wParam, lParam);	if (result != null) return result;	if (!hooks (SWT.Verify) && !filters (SWT.Verify)) {		return result;	}	/* Undo and then Redo to get the Undo text */	if (OS.SendMessage (handle, OS.EM_CANUNDO, 0, 0) == 0) {		return result;	}	ignoreVerify = true;	callWindowProc (OS.WM_UNDO, wParam, lParam);	String oldText = getSelectionText ();	callWindowProc (OS.WM_UNDO, wParam, lParam);	ignoreVerify = false;	/* Verify the Undo operation */	int [] start = new int [1], end = new int [1];	OS.SendMessage (handle, OS.EM_GETSEL, start, end);	String newText = verifyText (oldText, start [0], end [0], null);	if (newText == null) return LRESULT.ZERO;	if (newText != oldText) {		newText = Display.withCrLf (newText);		TCHAR buffer = new TCHAR (getCodePage (), newText, true);		OS.SendMessage (handle, OS.EM_REPLACESEL, 0, buffer);		return LRESULT.ZERO;	}		/* Do the original Undo */	ignoreVerify = true;	callWindowProc (OS.WM_UNDO, wParam, lParam);	ignoreVerify = false;	return LRESULT.ONE;}