diff --git a/dll/win32/comctl32/edit.c b/dll/win32/comctl32/edit.c index 41fef87206a..ed8f08a86eb 100644 --- a/dll/win32/comctl32/edit.c +++ b/dll/win32/comctl32/edit.c @@ -75,7 +75,9 @@ WINE_DEFAULT_DEBUG_CHANNEL(edit); wrapped line, instead of in front of the next character */ #define EF_USE_SOFTBRK 0x0100 /* Enable soft breaks in text. */ #define EF_DIALOGMODE 0x0200 /* Indicates that we are inside a dialog window */ - +#ifdef __REACTOS__ +#define EF_IGNORENEXTWMMOUSEMOVE 0x400 /* Ignore next WM_MOUSEMOVE message as temporary hack for CORE-8394, CORE-19422 */ +#endif #define ID_CB_LISTBOX 1000 typedef enum @@ -3504,8 +3506,8 @@ static LRESULT EDIT_WM_LButtonDblClk(EDITSTATE *es) SetTimer(es->hwndSelf, 0, 100, NULL); #ifdef __REACTOS__ - ReleaseCapture(); - es->bCaptureState = FALSE; + /* set flags indicating WM_MOUSEMOVE to be ignored due to CORE-8394 */ + es->flags |= EF_IGNORENEXTWMMOUSEMOVE; #endif return 0; @@ -3534,6 +3536,11 @@ static LRESULT EDIT_WM_LButtonDown(EDITSTATE *es, DWORD keys, INT x, INT y) if (!(es->flags & EF_FOCUSED)) SetFocus(es->hwndSelf); +#ifdef __REACTOS__ + /* set flags indicating WM_MOUSEMOVE to be ignored due to CORE-8394 */ + es->flags |= EF_IGNORENEXTWMMOUSEMOVE; +#endif + return 0; } @@ -3583,6 +3590,15 @@ static LRESULT EDIT_WM_MouseMove(EDITSTATE *es, INT x, INT y) if (!es->bCaptureState || GetCapture() != es->hwndSelf) return 0; +#ifdef __REACTOS__ + if (es->flags & EF_IGNORENEXTWMMOUSEMOVE) + { + /* clear flags indicating WM_MOUSEMOVE to be ignored due to CORE-8394 */ + es->flags &= ~EF_IGNORENEXTWMMOUSEMOVE; + return 0; + } +#endif + /* * FIXME: gotta do some scrolling if outside client * area. Maybe reset the timer ?