X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/f15b49521a67a10b47374c04723d5534a131dcb0..8af27d1dee477e3e52aa60d73b19d46f531374b7:/src/os2/stattext.cpp diff --git a/src/os2/stattext.cpp b/src/os2/stattext.cpp index 141ccf59a3..5b214b0987 100644 --- a/src/os2/stattext.cpp +++ b/src/os2/stattext.cpp @@ -66,6 +66,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 +89,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; + SetSize( nX + ,nY + ,nWidth + ,nHeight + ); + return TRUE; } // end of wxStaticText::Create wxSize wxStaticText::DoGetBestSize() const @@ -96,7 +128,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 +175,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 +213,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