From: Václav Slavík Date: Wed, 16 Jun 2004 21:00:18 +0000 (+0000) Subject: fixed incorrect handling of scaled fonts and fixed GetNativeFontInfo to return meanin... X-Git-Url: https://git.saurik.com/wxWidgets.git/commitdiff_plain/38de94271f5550b4c644a513c828a0210269e1a8?hp=a0f428c6adc58d15b21ec6e07effcf25a4b34ec5 fixed incorrect handling of scaled fonts and fixed GetNativeFontInfo to return meaningful data with GTK1 git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@27840 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775 --- diff --git a/src/gtk/font.cpp b/src/gtk/font.cpp index 3989eea3bf..20ce420439 100644 --- a/src/gtk/font.cpp +++ b/src/gtk/font.cpp @@ -786,8 +786,13 @@ const wxNativeFontInfo *wxFont::GetNativeFontInfo() const wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") ); #ifndef __WXGTK20__ - if ( M_FONTDATA->m_nativeFontInfo.GetXFontName().empty() ) + if ( !M_FONTDATA->HasNativeFont() ) + { + // NB: this call has important side-effect: it not only finds + // GdkFont representation, it also initializes m_nativeFontInfo + // by calling its SetXFontName method GetInternalFont(); + } #endif return &(M_FONTDATA->m_nativeFontInfo); @@ -938,7 +943,7 @@ GdkFont *wxFont::GetInternalFont( float scale ) const if ( !font ) { // do we have the XLFD? - if ( M_FONTDATA->HasNativeFont() ) + if ( int_scale == 100 && M_FONTDATA->HasNativeFont() ) { font = wxLoadFont(M_FONTDATA->m_nativeFontInfo.GetXFontName()); } @@ -955,6 +960,10 @@ GdkFont *wxFont::GetInternalFont( float scale ) const M_FONTDATA->m_faceName, M_FONTDATA->m_encoding, &xfontname); + // NB: wxFont::GetNativeFontInfo relies on this + // side-effect of GetInternalFont + if ( int_scale == 100 ) + M_FONTDATA->m_nativeFontInfo.SetXFontName(xfontname); } } diff --git a/src/gtk1/font.cpp b/src/gtk1/font.cpp index 3989eea3bf..20ce420439 100644 --- a/src/gtk1/font.cpp +++ b/src/gtk1/font.cpp @@ -786,8 +786,13 @@ const wxNativeFontInfo *wxFont::GetNativeFontInfo() const wxCHECK_MSG( Ok(), (wxNativeFontInfo *)NULL, wxT("invalid font") ); #ifndef __WXGTK20__ - if ( M_FONTDATA->m_nativeFontInfo.GetXFontName().empty() ) + if ( !M_FONTDATA->HasNativeFont() ) + { + // NB: this call has important side-effect: it not only finds + // GdkFont representation, it also initializes m_nativeFontInfo + // by calling its SetXFontName method GetInternalFont(); + } #endif return &(M_FONTDATA->m_nativeFontInfo); @@ -938,7 +943,7 @@ GdkFont *wxFont::GetInternalFont( float scale ) const if ( !font ) { // do we have the XLFD? - if ( M_FONTDATA->HasNativeFont() ) + if ( int_scale == 100 && M_FONTDATA->HasNativeFont() ) { font = wxLoadFont(M_FONTDATA->m_nativeFontInfo.GetXFontName()); } @@ -955,6 +960,10 @@ GdkFont *wxFont::GetInternalFont( float scale ) const M_FONTDATA->m_faceName, M_FONTDATA->m_encoding, &xfontname); + // NB: wxFont::GetNativeFontInfo relies on this + // side-effect of GetInternalFont + if ( int_scale == 100 ) + M_FONTDATA->m_nativeFontInfo.SetXFontName(xfontname); } }