user32: Select text control content while setting initial dialog focus

Dmitry Timoshkov dmitry at baikal.ru
Tue Feb 16 02:38:43 CST 2016


Dmitry Timoshkov <dmitry at baikal.ru> wrote:

> > >> --- a/dlls/user32/dialog.c
> > >> +++ b/dlls/user32/dialog.c
> > >> @@ -707,7 +707,11 @@ static HWND DIALOG_CreateIndirect( HINSTANCE hInst, LPCVOID dlgTemplate,
> > >>                   focus = GetNextDlgTabItem( hwnd, 0, FALSE );
> > >>                   if (!focus) focus = GetNextDlgGroupItem( hwnd, 0, FALSE );
> > >>                   if (focus)
> > >> +                {
> > >> +                    if (SendMessageW( focus, WM_GETDLGCODE, 0, 0 ) & DLGC_HASSETSEL)
> > >> +                        SendMessageW( focus, EM_SETSEL, 0, -1 );
> > >>                       SetFocus( focus );
> > >> +                }
> > >>               }
> > > Selecting the text on SetFocus() is the job of DefDlgProc(), it's worth
> > > to investigate why it doesn't work.
> > >
> > It works as expected. Calling SetFocus on edit HWND is not selecting the 
> > text on windows either.
> > 
> > The text will be selected if you call SetFocus/WM_NEXTDLGCTL on the 
> > dialog window.
> 
> A message test would be more convincing then.

There is a possibility that it's the edit control who is responsible
for selecting and deselecting the text on focus events, so more tests
is required to show what the correct behaviour is.

-- 
Dmitry.



More information about the wine-devel mailing list