X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/45bfc84b20112373b5ee5fd5a910c96b342e6e71..3dd9b88ac26caa8dbcc26c7fafc10cd886fc97ac:/src/os2/textctrl.cpp diff --git a/src/os2/textctrl.cpp b/src/os2/textctrl.cpp index c216abe9a6..f80abd0f4c 100644 --- a/src/os2/textctrl.cpp +++ b/src/os2/textctrl.cpp @@ -43,6 +43,11 @@ # include #endif +#if defined(__EMX__) && !defined(MLE_INDEX) +#define MLE_INDEX 0 +#define MLE_RGB 1 +#endif + // ---------------------------------------------------------------------------- // event tables and other macros @@ -116,14 +121,14 @@ bool wxTextCtrl::Create( // // OS2 uses normal coordinates, no bassackwards Windows ones // - vPos.y = pParent->GetSize().y - (vPos.y + rSize.y); +// vPos.y = pParent->GetSize().y - (vPos.y + rSize.y); } else { RECTL vRect; ::WinQueryWindowRect(HWND_DESKTOP, &vRect); - vPos.y = vRect.yTop - (vPos.y + rSize.y); +// vPos.y = vRect.yTop - (vPos.y + rSize.y); } m_windowStyle = lStyle; @@ -162,10 +167,10 @@ bool wxTextCtrl::Create( ,WC_MLE // Window class ,(PSZ)rsValue.c_str() // Initial Text ,(ULONG)lSstyle // Style flags - ,(LONG)vPos.x // X pos of origin - ,(LONG)vPos.y // Y pos of origin - ,(LONG)rSize.x // field width - ,(LONG)rSize.y // field height + ,(LONG)0 // X pos of origin + ,(LONG)0 // Y pos of origin + ,(LONG)0 // field width + ,(LONG)0 // field height ,(HWND)GetHwndOf(pParent) // owner window handle (same as parent ,HWND_TOP // initial z position ,(ULONG)vId // Window identifier @@ -179,10 +184,10 @@ bool wxTextCtrl::Create( ,WC_ENTRYFIELD // Window class ,(PSZ)rsValue.c_str() // Initial Text ,(ULONG)lSstyle // Style flags - ,(LONG)vPos.x // X pos of origin - ,(LONG)vPos.y // Y pos of origin - ,(LONG)rSize.x // field width - ,(LONG)rSize.y // field height + ,(LONG)0 // X pos of origin + ,(LONG)0 // Y pos of origin + ,(LONG)0 // field width + ,(LONG)0 // field height ,(HWND)GetHwndOf(pParent) // owner window handle (same as parent ,HWND_TOP // initial z position ,(ULONG)vId // Window identifier @@ -302,6 +307,19 @@ void wxTextCtrl::WriteText( const wxString& rsValue ) { + if (m_defaultStyle.HasFont() || m_defaultStyle.HasTextColour()) + { + long lStart; + long lEnd; + + GetSelection( &lStart + ,&lEnd + ); + SetStyle( lStart + ,lEnd + ,m_defaultStyle + ); + } ::WinSetWindowText(GetHwnd(), rsValue.c_str()); AdjustSpaceLimit(); } // end of wxTextCtrl::WriteText @@ -600,6 +618,52 @@ void wxTextCtrl::SetSelection( ::WinSendMsg(hWnd, EM_SETSEL, MPFROM2SHORT((USHORT)lFromChar, (USHORT)lToChar), (MPARAM)0); } // end of wxTextCtrl::SetSelection +bool wxTextCtrl::SetStyle( + long lStart +, long lEnd +, const wxTextAttr& rStyle +) +{ + HWND hWnd = GetHwnd(); + // + // Order the range if needed + // + if (lStart > lEnd) + { + long lTmp = lStart; + + lStart = lEnd; + lEnd = lTmp; + } + + // + // We can only change the format of the selection, so select the range we + // want and restore the old selection later + long lStartOld; + long lEndOld; + + GetSelection( &lStartOld + ,&lEndOld + ); + + // + // But do we really have to change the selection? + // + bool bChangeSel = lStart != lStartOld || lEnd != lEndOld; + + if (bChangeSel) + { + if (m_bIsMLE) + ::WinSendMsg(hWnd, MLM_SETSEL, MPFROM2SHORT((USHORT)lStart, (USHORT)lEnd), 0); + else + ::WinSendMsg(hWnd, EM_SETSEL, MPFROM2SHORT((USHORT)lStart, (USHORT)lEnd), 0); + } + // + // TODO:: finish this by setting fonts and colors + // + return TRUE; +} // end of wxTextCtrl::SetStyle + bool wxTextCtrl::LoadFile( const wxString& rsFile )