]> git.saurik.com Git - wxWidgets.git/blobdiff - src/mac/carbon/stattext.cpp
fixes for Raise() to work correctly with both top level and child windows
[wxWidgets.git] / src / mac / carbon / stattext.cpp
index 783d231f9b1134122053e0c6fc1aa6a14b148780..86c4fd7158a7c81ada8f0736be3d8c47b64369fb 100644 (file)
@@ -28,7 +28,7 @@ IMPLEMENT_DYNAMIC_CLASS(wxStaticText, wxControl)
 
 #include <wx/mac/uma.h>
 
 
 #include <wx/mac/uma.h>
 
-BEGIN_EVENT_TABLE(wxStaticText, wxControl)
+BEGIN_EVENT_TABLE(wxStaticText, wxStaticTextBase)
     EVT_PAINT(wxStaticText::OnPaint)
 END_EVENT_TABLE()
 
     EVT_PAINT(wxStaticText::OnPaint)
 END_EVENT_TABLE()
 
@@ -52,7 +52,7 @@ bool wxStaticText::Create(wxWindow *parent, wxWindowID id,
     m_label = label ;
 
        bool ret = wxControl::Create( parent, id, pos, size, style , wxDefaultValidator , name );
     m_label = label ;
 
        bool ret = wxControl::Create( parent, id, pos, size, style , wxDefaultValidator , name );
-       SetSizeOrDefault( size ) ;
+       SetBestSize( size ) ;
     
     return ret;
 }
     
     return ret;
 }
@@ -189,14 +189,17 @@ void wxStaticText::OnPaint( wxPaintEvent &event )
 
 wxSize wxStaticText::DoGetBestSize() const
 {
 
 wxSize wxStaticText::DoGetBestSize() const
 {
-       int x , y  ;
-   int widthTextMax = 0, widthLine,
+       int x,y ;
+    int widthTextMax = 0, widthLine,
         heightTextTotal = 0, heightLineDefault = 0, heightLine = 0;
         heightTextTotal = 0, heightLineDefault = 0, heightLine = 0;
-
+        
     wxString curLine;
     wxString curLine;
-    for ( const wxChar *pc = m_label; ; pc++ ) {
-        if ( *pc == wxT('\n') || *pc == wxT('\0') ) {
-            if ( !curLine ) {
+    for ( const wxChar *pc = m_label; ; pc++ )
+    {
+        if ( *pc == wxT('\n') || *pc == wxT('\0') )
+        {
+            if ( !curLine )
+            {
                 // we can't use GetTextExtent - it will return 0 for both width
                 // and height and an empty line should count in height
                 // calculation
                 // we can't use GetTextExtent - it will return 0 for both width
                 // and height and an empty line should count in height
                 // calculation
@@ -206,12 +209,17 @@ wxSize wxStaticText::DoGetBestSize() const
                     GetTextExtent(_T("W"), NULL, &heightLineDefault);
 
                 heightTextTotal += heightLineDefault;
                     GetTextExtent(_T("W"), NULL, &heightLineDefault);
 
                 heightTextTotal += heightLineDefault;
+                
+                heightTextTotal++;  // FIXME: why is this necessary?
             }
             }
-            else {
+            else
+            {
                 GetTextExtent(curLine, &widthLine, &heightLine);
                 if ( widthLine > widthTextMax )
                     widthTextMax = widthLine;
                 heightTextTotal += heightLine;
                 GetTextExtent(curLine, &widthLine, &heightLine);
                 if ( widthLine > widthTextMax )
                     widthTextMax = widthLine;
                 heightTextTotal += heightLine;
+                
+                heightTextTotal++;  // FIXME: why is this necessary?
             }
 
             if ( *pc == wxT('\n') ) {
             }
 
             if ( *pc == wxT('\n') ) {
@@ -235,7 +243,7 @@ void wxStaticText::SetLabel(const wxString& st )
        SetTitle( st ) ;
        m_label = st ;
        if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
        SetTitle( st ) ;
        m_label = st ;
        if ( !(GetWindowStyle() & wxST_NO_AUTORESIZE) )
-               SetSizeOrDefault() ;
+               SetSize( GetBestSize() ) ;
 
        Refresh() ;     
        MacUpdateImmediately() ;
 
        Refresh() ;     
        MacUpdateImmediately() ;