]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/stattext.cpp
Fix after removal of PRIOR/NEXT in common headers (duplicates change in GTK2 sources).
[wxWidgets.git] / src / os2 / stattext.cpp
index 4febe1ee27b750a262d0f4ab999475531cabc530..a344877e2bde55a4b73ea80c68c36f6dcbdde21a 100644 (file)
@@ -9,10 +9,6 @@
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
 // Licence:     wxWindows licence
 /////////////////////////////////////////////////////////////////////////////
 
-#ifdef __GNUG__
-#pragma implementation "stattext.h"
-#endif
-
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
@@ -60,16 +56,22 @@ bool wxStaticText::Create(
 
     long                            lSstyle = 0L;
 
 
     long                            lSstyle = 0L;
 
-    lSstyle = WS_VISIBLE | SS_TEXT | DT_VCENTER;
+    // Used to have DT_VCENTER but that doesn't work correctly with
+    // multiline strings and DT_WORDBREAK. Accept a reasonable
+    // compromise for now
+    lSstyle = WS_VISIBLE | SS_TEXT | DT_WORDBREAK | DT_MNEMONIC;
     if (m_windowStyle & wxALIGN_CENTRE)
         lSstyle |= DT_CENTER;
     else if (m_windowStyle & wxALIGN_RIGHT)
         lSstyle |= DT_RIGHT;
     else
         lSstyle |= DT_LEFT;
     if (m_windowStyle & wxALIGN_CENTRE)
         lSstyle |= DT_CENTER;
     else if (m_windowStyle & wxALIGN_RIGHT)
         lSstyle |= DT_RIGHT;
     else
         lSstyle |= DT_LEFT;
+
+    wxString                        sLabel = ::wxPMTextToLabel(rsLabel);
+
     m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
                                        ,WC_STATIC                // Window class
     m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
                                        ,WC_STATIC                // Window class
-                                       ,(PSZ)rsLabel.c_str()     // Initial Text
+                                       ,(PSZ)sLabel.c_str()      // Initial Text
                                        ,(ULONG)lSstyle           // Style flags
                                        ,0L, 0L, 0L, 0L           // Origin -- 0 size
                                        ,(HWND)GetHwndOf(pParent) // owner window handle (same as parent
                                        ,(ULONG)lSstyle           // Style flags
                                        ,0L, 0L, 0L, 0L           // Origin -- 0 size
                                        ,(HWND)GetHwndOf(pParent) // owner window handle (same as parent
@@ -121,7 +123,7 @@ wxSize wxStaticText::DoGetBestSize() const
     int                             nHeightLineDefault = 0;
     int                             nHeightLine = 0;
     wxString                        sCurLine;
     int                             nHeightLineDefault = 0;
     int                             nHeightLine = 0;
     wxString                        sCurLine;
-    bool                            bLastWasAmpersand = FALSE;
+    bool                            bLastWasTilde = FALSE;
 
     for (const wxChar *pc = sText; ; pc++)
     {
 
     for (const wxChar *pc = sText; ; pc++)
     {
@@ -163,16 +165,16 @@ wxSize wxStaticText::DoGetBestSize() const
         else
         {
             //
         else
         {
             //
-            // We shouldn't take into account the '&' which just introduces the
+            // We shouldn't take into account the '~' which just introduces the
             // mnemonic characters and so are not shown on the screen -- except
             // 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
+            // when it is preceded by another '~' in which case it stands for a
+            // literal tilde
             //
             //
-            if (*pc == _T('&'))
+            if (*pc == _T('~'))
             {
             {
-                if (!bLastWasAmpersand)
+                if (!bLastWasTilde)
                 {
                 {
-                    bLastWasAmpersand = TRUE;
+                    bLastWasTilde = TRUE;
 
                     //
                     // Skip the statement adding pc to curLine below
 
                     //
                     // Skip the statement adding pc to curLine below
@@ -181,9 +183,9 @@ wxSize wxStaticText::DoGetBestSize() const
                 }
 
                 //
                 }
 
                 //
-                // It is a literal ampersand
+                // It is a literal tilde
                 //
                 //
-                bLastWasAmpersand = FALSE;
+                bLastWasTilde = FALSE;
             }
             sCurLine += *pc;
         }
             }
             sCurLine += *pc;
         }
@@ -235,7 +237,8 @@ void wxStaticText::SetLabel(
   const wxString&                   rsLabel
 )
 {
   const wxString&                   rsLabel
 )
 {
-    ::WinSetWindowText(GetHwnd(), (PSZ)rsLabel.c_str());
+    wxString                        sLabel = ::wxPMTextToLabel(rsLabel);
+    ::WinSetWindowText(GetHwnd(), (PSZ)sLabel.c_str());
 
     //
     // Adjust the size of the window to fit to the label unless autoresizing is
 
     //
     // Adjust the size of the window to fit to the label unless autoresizing is