]> git.saurik.com Git - wxWidgets.git/commitdiff
added support for underlined fonts
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 2 Feb 2007 01:27:44 +0000 (01:27 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 2 Feb 2007 01:27:44 +0000 (01:27 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@44343 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

docs/changes.txt
src/gtk/stattext.cpp

index e5bd0f3e5bf2cdef48f54855f0e2f30ffcc4c3d6..e472d53b51d1d7acde31f63ba07b1140db794b5c 100644 (file)
@@ -21,8 +21,15 @@ Major new features in this release
 2.9.0
 -----
 
+All:
+
 - Added wxSizerFlags::Top() and Bottom()
 
+wxGTK:
+
+- Implemented support for underlined fonts in wxStaticText
+
+
 
 2.8.2
 -----
index 8d2c1e01b42f31ed49675a3ed9896fb14f5693af..4f90978241ccb0cc6f9c823e152a00e3e2ccefde 100644 (file)
@@ -129,8 +129,34 @@ void wxStaticText::SetLabel( const wxString &label )
 
 bool wxStaticText::SetFont( const wxFont &font )
 {
+    const bool wasUnderlined = GetFont().GetUnderlined();
+
     bool ret = wxControl::SetFont(font);
 
+    if ( font.GetUnderlined() != wasUnderlined )
+    {
+        // the underlines for mnemonics are incompatible with using attributes
+        // so turn them off when setting underlined font and restore them when
+        // unsetting it
+        gtk_label_set_use_underline(GTK_LABEL(m_widget), wasUnderlined);
+
+        if ( wasUnderlined )
+        {
+            // it's not underlined any more, remove the attributes we set
+            gtk_label_set_attributes(GTK_LABEL(m_widget), NULL);
+        }
+        else // the text is underlined now
+        {
+            PangoAttrList *attrs = pango_attr_list_new();
+            PangoAttribute *a = pango_attr_underline_new(PANGO_UNDERLINE_SINGLE);
+            a->start_index = 0;
+            a->end_index = -1;
+            pango_attr_list_insert(attrs, a);
+            gtk_label_set_attributes(GTK_LABEL(m_widget), attrs);
+            pango_attr_list_unref(attrs);
+        }
+    }
+
     // adjust the label size to the new label unless disabled
     if (!HasFlag(wxST_NO_AUTORESIZE))
     {