Index: src/wp/ap/win/ap_Win32Dialog_Spell.cpp
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/win/ap_Win32Dialog_Spell.cpp,v
retrieving revision 1.4
diff -u -r1.4 ap_Win32Dialog_Spell.cpp
--- src/wp/ap/win/ap_Win32Dialog_Spell.cpp	1999/10/14 01:50:45	1.4
+++ src/wp/ap/win/ap_Win32Dialog_Spell.cpp	2000/06/21 19:41:35
@@ -47,6 +47,7 @@
 AP_Win32Dialog_Spell::AP_Win32Dialog_Spell(XAP_DialogFactory * pDlgFactory, XAP_Dialog_Id id)
   : AP_Dialog_Spell(pDlgFactory,id)
 {
+	m_bChangingSelection = 0;
 }
 
 AP_Win32Dialog_Spell::~AP_Win32Dialog_Spell(void)
@@ -246,7 +247,9 @@
 	SendMessage(m_hwndSuggest, LB_SETCURSEL, m_iSelectedRow, 0);
 
 	// populate the change field, if appropriate
+	m_bChangingSelection = 1;
 	_suggestChange();
+	m_bChangingSelection = 0;
 }
 
 void AP_Win32Dialog_Spell::_suggestChange(void)
@@ -408,12 +411,12 @@
 		case EN_CHANGE:
 			if (GetWindowTextLength(hWndCtrl))
 			{
-#if 0
-// TODO: this looks plausible, but it causes more problems than it solves
-				m_iSelectedRow = -1;
-				SendMessage(m_hwndSuggest, LB_SETCURSEL, m_iSelectedRow, 0);
-#endif 
-				_toggleChangeButtons(UT_TRUE);
+				if( !m_bChangingSelection )
+				{
+					m_iSelectedRow = -1;
+					SendMessage(m_hwndSuggest, LB_SETCURSEL, m_iSelectedRow, 0);
+					_toggleChangeButtons(UT_TRUE);
+				}
 			}
 			else
 			{
@@ -429,12 +432,16 @@
 		switch (HIWORD(wParam))
 		{
 			case LBN_SELCHANGE:
+				m_bChangingSelection = 1;
 				_suggestChange();
+				m_bChangingSelection = 0;
 				return 1;
 
 			case LBN_DBLCLK:
+				m_bChangingSelection = 1;
 				UT_ASSERT((m_iSelectedRow == SendMessage(hWndCtrl, LB_GETCURSEL, 0, 0)));
 				_change();
+				m_bChangingSelection = 0;
 				return 1;
 
 			default:
Index: src/wp/ap/win/ap_Win32Dialog_Spell.h
===================================================================
RCS file: /cvsroot/abi/src/wp/ap/win/ap_Win32Dialog_Spell.h,v
retrieving revision 1.3
diff -u -r1.3 ap_Win32Dialog_Spell.h
--- src/wp/ap/win/ap_Win32Dialog_Spell.h	1999/10/14 01:50:45	1.3
+++ src/wp/ap/win/ap_Win32Dialog_Spell.h	2000/06/21 19:41:35
@@ -53,6 +53,7 @@
 	HWND					m_hwndChangeTo;		// AP_RID_DIALOG_SPELL_EDIT_CHANGE
 	HWND					m_hwndSuggest;		// AP_RID_DIALOG_SPELL_LIST_SUGGEST
 
+	BOOL					m_bChangingSelection;
 };
 
 #endif /* AP_WIN32DIALOG_SPELL_H */
