[PROBLEM REPORT] Focus problem for mdi children

Alexandre Julliard julliard at winehq.com
Wed Nov 7 18:46:37 CST 2001


Gerard Patel <gerard.patel at nerim.net> writes:

> Using this patch :
> --- winpos.c.orig       Wed Nov  7 10:41:32 2001
> +++ winpos.c    Thu Nov  8 00:44:29 2001
> @@ -955,7 +955,20 @@
>              ShowCaret(winpos->hwnd);
>      }
>  
> -    if (!(winpos->flags & SWP_NOACTIVATE)) SetActiveWindow( winpos->hwnd );
> +    if (!(winpos->flags & SWP_NOACTIVATE))
> +    {
> +         SetActiveWindow( winpos->hwnd );
> +         if (!(wndPtr = WIN_FindWndPtr(winpos->hwnd))) return FALSE;
> +
> +         /* child windows get WM_CHILDACTIVATE message */
> +         if( (wndPtr->dwStyle & (WS_CHILD | WS_POPUP)) == WS_CHILD )
> +         {
> +             WIN_ReleaseWndPtr(wndPtr);
> +             SendMessageA(winpos->hwnd, WM_CHILDACTIVATE, 0, 0L);
> +         }
> +         else
> +             WIN_ReleaseWndPtr(wndPtr);
> +    }
>  
>        /* And last, send the WM_WINDOWPOSCHANGED message */
> 
> 
> seems to fix the problem. It may be too simple though :-)

No actually it's pretty much the right thing. I have applied a
slightly simplified version of your patch, thanks for the report.

-- 
Alexandre Julliard
julliard at winehq.com




More information about the wine-devel mailing list