From 7bdc50c25ab6407714262cf6ce9e50b626a116a2 Mon Sep 17 00:00:00 2001 From: Pietro Gagliardi Date: Sat, 9 May 2015 21:18:27 -0400 Subject: [PATCH] Inhibited uiEntryOnChanged() with uiEntrySetText() on Windows. --- windows/entry.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/windows/entry.c b/windows/entry.c index 3548fd92..5bcc2d75 100644 --- a/windows/entry.c +++ b/windows/entry.c @@ -6,6 +6,7 @@ struct entry { HWND hwnd; void (*onChanged)(uiEntry *, void *); void *onChangedData; + BOOL inhibitChanged; }; static BOOL onWM_COMMAND(uiControl *c, WORD code, LRESULT *lResult) @@ -14,6 +15,8 @@ static BOOL onWM_COMMAND(uiControl *c, WORD code, LRESULT *lResult) if (code != EN_CHANGE) return FALSE; + if (e->inhibitChanged) + return FALSE; (*(e->onChanged))(uiEntry(e), e->onChangedData); *lResult = 0; return TRUE; @@ -51,9 +54,14 @@ static char *entryText(uiEntry *e) return uiWindowsControlText(uiControl(e)); } -static void entrySetText(uiEntry *e, const char *text) +static void entrySetText(uiEntry *ee, const char *text) { + struct entry *e = (struct entry *) ee; + + // doing this raises an EN_CHANGED + e->inhibitChanged = TRUE; uiWindowsControlSetText(uiControl(e), text); + e->inhibitChanged = FALSE; } static void entryOnChanged(uiEntry *ee, void (*f)(uiEntry *, void *), void *data)