]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/stattext.cpp
Don't generate duplicated events for clicks on tree +/- buttons.
[wxWidgets.git] / src / os2 / stattext.cpp
index d8af7b31c712548cb0774029665771c2f97f145c..6285c011da193541af0852934042c9c8ba0ebe8c 100644 (file)
@@ -12,6 +12,8 @@
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
+#include "wx/stattext.h"
+
 #ifndef WX_PRECOMP
     #include "wx/event.h"
     #include "wx/app.h"
@@ -19,7 +21,6 @@
     #include "wx/scrolwin.h"
 #endif
 
-#include "wx/stattext.h"
 #include "wx/os2/private.h"
 #include <stdio.h>
 
@@ -65,11 +66,9 @@ bool wxStaticText::Create( wxWindow*        pParent,
     else
         lSstyle |= DT_LEFT;
 
-    wxString sLabel = ::wxPMTextToLabel(rsLabel);
-
     m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
                                        ,WC_STATIC                // Window class
-                                       ,(PSZ)sLabel.c_str()      // Initial Text
+                                       ,NULL                     // Initial Text
                                        ,(ULONG)lSstyle           // Style flags
                                        ,0L, 0L, 0L, 0L           // Origin -- 0 size
                                        ,(HWND)GetHwndOf(pParent) // owner window handle (same as parent
@@ -102,12 +101,14 @@ bool wxStaticText::Create( wxWindow*        pParent,
     SetYComp(0);
     SetSize( nX, nY, nWidth, nHeight );
 
+    SetLabel(rsLabel);
+
     return true;
 } // end of wxStaticText::Create
 
 wxSize wxStaticText::DoGetBestSize() const
 {
-    wxString sText(wxGetWindowText(GetHWND()));
+    wxString sText(GetLabel());
     int      nWidthTextMax = 0;
     int      nWidthLine = 0;
     int      nHeightTextTotal = 0;
@@ -130,7 +131,7 @@ wxSize wxStaticText::DoGetBestSize() const
                 if (!nHeightLineDefault)
                     nHeightLineDefault = nHeightLine;
                 if (!nHeightLineDefault)
-                    GetTextExtent(_T("W"), NULL, &nHeightLineDefault);
+                    GetTextExtent(wxT("W"), NULL, &nHeightLineDefault);
                 nHeightTextTotal += nHeightLineDefault;
             }
             else
@@ -161,7 +162,7 @@ wxSize wxStaticText::DoGetBestSize() const
             // when it is preceded by another '~' in which case it stands for a
             // literal tilde
             //
-            if (*pc == _T('~'))
+            if (*pc == wxT('~'))
             {
                 if (!bLastWasTilde)
                 {
@@ -204,6 +205,10 @@ void wxStaticText::DoSetSize(
                                 ,nHeight
                                 ,nSizeFlags
                                );
+
+    // eventually update label (if ellipsizing is on):
+    UpdateLabel();
+
     Refresh();
 } // end of wxStaticText::DoSetSize
 
@@ -228,14 +233,18 @@ void wxStaticText::SetLabel(
   const wxString&                   rsLabel
 )
 {
-    wxString                        sLabel = ::wxPMTextToLabel(rsLabel);
-    ::WinSetWindowText(GetHwnd(), (PSZ)sLabel.c_str());
+    m_labelOrig = rsLabel;       // save original label
+
+    // OS/2 does not support neither ellipsize nor markup in static text:
+    DoSetLabel(rsLabel);
+    DoSetLabel(GetEllipsizedLabelWithoutMarkup());
 
     //
     // Adjust the size of the window to fit to the label unless autoresizing is
     // disabled
     //
-    if (!(GetWindowStyle() & wxST_NO_AUTORESIZE))
+    if (!(GetWindowStyle() & wxST_NO_AUTORESIZE) &&
+        !IsEllipsized())
     {
         wxCoord                     vX;
         wxCoord                     vY;
@@ -262,3 +271,18 @@ MRESULT wxStaticText::OS2WindowProc(
                                    ,lParam
                                   );
 } // end of wxStaticText::OS2WindowProc
+
+
+// for wxST_ELLIPSIZE_* support:
+
+void wxStaticText::DoSetLabel(const wxString& str)
+{
+    wxString sLabel = ::wxPMTextToLabel(str);
+    ::WinSetWindowText(GetHwnd(), sLabel.c_str());
+}
+
+wxString wxStaticText::DoGetLabel() const
+{
+    return wxGetWindowText(GetHwnd());
+}
+