From ab60c90879ac05a022e12d2108b877a728b5cb71 Mon Sep 17 00:00:00 2001 From: Ximi1970 Date: Fri, 8 Jul 2022 14:25:55 +0200 Subject: [PATCH 1/3] Fix close and titlebar issues --- .../SysTray-X-app/windowctrl-unix.cpp | 8 ++++++ .../SysTray-X-lib-x11/systray-x-lib-x11.cpp | 24 +++++++--------- webext/background.js | 2 ++ webext/js/windowEvent.js | 28 +++++++++++++++++-- 4 files changed, 46 insertions(+), 16 deletions(-) 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..1386b89 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..8c88c10 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.onCloseButton3(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,15 +143,33 @@ var windowListener = new (class extends ExtensionCommon.EventEmitter { } onCloseButton(event) { - windowListener.emit("close-clicked"); + console.log("Close clicked, event"); + if (event) event.preventDefault(); + windowListener.emit("close-clicked"); + return true; + } + + onCloseButton2(event) { + console.log("Close clicked, hijack"); + + if (event) event.preventDefault(); + windowListener.emit("close-clicked"); + return true; + } + + onCloseButton3(event) { + console.log("Close clicked, close func"); + + if (event) event.preventDefault(); + windowListener.emit("close-clicked"); return true; } hijackTitlebarCloseButton(window) { if ( windowListener.replaceCommand(window, "titlebar-close", function () { - return windowListener.onCloseButton(null); + return windowListener.onCloseButton2(null); }) ) { console.log("replaced command= " + "titlebar-close"); From 91737d0f725f15d9582cbfd6ab3feafdd9be0f5c Mon Sep 17 00:00:00 2001 From: Ximi1970 Date: Sat, 9 Jul 2022 16:30:14 +0200 Subject: [PATCH 2/3] Remove debug --- webext/js/windowEvent.js | 22 ++-------------------- 1 file changed, 2 insertions(+), 20 deletions(-) diff --git a/webext/js/windowEvent.js b/webext/js/windowEvent.js index 8c88c10..1dcaa33 100644 --- a/webext/js/windowEvent.js +++ b/webext/js/windowEvent.js @@ -107,7 +107,7 @@ var windowListener = new (class extends ExtensionCommon.EventEmitter { windowListener.hijackTitlebarCloseButton(window); windowListener.oldClose = window.close; - window.close = () => windowListener.onCloseButton3(null); + window.close = () => windowListener.onCloseButton(null); console.log("Close listener added"); } @@ -143,24 +143,6 @@ var windowListener = new (class extends ExtensionCommon.EventEmitter { } onCloseButton(event) { - console.log("Close clicked, event"); - - if (event) event.preventDefault(); - windowListener.emit("close-clicked"); - return true; - } - - onCloseButton2(event) { - console.log("Close clicked, hijack"); - - if (event) event.preventDefault(); - windowListener.emit("close-clicked"); - return true; - } - - onCloseButton3(event) { - console.log("Close clicked, close func"); - if (event) event.preventDefault(); windowListener.emit("close-clicked"); return true; @@ -169,7 +151,7 @@ var windowListener = new (class extends ExtensionCommon.EventEmitter { hijackTitlebarCloseButton(window) { if ( windowListener.replaceCommand(window, "titlebar-close", function () { - return windowListener.onCloseButton2(null); + return windowListener.onCloseButton(null); }) ) { console.log("replaced command= " + "titlebar-close"); From 518ef5099addde1b5c2daf67884043fba37f0cc7 Mon Sep 17 00:00:00 2001 From: Ximi1970 Date: Sat, 9 Jul 2022 16:52:52 +0200 Subject: [PATCH 3/3] Disable debug --- webext/background.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/webext/background.js b/webext/background.js index 1386b89..003f879 100644 --- a/webext/background.js +++ b/webext/background.js @@ -362,7 +362,7 @@ SysTrayX.Messaging = { }, onCloseButton: function () { - console.debug("Minimize all") + //console.debug("Minimize all") SysTrayX.Link.postSysTrayXMessage({ window: "minimized_all" }); /*