]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/textctrl.cpp
adding a few methods for selection handling in native combobox
[wxWidgets.git] / src / msw / textctrl.cpp
index fa977a9896b4b65792aae54326fb12e010ecaac7..e285303d8dca2e57c0c6f5d7f55370662b4f399a 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)
@@ -199,9 +199,6 @@ BEGIN_EVENT_TABLE(wxTextCtrl, wxControl)
     EVT_UPDATE_UI(wxID_REDO, wxTextCtrl::OnUpdateRedo)
     EVT_UPDATE_UI(wxID_CLEAR, wxTextCtrl::OnUpdateDelete)
     EVT_UPDATE_UI(wxID_SELECTALL, wxTextCtrl::OnUpdateSelectAll)
-#ifdef __WIN16__
-    EVT_ERASE_BACKGROUND(wxTextCtrl::OnEraseBackground)
-#endif
 
     EVT_SET_FOCUS(wxTextCtrl::OnSetFocus)
 END_EVENT_TABLE()
@@ -242,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;
@@ -1194,7 +1196,6 @@ void wxTextCtrl::DoSetSelection(long from, long to, bool scrollCaret)
 {
     HWND hWnd = GetHwnd();
 
-#ifdef __WIN32__
 #if wxUSE_RICHEDIT
     if ( IsRich() )
     {
@@ -1250,10 +1251,6 @@ void wxTextCtrl::DoSetSelection(long from, long to, bool scrollCaret)
         }
 #endif // wxUSE_RICHEDIT
     }
-#else // Win16
-    // WPARAM is 0: selection is scrolled into view
-    SendMessage(hWnd, EM_SETSEL, (WPARAM)0, (LPARAM)MAKELONG(from, to));
-#endif // Win32/16
 }
 
 // ----------------------------------------------------------------------------
@@ -1867,40 +1864,8 @@ WXHBRUSH wxTextCtrl::OnCtlColor(WXHDC pDC, WXHWND WXUNUSED(pWnd), WXUINT WXUNUSE
     return (WXHBRUSH)brush->GetResourceHandle();
 }
 
-// In WIN16, need to override normal erasing because
-// Ctl3D doesn't use the wxWindows background colour.
-#ifdef __WIN16__
-void wxTextCtrl::OnEraseBackground(wxEraseEvent& event)
-{
-    wxColour col(m_backgroundColour);
-
-#if wxUSE_CTL3D
-    if (m_useCtl3D)
-        col = wxSystemSettings::GetColour(wxSYS_COLOUR_WINDOW);
-#endif
-
-    RECT rect;
-    ::GetClientRect(GetHwnd(), &rect);
-
-    COLORREF ref = wxColourToRGB(col);
-    HBRUSH hBrush = ::CreateSolidBrush(ref);
-    if ( !hBrush )
-        wxLogLastError(wxT("CreateSolidBrush"));
-
-    HDC hdc = (HDC)event.GetDC()->GetHDC();
-
-    int mode = ::SetMapMode(hdc, MM_TEXT);
-
-    ::FillRect(hdc, &rect, hBrush);
-    ::DeleteObject(hBrush);
-    ::SetMapMode(hdc, mode);
-
-}
-#endif // Win16
-
 bool wxTextCtrl::AdjustSpaceLimit()
 {
-#ifndef __WIN16__
     unsigned int limit = ::SendMessage(GetHwnd(), EM_GETLIMITTEXT, 0, 0);
 
     // HACK: we try to automatically extend the limit for the amount of text
@@ -1942,7 +1907,6 @@ bool wxTextCtrl::AdjustSpaceLimit()
             ::SendMessage(GetHwnd(), EM_LIMITTEXT, limit, 0);
         }
     }
-#endif // !Win16
 
     // we changed the limit
     return TRUE;
@@ -2400,12 +2364,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())
@@ -2567,7 +2530,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)
@@ -2583,7 +2546,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 )