]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/stattext.cpp
wxFileCtrl::Update was hiding wxWindow::Update
[wxWidgets.git] / src / os2 / stattext.cpp
index 0491f7b260bd92fc785f31b952e1701029f4588c..871921424161b0a23dd6521ec26fbc713e0c8e41 100644 (file)
@@ -20,6 +20,7 @@
 #include "wx/event.h"
 #include "wx/app.h"
 #include "wx/brush.h"
+#include "wx/scrolwin.h"
 #endif
 
 #include "wx/stattext.h"
@@ -45,7 +46,7 @@ bool wxStaticText::Create(
     SetBackgroundColour(pParent->GetBackgroundColour()) ;
     SetForegroundColour(pParent->GetForegroundColour()) ;
 
-    if ( id == -1 )
+    if ( vId == -1 )
         m_windowId = (int)NewControlId();
     else
         m_windowId = vId;
@@ -66,6 +67,15 @@ bool wxStaticText::Create(
         lSstyle |= DT_RIGHT;
     else
         lSstyle |= DT_LEFT;
+    //
+    // If the parent is a scrolled window the controls must
+    // have this style or they will overlap the scrollbars
+    //
+    if (pParent)
+        if (pParent->IsKindOf(CLASSINFO(wxScrolledWindow)) ||
+            pParent->IsKindOf(CLASSINFO(wxGenericScrolledWindow)))
+            lSstyle |= WS_CLIPSIBLINGS;
+
     m_hWnd = (WXHWND)::WinCreateWindow( (HWND)GetHwndOf(pParent) // Parent window handle
                                        ,WC_STATIC                // Window class
                                        ,(PSZ)rsLabel.c_str()     // Initial Text
@@ -80,10 +90,33 @@ bool wxStaticText::Create(
 
     wxCHECK_MSG(m_hWnd, FALSE, wxT("Failed to create static ctrl"));
 
+    wxColour                        vColour;
+
+    vColour.Set(wxString("BLACK"));
+
+    LONG                            lColor = (LONG)vColour.GetPixel();
+
+    ::WinSetPresParam( m_hWnd
+                      ,PP_FOREGROUNDCOLOR
+                      ,sizeof(LONG)
+                      ,(PVOID)&lColor
+                     );
+    lColor = (LONG)m_backgroundColour.GetPixel();
+
+    ::WinSetPresParam( m_hWnd
+                      ,PP_BACKGROUNDCOLOR
+                      ,sizeof(LONG)
+                      ,(PVOID)&lColor
+                     );
+
     SubclassWin(m_hWnd);
-    wxControl::SetFont(pParent->GetFont());
-    SetSize(nX, nY, nWidth, nHeight);
-    return FALSE;
+    wxControl::SetFont(*wxSMALL_FONT);
+    SetSize( nX
+            ,nY
+            ,nWidth
+            ,nHeight
+           );
+    return TRUE;
 } // end of wxStaticText::Create
 
 wxSize wxStaticText::DoGetBestSize() const
@@ -96,7 +129,7 @@ wxSize wxStaticText::DoGetBestSize() const
     int                             nHeightLine = 0;
     wxString                        sCurLine;
 
-    for ( const wxChar *pc = sText; ; pc++ )
+    for (const wxChar *pc = sText; ; pc++)
     {
         if ( *pc == wxT('\n') || *pc == wxT('\0') )
         {
@@ -143,22 +176,26 @@ wxSize wxStaticText::DoGetBestSize() const
                  );
 } // end of wxStaticText::DoGetBestSize
 
-void wxStaticText::SetLabel(
-  const wxString&                   rsLabel
+void wxStaticText::DoSetSize(
+  int                               nX
+, int                               nY
+, int                               nWidth
+, int                               nHeight
+, int                               nSizeFlags
 )
 {
-    ::WinSetWindowText(GetHwnd(), rsLabel.c_str());
-
     //
-    // Adjust the size of the window to fit to the label unless autoresizing is
-    // disabled
+    // We need to refresh the window after changing its size as the standard
+    // control doesn't always update itself properly.
     //
-    if (!(GetWindowStyle() & wxST_NO_AUTORESIZE))
-    {
-        DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
-    }
-    DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
-} // end of wxStaticText::SetLabel
+    wxStaticTextBase::DoSetSize( nX
+                                ,nY
+                                ,nWidth
+                                ,nHeight
+                                ,nSizeFlags
+                               );
+    Refresh();
+} // end of wxStaticText::DoSetSize
 
 bool wxStaticText::SetFont(
   const wxFont&                     rFont
@@ -177,6 +214,23 @@ bool wxStaticText::SetFont(
     return bRet;
 } // end of wxStaticText::SetFont
 
+void wxStaticText::SetLabel(
+  const wxString&                   rsLabel
+)
+{
+    ::WinSetWindowText(GetHwnd(), rsLabel.c_str());
+
+    //
+    // Adjust the size of the window to fit to the label unless autoresizing is
+    // disabled
+    //
+    if (!(GetWindowStyle() & wxST_NO_AUTORESIZE))
+    {
+        DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
+    }
+    DoSetSize(-1, -1, -1, -1, wxSIZE_AUTO_WIDTH | wxSIZE_AUTO_HEIGHT);
+} // end of wxStaticText::SetLabel
+
 MRESULT wxStaticText::OS2WindowProc(
   WXUINT                            uMsg
 , WXWPARAM                          wParam
@@ -188,5 +242,3 @@ MRESULT wxStaticText::OS2WindowProc(
                                    ,lParam
                                   );
 } // end of wxStaticText::OS2WindowProc
-
-