Index: trunk/src/user32/combo.cpp
===================================================================
--- trunk/src/user32/combo.cpp	(revision 3107)
+++ trunk/src/user32/combo.cpp	(revision 3108)
@@ -1,3 +1,3 @@
-/* $Id: combo.cpp,v 1.26 2000-02-16 14:34:06 sandervl Exp $ */
+/* $Id: combo.cpp,v 1.27 2000-03-14 15:00:58 sandervl Exp $ */
 /*
  * Combo controls
@@ -1385,5 +1385,20 @@
 
            case (EN_UPDATE >> 8):
-                CB_NOTIFY( lphc, CBN_EDITUPDATE );
+		//SvL: Don't send updates either. (Realplayer 7 infinite loops)
+               /*
+                * In some circumstances (when the selection of the combobox
+                * is changed for example) we don't wans the EN_CHANGE notification
+                * to be forwarded to the parent of the combobox. This code
+                * checks a flag that is set in these occasions and ignores the
+                * notification.
+                */
+                if (lphc->wState & CBF_NOEDITNOTIFY)
+                {
+                  lphc->wState &= ~CBF_NOEDITNOTIFY;
+                }
+                else
+                {
+                	CB_NOTIFY( lphc, CBN_EDITUPDATE );
+		}
                 break;
 
@@ -2105,4 +2120,8 @@
   if( lphc->wState & CBF_SELCHANGE )
   {
+    //SvL: Clear the flag here; doing it after calling CBUpdateEdit causes
+    //     an infinite loop in RealPlayer 7
+    lphc->wState &= ~CBF_SELCHANGE;
+
     /* no LBN_SELCHANGE in this case, update manually */
     if( lphc->wState & CBF_EDIT )
@@ -2110,6 +2129,4 @@
     else
         InvalidateRect(CB_HWND(lphc), &lphc->textRect, TRUE);
-
-    lphc->wState &= ~CBF_SELCHANGE;
   }
 
Index: trunk/src/user32/listbox.cpp
===================================================================
--- trunk/src/user32/listbox.cpp	(revision 3107)
+++ trunk/src/user32/listbox.cpp	(revision 3108)
@@ -1,3 +1,3 @@
-/* $Id: listbox.cpp,v 1.20 2000-02-21 17:25:27 cbratschi Exp $ */
+/* $Id: listbox.cpp,v 1.21 2000-03-14 15:00:59 sandervl Exp $ */
 /*
  * Listbox controls
@@ -1241,5 +1241,7 @@
     {
         INT oldsel = descr->selected_item;
-////        if (index == oldsel) return LB_OKAY;
+	//SvL: Why was this commented out??? (enabled in latest wine code)
+        if (index == oldsel) return LB_OKAY;
+
         if (oldsel != -1) descr->items[oldsel].selected = FALSE;
         if (index != -1) descr->items[index].selected = TRUE;
Index: trunk/src/user32/oslibmsgtranslate.cpp
===================================================================
--- trunk/src/user32/oslibmsgtranslate.cpp	(revision 3107)
+++ trunk/src/user32/oslibmsgtranslate.cpp	(revision 3108)
@@ -1,3 +1,3 @@
-/* $Id: oslibmsgtranslate.cpp,v 1.23 2000-03-13 13:10:46 sandervl Exp $ */
+/* $Id: oslibmsgtranslate.cpp,v 1.24 2000-03-14 15:01:00 sandervl Exp $ */
 /*
  * Window message translation functions for OS/2
@@ -195,6 +195,7 @@
         if(ISMOUSE_CAPTURED())
         {
-            if(DInputMouseHandler(win32wnd->getWindowHandle(), winMsg->message, winMsg->pt.x, winMsg->pt.y))
+            if(DInputMouseHandler(win32wnd->getWindowHandle(), winMsg->message, winMsg->pt.x, winMsg->pt.y)) {
                 goto dummymessage; //dinput swallowed message
+	    }
         }
 
@@ -231,6 +232,7 @@
         if(ISMOUSE_CAPTURED())
         {
-            if(DInputMouseHandler(win32wnd->getWindowHandle(), winMsg->message, winMsg->pt.x, winMsg->pt.y))
+            if(DInputMouseHandler(win32wnd->getWindowHandle(), winMsg->message, winMsg->pt.x, winMsg->pt.y)) {
                 goto dummymessage; //dinput swallowed message
+            }
         }
         //OS/2 Window coordinates -> Win32 Window coordinates
@@ -449,6 +451,7 @@
         if(ISMOUSE_CAPTURED())
         {
-            if(DInputMouseHandler(win32wnd->getWindowHandle(), winMsg->message, winMsg->pt.x, winMsg->pt.y))
+            if(DInputMouseHandler(win32wnd->getWindowHandle(), winMsg->message, winMsg->pt.x, winMsg->pt.y)) {
                 goto dummymessage; //dinput swallowed message
+            }
         }
 
@@ -485,6 +488,7 @@
         if(ISMOUSE_CAPTURED())
         {
-            if(DInputMouseHandler(win32wnd->getWindowHandle(), winMsg->message, winMsg->pt.x, winMsg->pt.y))
+            if(DInputMouseHandler(win32wnd->getWindowHandle(), winMsg->message, winMsg->pt.x, winMsg->pt.y)) {
                 goto dummymessage; //dinput swallowed message
+            }
         }
         //OS/2 Window coordinates -> Win32 Window coordinates
@@ -645,6 +649,7 @@
         if(ISKDB_CAPTURED())
         {
-            if(DInputKeyBoardHandler(winMsg))
+            if(DInputKeyBoardHandler(winMsg)) {
                 goto dummymessage; //dinput swallowed message
+	    }
         }
         break;
@@ -741,4 +746,7 @@
     default:
 dummymessage:
+	winMsg->message = 0;
+	winMsg->wParam  = 0;
+	winMsg->lParam  = 0;
         return FALSE;
   }
