]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/textctrl.cpp
Warning fixes for WinCE.
[wxWidgets.git] / src / msw / textctrl.cpp
index f7c7cb3adae6e4f7143397ba7d28f71b7294449b..c4c015a3df0024bea86a8f923faf61cf37972178 100644 (file)
@@ -162,9 +162,9 @@ wxBEGIN_PROPERTIES_TABLE(wxTextCtrl)
     wxEVENT_PROPERTY( TextUpdated , wxEVT_COMMAND_TEXT_UPDATED , wxCommandEvent ) 
     wxEVENT_PROPERTY( TextEnter , wxEVT_COMMAND_TEXT_ENTER , wxCommandEvent )
 
-    wxPROPERTY( Font , wxFont , SetFont , GetFont  ,, 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
+    wxPROPERTY( Font , wxFont , SetFont , GetFont  , EMPTY_MACROVALUE, 0 /*flags*/ , wxT("Helpstring") , wxT("group") )
        wxPROPERTY( Value , wxString , SetValue, GetValue, wxString() , 0 /*flags*/ , wxT("Helpstring") , wxT("group"))
-    wxPROPERTY_FLAGS( WindowStyle , wxTextCtrlStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
+    wxPROPERTY_FLAGS( WindowStyle , wxTextCtrlStyle , long , SetWindowStyleFlag , GetWindowStyleFlag , EMPTY_MACROVALUE , 0 /*flags*/ , wxT("Helpstring") , wxT("group")) // style
 wxEND_PROPERTIES_TABLE()
 
 wxBEGIN_HANDLERS_TABLE(wxTextCtrl)
@@ -239,6 +239,11 @@ bool wxTextCtrl::Create(wxWindow *parent, wxWindowID id,
                         const wxValidator& validator,
                         const wxString& name)
 {
+#ifdef __WXWINCE__
+    if ((style & wxBORDER_MASK) == 0)
+        style |= wxBORDER_SIMPLE;
+#endif
+
     // base initialization
     if ( !CreateBase(parent, id, pos, size, style, validator, name) )
         return FALSE;
@@ -1176,7 +1181,7 @@ bool wxTextCtrl::IsEditable() const
 
 void wxTextCtrl::SetSelection(long from, long to)
 {
-    // if from and to are both -1, it means (in wxWindows) that all text should
+    // if from and to are both -1, it means (in wxWidgets) that all text should
     // be selected - translate into Windows convention
     if ( (from == -1) && (to == -1) )
     {
@@ -1684,11 +1689,6 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
             break;
 
         case WXK_TAB:
-            // 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.
-
             // ok, so this is getting absolutely ridiculous but I don't see
             // any other way to fix this bug: when a multiline text control is
             // inside a wxFrame, we need to generate the navigation event as
@@ -1703,15 +1703,24 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
             // the right thing to do would, of course, be to understand what
             // the hell is IsDialogMessage() doing but this is beyond my feeble
             // forces at the moment unfortunately
-            if ( FindFocus() == this )
+            if ( !(m_windowStyle & wxTE_PROCESS_TAB))
             {
-                wxNavigationKeyEvent eventNav;
-                eventNav.SetDirection(!event.ShiftDown());
-                eventNav.SetWindowChange(event.ControlDown());
-                eventNav.SetEventObject(this);
-
-                if ( GetParent()->GetEventHandler()->ProcessEvent(eventNav) )
-                    return;
+                if ( FindFocus() == this )
+                {
+                    int flags = 0;
+                    if (!event.ShiftDown())
+                        flags |= wxNavigationKeyEvent::IsForward ;
+                    if (event.ControlDown())
+                        flags |= wxNavigationKeyEvent::WinChange ;
+                    if (Navigate(flags))
+                        return;
+                }
+            }
+            else
+            {
+                // Insert tab since calling the default Windows handler
+                // doesn't seem to do it
+                WriteText(wxT("\t"));
             }
             break;
     }
@@ -2301,7 +2310,7 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
             cf.dwEffects |= CFE_UNDERLINE;
         }
 
-        // strikeout fonts are not supported by wxWindows
+        // strikeout fonts are not supported by wxWidgets
     }
 
     if ( style.HasTextColour() )
@@ -2359,12 +2368,11 @@ bool wxTextCtrl::SetStyle(long start, long end, const wxTextAttr& style)
 
     if (style.HasLeftIndent())
     {
-        pf.dwMask |= PFM_STARTINDENT;
+        pf.dwMask |= PFM_STARTINDENT | PFM_OFFSET;
 
         // Convert from 1/10 mm to TWIPS
         pf.dxStartIndent = (int) (((double) style.GetLeftIndent()) * mm2twips / 10.0) ;
-
-        // TODO: do we need to specify dxOffset?
+        pf.dxOffset = (int) (((double) style.GetLeftSubIndent()) * mm2twips / 10.0) ;
     }
 
     if (style.HasRightIndent())
@@ -2526,7 +2534,7 @@ bool wxTextCtrl::GetStyle(long position, wxTextAttr& style)
     // do format the selection
     (void) ::SendMessage(GetHwnd(), EM_GETPARAFORMAT, 0, (LPARAM) &pf) ;
 
-    style.SetLeftIndent( (int) ((double) pf.dxStartIndent * twips2mm * 10.0) );
+    style.SetLeftIndent( (int) ((double) pf.dxStartIndent * twips2mm * 10.0), (int) ((double) pf.dxOffset * twips2mm * 10.0) );
     style.SetRightIndent( (int) ((double) pf.dxRightIndent * twips2mm * 10.0) );
 
     if (pf.wAlignment == PFA_CENTER)
@@ -2542,7 +2550,7 @@ bool wxTextCtrl::GetStyle(long position, wxTextAttr& style)
     size_t i;
     for (i = 0; i < (size_t) pf.cTabCount; i++)
     {
-        tabStops[i] = (int) ((double) (pf.rgxTabs[i] & 0xFFFF) * twips2mm * 10.0) ;
+        tabStops.Add( (int) ((double) (pf.rgxTabs[i] & 0xFFFF) * twips2mm * 10.0) );
     }
 
     if ( changeSel )