]> git.saurik.com Git - wxWidgets.git/commitdiff
Added the static text patch for multiline text
authorRobert Roebling <robert@roebling.de>
Tue, 18 Aug 1998 07:09:00 +0000 (07:09 +0000)
committerRobert Roebling <robert@roebling.de>
Tue, 18 Aug 1998 07:09:00 +0000 (07:09 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@584 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/stattext.cpp
src/gtk1/stattext.cpp

index b125eeb11f7e152f29aeb16fe5a3b6189e2687fb..b533595706d45cac26daf633a6787ee94f1e5212 100644 (file)
@@ -54,8 +54,40 @@ bool wxStaticText::Create( wxWindow *parent, wxWindowID id, const wxString &labe
     justify = GTK_JUSTIFY_LEFT;
   gtk_label_set_justify(GTK_LABEL(m_widget), justify);
   
-  if (newSize.x == -1) newSize.x = gdk_string_measure( m_widget->style->font, label );
-  if (newSize.y == -1) newSize.y = 26;
+   int y = 1;
+   if (newSize.x == -1) {
+     char *s = WXSTRINGCAST m_label;
+     char *nl = strchr(s, '\n');
+     if (nl) {
+       do {
+         *nl = 0;
+         int x = gdk_string_measure( m_widget->style->font, s );
+         if (x > newSize.x) {
+           newSize.x = x;
+         }
+         *nl++ = '\n';
+         if ((nl = strchr(s = nl, '\n'))) {
+           ++y;
+         } else {
+           int x = gdk_string_measure( m_widget->style->font, s );
+           if (x > newSize.x) {
+             newSize.x = x;
+           }
+         }
+       } while (nl);
+     } else {
+       newSize.x = gdk_string_measure( m_widget->style->font, label );
+     }
+   }
+   if (newSize.y == -1) {
+     if (y == 1) {
+       newSize.y = 26;
+     } else {
+       newSize.y
+         = y * (m_widget->style->font->ascent +m_widget->style->font->descent);
+     }
+   }
+  
   SetSize( newSize.x, newSize.y );
   
   PostCreation();
index b125eeb11f7e152f29aeb16fe5a3b6189e2687fb..b533595706d45cac26daf633a6787ee94f1e5212 100644 (file)
@@ -54,8 +54,40 @@ bool wxStaticText::Create( wxWindow *parent, wxWindowID id, const wxString &labe
     justify = GTK_JUSTIFY_LEFT;
   gtk_label_set_justify(GTK_LABEL(m_widget), justify);
   
-  if (newSize.x == -1) newSize.x = gdk_string_measure( m_widget->style->font, label );
-  if (newSize.y == -1) newSize.y = 26;
+   int y = 1;
+   if (newSize.x == -1) {
+     char *s = WXSTRINGCAST m_label;
+     char *nl = strchr(s, '\n');
+     if (nl) {
+       do {
+         *nl = 0;
+         int x = gdk_string_measure( m_widget->style->font, s );
+         if (x > newSize.x) {
+           newSize.x = x;
+         }
+         *nl++ = '\n';
+         if ((nl = strchr(s = nl, '\n'))) {
+           ++y;
+         } else {
+           int x = gdk_string_measure( m_widget->style->font, s );
+           if (x > newSize.x) {
+             newSize.x = x;
+           }
+         }
+       } while (nl);
+     } else {
+       newSize.x = gdk_string_measure( m_widget->style->font, label );
+     }
+   }
+   if (newSize.y == -1) {
+     if (y == 1) {
+       newSize.y = 26;
+     } else {
+       newSize.y
+         = y * (m_widget->style->font->ascent +m_widget->style->font->descent);
+     }
+   }
+  
   SetSize( newSize.x, newSize.y );
   
   PostCreation();