Henning Hoffmann
Don't send EN_CHANGE after painting the edit.
Send it wherever text is changed.
diff --git a/controls/edit.c b/controls/edit.c
index de8c462..0b23cce 100644
--- a/controls/edit.c
+++ b/controls/edit.c
@@ -284,6 +284,11 @@
static inline void EDIT_WM_Clear(WND *wnd, EDITSTATE *es)
{
EDIT_EM_ReplaceSel(wnd, es, TRUE, "");
+
+ if (es->flags & EF_UPDATE) {
+ es->flags &= ~EF_UPDATE;
+ EDIT_NOTIFY_PARENT(wnd, EN_CHANGE, "EN_CHANGE");
+ }
}
@@ -533,6 +538,10 @@
case EM_REPLACESEL:
DPRINTF_EDIT_MSG32("EM_REPLACESEL");
EDIT_EM_ReplaceSel(wnd, es, (BOOL)wParam, (LPCSTR)lParam);
+ if (es->flags & EF_UPDATE) {
+ es->flags &= ~EF_UPDATE;
+ EDIT_NOTIFY_PARENT(wnd, EN_CHANGE, "EN_CHANGE");
+ }
result = 1;
break;
@@ -2914,6 +2923,11 @@
TRACE("after UNDO:insertion length = %d, deletion buffer = %s\n",
es->undo_insert_count, es->undo_text);
+ if (es->flags & EF_UPDATE) {
+ es->flags &= ~EF_UPDATE;
+ EDIT_NOTIFY_PARENT(wnd, EN_CHANGE, "EN_CHANGE");
+ }
+
return TRUE;
}
@@ -2936,13 +2950,24 @@
if (es->style & ES_READONLY) {
EDIT_MoveHome(wnd, es, FALSE);
EDIT_MoveDown_ML(wnd, es, FALSE);
- } else
+ } else {
EDIT_EM_ReplaceSel(wnd, es, TRUE, "\r\n");
+ if (es->flags & EF_UPDATE) {
+ es->flags &= ~EF_UPDATE;
+ EDIT_NOTIFY_PARENT(wnd, EN_CHANGE, "EN_CHANGE");
+ }
+ }
}
break;
case '\t':
if ((es->style & ES_MULTILINE) && !(es->style & ES_READONLY))
+ {
EDIT_EM_ReplaceSel(wnd, es, TRUE, "\t");
+ if (es->flags & EF_UPDATE) {
+ es->flags &= ~EF_UPDATE;
+ EDIT_NOTIFY_PARENT(wnd, EN_CHANGE, "EN_CHANGE");
+ }
+ }
break;
case VK_BACK:
if (!(es->style & ES_READONLY) && !control) {
@@ -2972,6 +2997,10 @@
str[0] = c;
str[1] = '\0';
EDIT_EM_ReplaceSel(wnd, es, TRUE, str);
+ if (es->flags & EF_UPDATE) {
+ es->flags &= ~EF_UPDATE;
+ EDIT_NOTIFY_PARENT(wnd, EN_CHANGE, "EN_CHANGE");
+ }
}
break;
}
@@ -3109,6 +3138,10 @@
*/
es->selection_start = es->selection_end = 0;
EDIT_EM_ScrollCaret(wnd, es);
+ if (es->flags & EF_UPDATE) {
+ es->flags &= ~EF_UPDATE;
+ EDIT_NOTIFY_PARENT(wnd, EN_CHANGE, "EN_CHANGE");
+ }
}
return 0;
}
@@ -3824,11 +3857,6 @@
si.nPos = es->x_offset;
SetScrollInfo(wnd->hwndSelf, SB_HORZ, &si, TRUE);
}
-
- if (es->flags & EF_UPDATE) {
- es->flags &= ~EF_UPDATE;
- EDIT_NOTIFY_PARENT(wnd, EN_CHANGE, "EN_CHANGE");
- }
}
@@ -3847,6 +3875,11 @@
src = (LPSTR)GlobalLock(hsrc);
EDIT_EM_ReplaceSel(wnd, es, TRUE, src);
GlobalUnlock(hsrc);
+
+ if (es->flags & EF_UPDATE) {
+ es->flags &= ~EF_UPDATE;
+ EDIT_NOTIFY_PARENT(wnd, EN_CHANGE, "EN_CHANGE");
+ }
}
CloseClipboard();
}
@@ -3951,8 +3984,10 @@
EDIT_EM_SetSel(wnd, es, 0, 0, FALSE);
EDIT_EM_ScrollCaret(wnd, es);
- if (es->flags & EF_UPDATE)
- EDIT_NOTIFY_PARENT(wnd, EN_UPDATE, "EN_UPDATE");
+ if (es->flags & EF_UPDATE) {
+ es->flags &= ~EF_UPDATE;
+ EDIT_NOTIFY_PARENT(wnd, EN_CHANGE, "EN_CHANGE");
+ }
}