EM_UNDO should always return TRUE for single line edit.
diff --git a/controls/edit.c b/controls/edit.c
index b206821..1a73ae4 100644
--- a/controls/edit.c
+++ b/controls/edit.c
@@ -3534,11 +3534,15 @@
INT ulength;
LPWSTR utext;
- /* Protect read-only edit control from modification */
- if(es->style & ES_READONLY)
- return FALSE;
+ /* As per MSDN spec, for a single-line edit control,
+ the return value is always TRUE */
+ if( es->style & ES_READONLY )
+ return !(es->style & ES_MULTILINE);
ulength = strlenW(es->undo_text);
+ if( ulength == 0 )
+ return !(es->style & ES_MULTILINE);
+
utext = HeapAlloc(GetProcessHeap(), 0, (ulength + 1) * sizeof(WCHAR));
strcpyW(utext, es->undo_text);