Browse Source

Yet another attempt at implementing "minimize to tray" that works on all OSes

miguelfreitas
Wladimir J. van der Laan 13 years ago
parent
commit
08ed96d856
  1. 17
      src/qt/bitcoingui.cpp

17
src/qt/bitcoingui.cpp

@ -48,6 +48,7 @@
#include <QMovie> #include <QMovie>
#include <QFileDialog> #include <QFileDialog>
#include <QDesktopServices> #include <QDesktopServices>
#include <QTimer>
#include <QDragEnterEvent> #include <QDragEnterEvent>
#include <QUrl> #include <QUrl>
@ -558,29 +559,21 @@ void BitcoinGUI::error(const QString &title, const QString &message)
void BitcoinGUI::changeEvent(QEvent *e) void BitcoinGUI::changeEvent(QEvent *e)
{ {
QMainWindow::changeEvent(e);
#ifndef Q_WS_MAC // Ignored on Mac #ifndef Q_WS_MAC // Ignored on Mac
if(e->type() == QEvent::WindowStateChange) if(e->type() == QEvent::WindowStateChange)
{ {
if(clientModel && clientModel->getOptionsModel()->getMinimizeToTray()) if(clientModel && clientModel->getOptionsModel()->getMinimizeToTray())
{ {
QWindowStateChangeEvent *wsevt = static_cast<QWindowStateChangeEvent*>(e); QWindowStateChangeEvent *wsevt = static_cast<QWindowStateChangeEvent*>(e);
bool wasMinimized = wsevt->oldState() & Qt::WindowMinimized; if(!(wsevt->oldState() & Qt::WindowMinimized) && isMinimized())
bool isMinimized = windowState() & Qt::WindowMinimized;
if(!wasMinimized && isMinimized)
{
// Minimized, hide the window from taskbar
setWindowFlags(windowFlags() | Qt::Tool);
return;
}
else if(wasMinimized && !isMinimized)
{ {
// Unminimized, show the window in taskbar QTimer::singleShot(0, this, SLOT(hide()));
setWindowFlags(windowFlags() &~ Qt::Tool); e->ignore();
} }
} }
} }
#endif #endif
QMainWindow::changeEvent(e);
} }
void BitcoinGUI::closeEvent(QCloseEvent *event) void BitcoinGUI::closeEvent(QCloseEvent *event)

Loading…
Cancel
Save