]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/textctrl.cpp
Corrected link error for missing wxRegTipProvider::GetTip by giving it
[wxWidgets.git] / src / msw / textctrl.cpp
index 65b1f2522266e004d9dd6ee5d9e795974abc6640..97dfca82bdc28f4dd4b4c354f7de3ad07ecd125a 100644 (file)
@@ -151,6 +151,21 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
   if (m_windowStyle & wxTE_PASSWORD) // hidden input
     msStyle |= ES_PASSWORD;
 
+    // we always want the characters and the arrows
+    m_lDlgCode = DLGC_WANTCHARS | DLGC_WANTARROWS;
+
+    // we may have several different cases:
+    // 1. normal case: both TAB and ENTER are used for dialog navigation
+    // 2. ctrl which wants TAB for itself: ENTER is used to pass to the next
+    //    control in the dialog
+    // 3. ctrl which wants ENTER for itself: TAB is used for dialog navigation
+    // 4. ctrl which wants both TAB and ENTER: Ctrl-ENTER is used to pass to
+    //    the next control
+    if ( m_windowStyle & wxTE_PROCESS_ENTER )
+        m_lDlgCode |= DLGC_WANTMESSAGE;
+    if ( m_windowStyle & wxTE_PROCESS_TAB )
+        m_lDlgCode |= DLGC_WANTTAB;
+
   const wxChar *windowClass = _T("EDIT");
 
 #if wxUSE_RICHEDIT
@@ -1092,13 +1107,13 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
             break;
 
         case WXK_TAB:
-            // only produce navigation event if we don't process TAB ourself or
-            // if it's a Shift-Tab keypress (we assume nobody will ever need
-            // this key combo for himself)
+            // always produce navigation event - even if we process TAB
+            // ourselves the fact that we got here means that the user code
+            // decided to skip processing of this TAB - probably to let it
+            // do its default job.
             //
             // NB: Notice that Ctrl-Tab is handled elsewhere and Alt-Tab is
             //     handled by Windows
-            if ( event.ShiftDown() || !(m_windowStyle & wxTE_PROCESS_TAB) )
             {
                 wxNavigationKeyEvent eventNav;
                 eventNav.SetDirection(!event.ShiftDown());
@@ -1123,26 +1138,6 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
     event.Skip();
 }
 
-long wxTextCtrl::MSWGetDlgCode()
-{
-    // we always want the characters and the arrows
-    long lRc = DLGC_WANTCHARS | DLGC_WANTARROWS;
-
-    // we may have several different cases:
-    // 1. normal case: both TAB and ENTER are used for dialog navigation
-    // 2. ctrl which wants TAB for itself: ENTER is used to pass to the next
-    //    control in the dialog
-    // 3. ctrl which wants ENTER for itself: TAB is used for dialog navigation
-    // 4. ctrl which wants both TAB and ENTER: Ctrl-ENTER is used to pass to
-    //    the next control
-    if ( m_windowStyle & wxTE_PROCESS_ENTER )
-        lRc |= DLGC_WANTMESSAGE;
-    if ( m_windowStyle & wxTE_PROCESS_TAB )
-        lRc |= DLGC_WANTTAB;
-
-    return lRc;
-}
-
 bool wxTextCtrl::MSWCommand(WXUINT param, WXWORD WXUNUSED(id))
 {
     switch (param)
@@ -1285,3 +1280,8 @@ void wxTextCtrl::OnUpdateRedo(wxUpdateUIEvent& event)
     event.Enable( CanRedo() );
 }
 
+bool wxTextCtrl::AcceptsFocus() const
+{
+    // we don't want focus if we can't be edited
+    return IsEditable() && wxControl::AcceptsFocus();
+}