diff --git a/app/SysTray-X/SysTray-X-app/windowctrl-unix.cpp b/app/SysTray-X/SysTray-X-app/windowctrl-unix.cpp index 3bb4ffd..2a54945 100644 --- a/app/SysTray-X/SysTray-X-app/windowctrl-unix.cpp +++ b/app/SysTray-X/SysTray-X-app/windowctrl-unix.cpp @@ -23,6 +23,9 @@ #include #include #include +#if QT_VERSION >= QT_VERSION_CHECK(5, 4, 0) +#include +#endif #include @@ -827,8 +830,13 @@ void WindowCtrlUnix::normalizeWindow( quint64 window ) /* * Let us wait a bit, maybe this helps... */ +#if QT_VERSION < QT_VERSION_CHECK(5, 4, 0) QTime state_wait; +#else + QElapsedTimer state_wait; +#endif state_wait.start(); + bool win_normal = false; while( state_wait.elapsed() < 1000 && !win_normal ) { diff --git a/app/SysTray-X/SysTray-X-lib-x11/systray-x-lib-x11.cpp b/app/SysTray-X/SysTray-X-lib-x11/systray-x-lib-x11.cpp index 7add030..d5b7e0a 100644 --- a/app/SysTray-X/SysTray-X-lib-x11/systray-x-lib-x11.cpp +++ b/app/SysTray-X/SysTray-X-lib-x11/systray-x-lib-x11.cpp @@ -417,22 +417,18 @@ void GetWindowFrameExtensions( void *display, quint64 window, long* left, lon unsigned long remain; unsigned long len; unsigned char* list = NULL; - XEvent event; - while( XGetWindowProperty( dsp, window, prop, 0, 4, False, AnyPropertyType, - &type, &format, &len, &remain, &list ) != Success || len != 4 || remain != 0 || - XPending( dsp ) > 0 ) + if( XGetWindowProperty( dsp, window, prop, 0, 4, False, AnyPropertyType, + &type, &format, &len, &remain, &list ) == Success ) { - XNextEvent( dsp, &event ); - } - - if( list && len == 4 ) - { - long* extents = (long*)list; - *left = extents[ 0 ]; - *right = extents[ 1 ]; - *top = extents[ 2 ]; - *bottom = extents[ 3 ]; + if( list && len == 4 ) + { + long* extents = (long*)list; + *left = extents[ 0 ]; + *right = extents[ 1 ]; + *top = extents[ 2 ]; + *bottom = extents[ 3 ]; + } } if( list ) diff --git a/webext/background.js b/webext/background.js index 0819f76..003f879 100644 --- a/webext/background.js +++ b/webext/background.js @@ -362,6 +362,8 @@ SysTrayX.Messaging = { }, onCloseButton: function () { + //console.debug("Minimize all") + SysTrayX.Link.postSysTrayXMessage({ window: "minimized_all" }); /* browser.windows.update(browser.windows.WINDOW_ID_CURRENT, { diff --git a/webext/js/windowEvent.js b/webext/js/windowEvent.js index e02d47a..1dcaa33 100644 --- a/webext/js/windowEvent.js +++ b/webext/js/windowEvent.js @@ -105,6 +105,10 @@ var windowListener = new (class extends ExtensionCommon.EventEmitter { true ); windowListener.hijackTitlebarCloseButton(window); + + windowListener.oldClose = window.close; + window.close = () => windowListener.onCloseButton(null); + console.log("Close listener added"); } }, @@ -129,6 +133,8 @@ var windowListener = new (class extends ExtensionCommon.EventEmitter { windowListener.onCloseButton, true ); + window.close = windowListener.oldClose; + console.log("Close listener removed"); } } @@ -137,8 +143,8 @@ var windowListener = new (class extends ExtensionCommon.EventEmitter { } onCloseButton(event) { - windowListener.emit("close-clicked"); if (event) event.preventDefault(); + windowListener.emit("close-clicked"); return true; }