From de5fd92ed2fa528d265ec34bc2f26d9efc8dfcb6 Mon Sep 17 00:00:00 2001 From: Maxime Rijnders Date: Mon, 24 Feb 2020 15:25:11 +0100 Subject: [PATCH 1/2] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 9a111da..ca16931 100644 --- a/README.md +++ b/README.md @@ -8,7 +8,8 @@ The add-on and system tray application can do: - display number of unread mails - show / hide Thunderbird (minimize) - minimizing hides to tray -- minimize on close +- minimize on close (Linux) +- to be implemented: minimize on close (Windows) - to be implemented: start a new mail - to be implemented: open the last used account From 8b50d7bef88657946696e48a139f195080151a3d Mon Sep 17 00:00:00 2001 From: Ximi1970 Date: Mon, 24 Feb 2020 15:53:20 +0100 Subject: [PATCH 2/2] Try to catch some events --- app/SysTray-X/SysTray-X.pro | 8 +++++++- app/SysTray-X/container.cpp | 32 +++++++++++++++++++++++++++----- app/SysTray-X/container.h | 17 ++++++++++++++++- 3 files changed, 50 insertions(+), 7 deletions(-) diff --git a/app/SysTray-X/SysTray-X.pro b/app/SysTray-X/SysTray-X.pro index 22a9ddc..a5740ee 100644 --- a/app/SysTray-X/SysTray-X.pro +++ b/app/SysTray-X/SysTray-X.pro @@ -35,8 +35,14 @@ unix:!macx: { QMAKE_LFLAGS += -lX11 } win32: { - LIBS += User32.lib # QMAKE_LFLAGS += -static -lwinpthread -static-libgcc -static-libstdc++ $$(QMAKE_LFLAGS_WINDOWS) + + # + # Windows host (not used in cross compiling with mingw on Linux) + # + contains(QMAKE_HOST.os, Windows): { + LIBS += User32.lib + } } unix:macx: { QMAKE_LFLAGS += -framework IOKit -framework Foundation diff --git a/app/SysTray-X/container.cpp b/app/SysTray-X/container.cpp index 4041065..96ee7a1 100644 --- a/app/SysTray-X/container.cpp +++ b/app/SysTray-X/container.cpp @@ -16,6 +16,8 @@ #include #include +#include + /* * Constructor */ @@ -81,12 +83,34 @@ void Container::closeEvent( QCloseEvent *event ) } } -#ifdef FF_NEET + +bool Container::eventFilter( QObject* watched, QEvent* event ) +{ + if( event->type() == QEvent::WindowStateChange) + { + QWindowStateChangeEvent* e = static_cast(event); + QWindow* window = reinterpret_cast(watched); + + if( ( window->windowState() == Qt::WindowMinimized ) + && ( e->oldState() != Qt::WindowMinimized ) ) + { + // Restore old state + window->setWindowState( reinterpret_cast(event)->oldState() ); + return true; + } + } + + // Do not filter event + return false; +} + + +#ifdef FF_NEET /* * Override the minimize event */ -void Container::changeEvent( QEvent * event ) +void Container::changeEvent( QEvent* event ) { switch( event->type() ) { @@ -94,8 +118,7 @@ void Container::changeEvent( QEvent * event ) { if( isMinimized() ) { - setWindowState(reinterpret_cast(event)->oldState()); - event->accept(); + hide(); } break; @@ -110,7 +133,6 @@ void Container::changeEvent( QEvent * event ) #endif - /** * @brief slotMinimizeOnClose. Hnadle preference minimize on close signal. */ diff --git a/app/SysTray-X/container.h b/app/SysTray-X/container.h index c8eae11..c23ac54 100644 --- a/app/SysTray-X/container.h +++ b/app/SysTray-X/container.h @@ -42,6 +42,10 @@ class Container : public QWidget */ void removeWidget( QWidget* widget ); + protected: + + bool eventFilter( QObject* obj, QEvent* ev ); + private: /** @@ -49,7 +53,18 @@ class Container : public QWidget * * @param event The event. */ - void closeEvent( QCloseEvent *event ); + void closeEvent( QCloseEvent* event ); + +#ifdef FF_NEET + + /** + * @brief changeEvent. Override minimize event handler. + * + * @param event The event + */ + void changeEvent( QEvent* event ); + +#endif signals: