]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/textctrl.cpp
fixed bug #429351 (compilation broken in CJK environment (whatever it is) in 'agrave...
[wxWidgets.git] / src / os2 / textctrl.cpp
index c216abe9a604e63ddca211c0b89e9c4cae5b0dba..f80abd0f4cc1b359cd87fdb1abe82f683251069f 100644 (file)
 #   include <fstream>
 #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
 )