event.time = xEvent.time;
int processVerify (int callData) {	super.processVerify (callData);	if (echoCharacter == '\0' && !hooks (SWT.Verify)) return 0;	XmTextVerifyCallbackStruct textVerify = new XmTextVerifyCallbackStruct ();	OS.memmove (textVerify, callData, XmTextVerifyCallbackStruct.sizeof);	XmTextBlockRec textBlock = new XmTextBlockRec ();	OS.memmove (textBlock, textVerify.text, XmTextBlockRec.sizeof);	byte [] buffer = new byte [textBlock.length];	OS.memmove (buffer, textBlock.ptr, textBlock.length);	String codePage = getCodePage ();	String text = new String (Converter.mbcsToWcs (codePage, buffer));	String newText = text;	if (!ignoreChange) {		Event event = new Event ();		if (textVerify.event != 0) {			XKeyEvent xEvent = new XKeyEvent ();			OS.memmove (xEvent, textVerify.event, XKeyEvent.sizeof);			setKeyState (event, xEvent);		}		event.start = textVerify.startPos;		event.end = textVerify.endPos;		event.doit = textVerify.doit == 1;		event.text = text;		sendEvent (SWT.Verify, event);		newText = event.text;		textVerify.doit = (byte) ((event.doit && newText != null) ? 1 : 0);	}	if (newText != null) {		if (echoCharacter != '\0' && (textVerify.doit != 0)) {			String prefix = hiddenText.substring (0, textVerify.startPos);			String suffix = hiddenText.substring (textVerify.endPos, hiddenText.length ());			hiddenText = prefix + newText + suffix;			char [] charBuffer = new char [newText.length ()];			for (int i=0; i<charBuffer.length; i++) {				charBuffer [i] = echoCharacter;			}			newText = new String (charBuffer);		}		if (newText != text) {			byte [] buffer2 = Converter.wcsToMbcs (codePage, newText, true);			int length = buffer2.length;			int ptr = OS.XtMalloc (length);			OS.memmove (ptr, buffer2, length);			textBlock.ptr = ptr;			textBlock.length = buffer2.length - 1;			OS.memmove (textVerify.text, textBlock, XmTextBlockRec.sizeof);		}	}	OS.memmove (callData, textVerify, XmTextVerifyCallbackStruct.sizeof);	textVerify = null;	return 0;}