]> git.saurik.com Git - wxWidgets.git/blobdiff - src/x11/dcclient.cpp
Merge in from trunk r64802 - r68625
[wxWidgets.git] / src / x11 / dcclient.cpp
index 6ef0cb4f33a3304b72bce43dcf394dae911a7568..3f127c442b8cadd29f1543ef6b2601a49e2dfe9a 100644 (file)
@@ -1570,7 +1570,7 @@ void wxWindowDCImpl::DoDrawText( const wxString &text, wxCoord x, wxCoord y )
     PangoLayout *layout = pango_layout_new(m_context);
     pango_layout_set_font_description(layout, m_fontdesc);
 
     PangoLayout *layout = pango_layout_new(m_context);
     pango_layout_set_font_description(layout, m_fontdesc);
 
-    const wxCharBuffer data = wxConvUTF8.cWC2MB( text );
+    const wxScopedCharBuffer data(text.utf8_str());
     pango_layout_set_text(layout, data, data.length());
 
     // Measure layout.
     pango_layout_set_text(layout, data, data.length());
 
     // Measure layout.
@@ -1658,7 +1658,9 @@ void wxWindowDCImpl::DoGetTextExtent( const wxString &string, wxCoord *width, wx
                                 wxCoord *descent, wxCoord *externalLeading,
                                 const wxFont *font ) const
 {
                                 wxCoord *descent, wxCoord *externalLeading,
                                 const wxFont *font ) const
 {
-    wxCHECK_RET( IsOk(), wxT("invalid dc") );
+    // Do not test for DC validity here, querying text extents is supposed to
+    // work even with a non-initialized wxMemoryDC. And the code below does
+    // actually work in this case.
 
     if (string.empty())
     {
 
     if (string.empty())
     {
@@ -1675,7 +1677,7 @@ void wxWindowDCImpl::DoGetTextExtent( const wxString &string, wxCoord *width, wx
     else
         pango_layout_set_font_description(layout, m_fontdesc);
 
     else
         pango_layout_set_font_description(layout, m_fontdesc);
 
-    const wxCharBuffer data = wxConvUTF8.cWC2MB( string );
+    const wxScopedCharBuffer data(string.utf8_str());
     pango_layout_set_text(layout, data, data.length());
 
     // Measure text.
     pango_layout_set_text(layout, data, data.length());
 
     // Measure text.
@@ -1721,7 +1723,8 @@ void wxWindowDCImpl::DoGetTextExtent( const wxString &string, wxCoord *width, wx
 
 wxCoord wxWindowDCImpl::GetCharWidth() const
 {
 
 wxCoord wxWindowDCImpl::GetCharWidth() const
 {
-    wxCHECK_MSG( IsOk(), 0, wxT("invalid dc") );
+    // Do not test for DC validity here for the same reasons as in
+    // DoGetTextExtent() above.
 
 #if wxUSE_UNICODE
     PangoLayout *layout = pango_layout_new( m_context );
 
 #if wxUSE_UNICODE
     PangoLayout *layout = pango_layout_new( m_context );
@@ -1755,7 +1758,8 @@ wxCoord wxWindowDCImpl::GetCharWidth() const
 
 wxCoord wxWindowDCImpl::GetCharHeight() const
 {
 
 wxCoord wxWindowDCImpl::GetCharHeight() const
 {
-    wxCHECK_MSG( IsOk(), 0, wxT("invalid dc") );
+    // Do not test for DC validity here for the same reasons as in
+    // DoGetTextExtent() above.
 
 #if wxUSE_UNICODE
     PangoLayout *layout = pango_layout_new( m_context );
 
 #if wxUSE_UNICODE
     PangoLayout *layout = pango_layout_new( m_context );