]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/stattext.cpp
reSWIGged
[wxWidgets.git] / src / os2 / stattext.cpp
index 167caa3e8623e411468b098594410adbffcba4ea..4febe1ee27b750a262d0f4ab999475531cabc530 100644 (file)
@@ -83,7 +83,7 @@ bool wxStaticText::Create(
 
     wxColour                        vColour;
 
-    vColour.Set(wxString("BLACK"));
+    vColour.Set(wxString(wxT("BLACK")));
 
     LONG                            lColor = (LONG)vColour.GetPixel();
 
@@ -121,6 +121,7 @@ wxSize wxStaticText::DoGetBestSize() const
     int                             nHeightLineDefault = 0;
     int                             nHeightLine = 0;
     wxString                        sCurLine;
+    bool                            bLastWasAmpersand = FALSE;
 
     for (const wxChar *pc = sText; ; pc++)
     {
@@ -161,6 +162,29 @@ wxSize wxStaticText::DoGetBestSize() const
         }
         else
         {
+            //
+            // We shouldn't take into account the '&' which just introduces the
+            // mnemonic characters and so are not shown on the screen -- except
+            // when it is preceded by another '&' in which case it stands for a
+            // literal ampersand
+            //
+            if (*pc == _T('&'))
+            {
+                if (!bLastWasAmpersand)
+                {
+                    bLastWasAmpersand = TRUE;
+
+                    //
+                    // Skip the statement adding pc to curLine below
+                    //
+                    continue;
+                }
+
+                //
+                // It is a literal ampersand
+                //
+                bLastWasAmpersand = FALSE;
+            }
             sCurLine += *pc;
         }
     }
@@ -211,7 +235,7 @@ void wxStaticText::SetLabel(
   const wxString&                   rsLabel
 )
 {
-    ::WinSetWindowText(GetHwnd(), rsLabel.c_str());
+    ::WinSetWindowText(GetHwnd(), (PSZ)rsLabel.c_str());
 
     //
     // Adjust the size of the window to fit to the label unless autoresizing is