]> git.saurik.com Git - wxWidgets.git/blobdiff - src/msw/textctrl.cpp
use the window default colours, not hardcoded ones, in OnSysColourChanged()
[wxWidgets.git] / src / msw / textctrl.cpp
index 91ca4d8ce44e417c371b819746c9d2d31721be55..f7c7cb3adae6e4f7143397ba7d28f71b7294449b 100644 (file)
@@ -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()
@@ -688,7 +685,7 @@ struct wxStreamOutData
 };
 
 DWORD CALLBACK
-wxRichEditStreamOut(DWORD dwCookie, BYTE *buf, LONG cb, LONG *pcb)
+wxRichEditStreamOut(DWORD_PTR dwCookie, BYTE *buf, LONG cb, LONG *pcb)
 {
     *pcb = 0;
 
@@ -1194,7 +1191,6 @@ void wxTextCtrl::DoSetSelection(long from, long to, bool scrollCaret)
 {
     HWND hWnd = GetHwnd();
 
-#ifdef __WIN32__
 #if wxUSE_RICHEDIT
     if ( IsRich() )
     {
@@ -1250,10 +1246,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
 }
 
 // ----------------------------------------------------------------------------
@@ -1728,9 +1720,9 @@ void wxTextCtrl::OnChar(wxKeyEvent& event)
     event.Skip();
 }
 
-long wxTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
+WXLRESULT wxTextCtrl::MSWWindowProc(WXUINT nMsg, WXWPARAM wParam, WXLPARAM lParam)
 {
-    long lRc = wxTextCtrlBase::MSWWindowProc(nMsg, wParam, lParam);
+    WXLRESULT lRc = wxTextCtrlBase::MSWWindowProc(nMsg, wParam, lParam);
 
     if ( nMsg == WM_GETDLGCODE )
     {
@@ -1867,40 +1859,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 +1902,6 @@ bool wxTextCtrl::AdjustSpaceLimit()
             ::SendMessage(GetHwnd(), EM_LIMITTEXT, limit, 0);
         }
     }
-#endif // !Win16
 
     // we changed the limit
     return TRUE;
@@ -1963,13 +1922,17 @@ wxSize wxTextCtrl::DoGetBestSize() const
 
     int wText = DEFAULT_ITEM_WIDTH;
 
-    int hText = EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy);
+    int hText = cy;
     if ( m_windowStyle & wxTE_MULTILINE )
     {
         hText *= wxMax(GetNumberOfLines(), 5);
     }
     //else: for single line control everything is ok
 
+    // we have to add the adjustments for the control height only once, not
+    // once per line, so do it after multiplication above
+    hText += EDIT_HEIGHT_FROM_CHAR_HEIGHT(cy) - cy;
+
     return wxSize(wText, hText);
 }