]> git.saurik.com Git - wxWidgets.git/commitdiff
respect the specified font encoding in DoGetTextExtent() instead of always using...
authorVadim Zeitlin <vadim@wxwidgets.org>
Fri, 14 Apr 2006 17:34:35 +0000 (17:34 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Fri, 14 Apr 2006 17:34:35 +0000 (17:34 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@38720 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

src/gtk/dcclient.cpp

index 78269d6bbed548d3b7dde331fc207e1442e717a6..62e70ce5d6e7b7487a81d4a10a19c2eb8729da62 100644 (file)
@@ -1696,16 +1696,24 @@ void wxWindowDC::DoGetTextExtent(const wxString &string,
         *externalLeading = 0;
 
     if (string.empty())
-    {
         return;
-    }
 
-    // Set new font description
-    if (theFont)
-        pango_layout_set_font_description( m_layout, theFont->GetNativeFontInfo()->description );
+    // ensure that theFont is always non-NULL
+    if ( !theFont || !theFont->Ok() )
+        theFont = wx_const_cast(wxFont *, &m_font);
+
+    // and use it if it's valid
+    if ( theFont->Ok() )
+    {
+        pango_layout_set_font_description
+        (
+            m_layout,
+            theFont->GetNativeFontInfo()->description
+        );
+    }
 
     // Set layout's text
-    const wxCharBuffer dataUTF8 = wxGTK_CONV(string);
+    const wxCharBuffer dataUTF8 = wxGTK_CONV_FONT(string, *theFont);
     if ( !dataUTF8 )
     {
         // hardly ideal, but what else can we do if conversion failed?