qt: fix unicode character display on osx when building with 10.7 sdk

Conflicts:
	src/qt/bitcoin.cpp

Rebased-From: 292cc072
This commit is contained in:
Cory Fields 2014-08-06 15:06:40 -04:00 committed by Wladimir J. van der Laan
parent bba0175022
commit f62031b895
No known key found for this signature in database
GPG Key ID: 74810B012346C9A6
4 changed files with 35 additions and 0 deletions

View File

@ -61,6 +61,7 @@ Wallet:
GUI: GUI:
- fix 'opens in testnet mode when presented with a BIP-72 link with no fallback' - fix 'opens in testnet mode when presented with a BIP-72 link with no fallback'
- AvailableCoins: acquire cs_main mutex - AvailableCoins: acquire cs_main mutex
- Fix unicode character display on MacOSX
Miscellaneous: Miscellaneous:
- key.cpp: fail with a friendlier message on missing ssl EC support - key.cpp: fail with a friendlier message on missing ssl EC support

View File

@ -475,6 +475,9 @@ int main(int argc, char *argv[])
#endif #endif
Q_INIT_RESOURCE(bitcoin); Q_INIT_RESOURCE(bitcoin);
GUIUtil::SubstituteFonts();
BitcoinApplication app(argc, argv); BitcoinApplication app(argc, argv);
#if QT_VERSION > 0x050100 #if QT_VERSION > 0x050100
// Generate high-dpi pixmaps // Generate high-dpi pixmaps

View File

@ -61,6 +61,13 @@
static boost::filesystem::detail::utf8_codecvt_facet utf8; static boost::filesystem::detail::utf8_codecvt_facet utf8;
#endif #endif
#if defined(Q_OS_MAC)
extern double NSAppKitVersionNumber;
#if !defined(NSAppKitVersionNumber10_9)
#define NSAppKitVersionNumber10_9 1265
#endif
#endif
namespace GUIUtil { namespace GUIUtil {
QString dateTimeStr(const QDateTime &date) QString dateTimeStr(const QDateTime &date)
@ -372,6 +379,26 @@ ToolTipToRichTextFilter::ToolTipToRichTextFilter(int size_threshold, QObject *pa
} }
void SubstituteFonts()
{
#if defined(Q_OS_MAC)
// Background:
// OSX's default font changed in 10.9 and QT is unable to find it with its
// usual fallback methods when building against the 10.7 sdk or lower.
// The 10.8 SDK added a function to let it find the correct fallback font.
// If this fallback is not properly loaded, some characters may fail to
// render correctly.
//
// Solution: If building with the 10.7 SDK or lower and the user's platform
// is 10.9 or higher at runtime, substitute the correct font. This needs to
// happen before the QApplication is created.
#if defined(MAC_OS_X_VERSION_MAX_ALLOWED) && MAC_OS_X_VERSION_MAX_ALLOWED < MAC_OS_X_VERSION_10_8
if (floor(NSAppKitVersionNumber) >= NSAppKitVersionNumber10_9)
QFont::insertSubstitution(".Lucida Grande UI", "Lucida Grande");
#endif
#endif
}
bool ToolTipToRichTextFilter::eventFilter(QObject *obj, QEvent *evt) bool ToolTipToRichTextFilter::eventFilter(QObject *obj, QEvent *evt)
{ {
if(evt->type() == QEvent::ToolTipChange) if(evt->type() == QEvent::ToolTipChange)

View File

@ -106,6 +106,10 @@ namespace GUIUtil
representation if needed. This assures that Qt can word-wrap long tooltip messages. representation if needed. This assures that Qt can word-wrap long tooltip messages.
Tooltips longer than the provided size threshold (in characters) are wrapped. Tooltips longer than the provided size threshold (in characters) are wrapped.
*/ */
// Replace invalid default fonts with known good ones
void SubstituteFonts();
class ToolTipToRichTextFilter : public QObject class ToolTipToRichTextFilter : public QObject
{ {
Q_OBJECT Q_OBJECT