]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/window.cpp
Committing in .
[wxWidgets.git] / src / msw / window.cpp
index 77589902e52de74badfdc01b09e54c06d7afcf75..3b06d5adcf5ef900e429aa99857bbbd5e1458b98 100644 (file)
@@ -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()
 {
@@ -2324,10 +2338,18 @@ long wxWindowMSW::MSWWindowProc(WXUINT message, WXWPARAM wParam, WXLPARAM lParam
             break;
 
         case WM_CLOSE:
+#ifdef __WXUNIVERSAL__
+            // Universal uses its own wxFrame/wxDialog, so we don't receive
+            // close events unless we have this.
+            Close();
+            processed = TRUE;
+            rc.result = TRUE;
+#else
             // don't let the DefWindowProc() destroy our window - we'll do it
             // ourselves in ~wxWindow
             processed = TRUE;
             rc.result = TRUE;
+#endif
             break;
 
         case WM_SHOWWINDOW: