Replace wxFONTFAMILY_DEFAULT with wxFONTFAMILY_SWISS when comparing fonts.

Otherwise comparison always failed as no existing fonts had
wxFONTFAMILY_DEFAULT as their family in all ports except wxOSX, which does
keep wxFONTFAMILY_DEFAULT.

Closes #15410.

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74660 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Vadim Zeitlin
2013-08-16 11:04:39 +00:00
parent 31fda0c2cf
commit 00dc8bac3c

View File

@@ -818,6 +818,17 @@ wxFont *wxFontList::FindOrCreateFont(int pointSize,
const wxString& facename,
wxFontEncoding encoding)
{
// In all ports but wxOSX, the effective family of a font created using
// wxFONTFAMILY_DEFAULT is wxFONTFAMILY_SWISS so this is what we need to
// use for comparison.
//
// In wxOSX the original wxFONTFAMILY_DEFAULT seems to be kept and it uses
// a different font than wxFONTFAMILY_SWISS anyhow so we just preserve it.
#ifndef __WXOSX__
if ( family == wxFONTFAMILY_DEFAULT )
family = wxFONTFAMILY_SWISS;
#endif // !__WXOSX__
wxFont *font;
wxList::compatibility_iterator node;
for (node = list.GetFirst(); node; node = node->GetNext())
@@ -829,18 +840,7 @@ wxFont *wxFontList::FindOrCreateFont(int pointSize,
font->GetWeight () == weight &&
font->GetUnderlined () == underline )
{
wxFontFamily fontFamily = (wxFontFamily)font->GetFamily();
#if defined(__WXGTK__)
// under GTK the default family is wxSWISS, so looking for a font
// with wxDEFAULT family should return a wxSWISS one instead of
// creating a new one
bool same = (fontFamily == family) ||
(fontFamily == wxFONTFAMILY_SWISS && family == wxFONTFAMILY_DEFAULT);
#else // !GTK
// VZ: but why elsewhere do we require an exact match? mystery...
bool same = fontFamily == family;
#endif // GTK/!GTK
bool same = font->GetFamily() == family;
// empty facename matches anything at all: this is bad because
// depending on which fonts are already created, we might get back