From 94723e27adf04eb62b3cdb40ead503ee5f40cab4 Mon Sep 17 00:00:00 2001 From: Janne Pulkkinen Date: Sat, 3 Sep 2011 20:05:54 +0300 Subject: [PATCH] Pull request #21: windows fixes/cleanup by Matoking --- src/qt/bitcoin.cpp | 19 ---------------- src/qt/bitcoingui.cpp | 53 +++++++++++++++++++++++++++++++++++++++++-- src/qt/bitcoingui.h | 2 ++ 3 files changed, 53 insertions(+), 21 deletions(-) diff --git a/src/qt/bitcoin.cpp b/src/qt/bitcoin.cpp index 6f4815758..daba512ad 100644 --- a/src/qt/bitcoin.cpp +++ b/src/qt/bitcoin.cpp @@ -5,7 +5,6 @@ #include "clientmodel.h" #include "walletmodel.h" #include "optionsmodel.h" -#include "qtwin.h" #include "headers.h" #include "init.h" @@ -150,24 +149,6 @@ int main(int argc, char *argv[]) window.setClientModel(&clientModel); window.setWalletModel(&walletModel); - if (QtWin::isCompositionEnabled()) - { -#ifdef Q_OS_WIN - // Windows-specific customization - window.setAttribute(Qt::WA_TranslucentBackground); - window.setAttribute(Qt::WA_NoSystemBackground, false); - QPalette pal = window.palette(); - QColor bg = pal.window().color(); - bg.setAlpha(0); - pal.setColor(QPalette::Window, bg); - window.setPalette(pal); - window.ensurePolished(); - window.setAttribute(Qt::WA_StyledBackground, false); -#endif - QtWin::extendFrameIntoClientArea(&window); - window.setContentsMargins(0, 0, 0, 0); - } - window.show(); app.exec(); diff --git a/src/qt/bitcoingui.cpp b/src/qt/bitcoingui.cpp index 95646b1df..6d8060d17 100644 --- a/src/qt/bitcoingui.cpp +++ b/src/qt/bitcoingui.cpp @@ -21,6 +21,7 @@ #include "guiconstants.h" #include "askpassphrasedialog.h" #include "notificator.h" +#include "qtwin.h" #include #include @@ -159,6 +160,16 @@ BitcoinGUI::BitcoinGUI(QWidget *parent): // Doubleclicking on a transaction on the transaction history page shows details connect(transactionView, SIGNAL(doubleClicked(QModelIndex)), transactionView, SLOT(showDetails())); +#ifdef Q_OS_WIN + // Windows-specific customization + if (QtWin::isCompositionEnabled()) + { + QtWin::extendFrameIntoClientArea(&window); + window.setContentsMargins(0, 0, 0, 0); + } +#endif + setWindowComposition(); + gotoOverviewPage(); } @@ -216,7 +227,7 @@ void BitcoinGUI::createActions() connect(quitAction, SIGNAL(triggered()), qApp, SLOT(quit())); connect(optionsAction, SIGNAL(triggered()), this, SLOT(optionsClicked())); connect(aboutAction, SIGNAL(triggered()), this, SLOT(aboutClicked())); - connect(openBitcoinAction, SIGNAL(triggered()), this, SLOT(show())); + connect(openBitcoinAction, SIGNAL(triggered()), this, SLOT(showNormal())); connect(encryptWalletAction, SIGNAL(triggered(bool)), this, SLOT(encryptWallet(bool))); connect(changePassphraseAction, SIGNAL(triggered()), this, SLOT(changePassphrase())); } @@ -297,9 +308,10 @@ void BitcoinGUI::trayIconActivated(QSystemTrayIcon::ActivationReason reason) { if(reason == QSystemTrayIcon::Trigger) { - // Doubleclick on system tray icon triggers "open bitcoin" + // Click on system tray icon triggers "open bitcoin" openBitcoinAction->trigger(); } + } void BitcoinGUI::optionsClicked() @@ -414,10 +426,12 @@ void BitcoinGUI::changeEvent(QEvent *e) } else { + show(); e->accept(); } } } + setWindowComposition(); QMainWindow::changeEvent(e); } @@ -431,6 +445,41 @@ void BitcoinGUI::closeEvent(QCloseEvent *event) QMainWindow::closeEvent(event); } +void BitcoinGUI::setWindowComposition() +{ +#ifdef Q_OS_WIN + // Make the background transparent on Windows Vista or 7, except when maximized + // Otherwise text becomes hard to read + if (QtWin::isCompositionEnabled()) + { + QPalette pal = palette(); + QColor bg = pal.window().color(); + if(isMaximized()) + { + setAttribute(Qt::WA_TranslucentBackground, false); + setAttribute(Qt::WA_StyledBackground, true); + QBrush wb = pal.window(); + bg = wb.color(); + bg.setAlpha(255); + pal.setColor(QPalette::Window, bg); + setPalette(pal); + + } + else + { + setAttribute(Qt::WA_TranslucentBackground); + setAttribute(Qt::WA_StyledBackground, false); + bg.setAlpha(0); + pal.setColor(QPalette::Window, bg); + setPalette(pal); + setAttribute(Qt::WA_NoSystemBackground, false); + ensurePolished(); + setAttribute(Qt::WA_StyledBackground, false); + } + } +#endif +} + void BitcoinGUI::askFee(qint64 nFeeRequired, bool *payFee) { QString strMessage = diff --git a/src/qt/bitcoingui.h b/src/qt/bitcoingui.h index 59661350c..97af431f4 100644 --- a/src/qt/bitcoingui.h +++ b/src/qt/bitcoingui.h @@ -99,6 +99,8 @@ public slots: */ void askFee(qint64 nFeeRequired, bool *payFee); + void setWindowComposition(); + private slots: // UI pages void gotoOverviewPage();