diff --git a/include/wx/msw/window.h b/include/wx/msw/window.h index a65bdbc191..2218c201e9 100644 --- a/include/wx/msw/window.h +++ b/include/wx/msw/window.h @@ -86,6 +86,7 @@ public: virtual bool Enable( bool enable = TRUE ); virtual void SetFocus(); + virtual void SetFocusFromKbd(); virtual bool Reparent(wxWindowBase *newParent); diff --git a/src/msw/window.cpp b/src/msw/window.cpp index 77589902e5..b1a3914509 100644 --- a/src/msw/window.cpp +++ b/src/msw/window.cpp @@ -458,6 +458,20 @@ void wxWindowMSW::SetFocus() } } +void wxWindowMSW::SetFocusFromKbd() +{ + wxWindowBase::SetFocusFromKbd(); + + // when the focus is given to the control with DLGC_HASSETSEL style from + // keyboard its contents should be entirely selected: this is what + // ::IsDialogMessage() does and so we should do it as well to provide the + // same LNF as the native programs + if ( ::SendMessage(GetHwnd(), WM_GETDLGCODE, 0, 0) & DLGC_HASSETSEL ) + { + ::SendMessage(GetHwnd(), EM_SETSEL, 0, -1); + } +} + // Get the window with the focus wxWindow *wxWindowBase::FindFocus() {