X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/df0419d21de163005b156d0dcd6e18d19a6efed6..39d169639b01d4902583d4e541746a93a156ab78:/src/msw/textctrl.cpp diff --git a/src/msw/textctrl.cpp b/src/msw/textctrl.cpp index 7393cdf0fa..4f02fbaf85 100644 --- a/src/msw/textctrl.cpp +++ b/src/msw/textctrl.cpp @@ -30,6 +30,7 @@ #include "wx/textctrl.h" #include "wx/settings.h" #include "wx/brush.h" + #include "wx/dcclient.h" #include "wx/utils.h" #include "wx/intl.h" #include "wx/log.h" @@ -1780,8 +1781,19 @@ bool wxTextCtrl::MSWShouldPreProcessMessage(WXMSG* msg) // fall through case 0: - if ( IsMultiLine() && vkey == VK_RETURN ) - return false; + switch ( vkey ) + { + case VK_RETURN: + // This one is only special for multi line controls. + if ( !IsMultiLine() ) + break; + // fall through + + case VK_DELETE: + case VK_HOME: + case VK_END: + return false; + } // fall through case 2: break; @@ -2043,7 +2055,7 @@ bool wxTextCtrl::MSWCommand(WXUINT param, WXWORD WXUNUSED(id)) WXHBRUSH wxTextCtrl::MSWControlColor(WXHDC hDC, WXHWND hWnd) { - if ( !IsEnabled() && !HasFlag(wxTE_MULTILINE) ) + if ( !IsThisEnabled() && !HasFlag(wxTE_MULTILINE) ) return MSWControlColorDisabled(hDC); return wxTextCtrlBase::MSWControlColor(hDC, hWnd); @@ -2385,9 +2397,7 @@ bool wxTextCtrl::SetForegroundColour(const wxColour& colour) if ( IsRich() ) { // change the colour of everything - CHARFORMAT cf; - wxZeroMemory(cf); - cf.cbSize = sizeof(cf); + WinStruct cf; cf.dwMask = CFM_COLOR; cf.crTextColor = wxColourToRGB(colour); ::SendMessage(GetHwnd(), EM_SETCHARFORMAT, SCF_ALL, (LPARAM)&cf); @@ -2729,7 +2739,10 @@ bool wxTextCtrl::GetStyle(long position, wxTextAttr& style) LOGFONT lf; - lf.lfHeight = cf.yHeight; + // Convert the height from the units of 1/20th of the point in which + // CHARFORMAT stores it to pixel-based units used by LOGFONT. + const wxCoord ppi = wxClientDC(this).GetPPI().y; + lf.lfHeight = -MulDiv(cf.yHeight/20, ppi, 72); lf.lfWidth = 0; lf.lfCharSet = ANSI_CHARSET; // FIXME: how to get correct charset? lf.lfClipPrecision = 0;