From 84f8551f3ab2ee1be72590278855972e7f200c94 Mon Sep 17 00:00:00 2001 From: Philip Kaufmann Date: Thu, 21 Nov 2013 17:59:31 +0100 Subject: [PATCH] [Qt] misc small Mac related changes/cleanups - cleanup Info.plist.in and specify high DPI mode enable command as per http://blog.qt.digia.com/blog/2013/04/25/retina-display-support-for-mac-os-ios-and-x11/ - move setting of QApplication::setAttribute() to bitcoin.cpp and add attribute for enabling use of high DPI pixmaps for Qt >= 5.1 - add missing setWindowTitle() on Mac - cleanup Mac / non-Mac setup in bitcoingui.cpp --- share/qt/Info.plist.in | 13 ++++++++++++- src/qt/bitcoin.cpp | 7 +++++++ src/qt/bitcoingui.cpp | 20 ++++++++++++-------- 3 files changed, 31 insertions(+), 9 deletions(-) diff --git a/share/qt/Info.plist.in b/share/qt/Info.plist.in index d0dd79656..54ced278f 100644 --- a/share/qt/Info.plist.in +++ b/share/qt/Info.plist.in @@ -4,18 +4,25 @@ CFBundleIconFile bitcoin.icns + CFBundlePackageType APPL + CFBundleGetInfoString @CLIENT_VERSION_MAJOR@.@CLIENT_VERSION_MINOR@, Copyright © 2009-@COPYRIGHT_YEAR@ The Bitcoin developers + CFBundleShortVersionString @CLIENT_VERSION_MAJOR@.@CLIENT_VERSION_MINOR@ + CFBundleVersion @CLIENT_VERSION_MAJOR@.@CLIENT_VERSION_MINOR@ + CFBundleSignature ???? + CFBundleExecutable Bitcoin-Qt + CFBundleIdentifier org.bitcoinfoundation.Bitcoin-Qt @@ -69,7 +76,11 @@ Owner + + NSPrincipalClass + NSApplication + NSHighResolutionCapable - + True diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 2f9e205c8..2b3bf3bfb 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -200,6 +200,13 @@ int main(int argc, char *argv[]) Q_INIT_RESOURCE(bitcoin); QApplication app(argc, argv); +#if QT_VERSION > 0x050100 + // Generate high-dpi pixmaps + QApplication::setAttribute(Qt::AA_UseHighDpiPixmaps); +#endif +#ifdef Q_OS_MAC + QApplication::setAttribute(Qt::AA_DontShowIconsInMenus); +#endif // Register meta types used for QMetaObject::invokeMethod qRegisterMetaType< bool* >(); diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index b3a566428..b1daba5cb 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -69,28 +69,32 @@ BitcoinGUI::BitcoinGUI(bool fIsTestnet, QWidget *parent) : { GUIUtil::restoreWindowGeometry("nWindow", QSize(850, 550), this); -#ifndef Q_OS_MAC if (!fIsTestnet) { setWindowTitle(tr("Bitcoin") + " - " + tr("Wallet")); +#ifndef Q_OS_MAC QApplication::setWindowIcon(QIcon(":icons/bitcoin")); setWindowIcon(QIcon(":icons/bitcoin")); +#else + MacDockIconHandler::instance()->setIcon(QIcon(":icons/bitcoin")); +#endif } else { setWindowTitle(tr("Bitcoin") + " - " + tr("Wallet") + " " + tr("[testnet]")); +#ifndef Q_OS_MAC QApplication::setWindowIcon(QIcon(":icons/bitcoin_testnet")); setWindowIcon(QIcon(":icons/bitcoin_testnet")); - } #else - setUnifiedTitleAndToolBarOnMac(true); - QApplication::setAttribute(Qt::AA_DontShowIconsInMenus); - - if (!fIsTestnet) - MacDockIconHandler::instance()->setIcon(QIcon(":icons/bitcoin")); - else MacDockIconHandler::instance()->setIcon(QIcon(":icons/bitcoin_testnet")); #endif + } + +#if defined(Q_OS_MAC) && QT_VERSION < 0x050000 + // This property is not implemented in Qt 5. Setting it has no effect. + // A replacement API (QtMacUnifiedToolBar) is available in QtMacExtras. + setUnifiedTitleAndToolBarOnMac(true); +#endif // Create wallet frame and make it the central widget walletFrame = new WalletFrame(this);