diff --git a/9000-fix-lose-cursor-issue.patch b/9000-fix-lose-cursor-issue.patch new file mode 100644 index 0000000000000000000000000000000000000000..75f82824cacc84ca426465bc09540351606df57b --- /dev/null +++ b/9000-fix-lose-cursor-issue.patch @@ -0,0 +1,145 @@ +From 1b797d6e15ece7f87af2d86be4ad19f885619285 Mon Sep 17 00:00:00 2001 +From: root +Date: Wed, 26 Oct 2022 13:43:00 +0800 +Subject: [PATCH] =?UTF-8?q?fix:=20=E6=A1=8C=E9=9D=A2=E6=96=87=E4=BB=B6?= + =?UTF-8?q?=E9=87=8D=E5=91=BD=E5=90=8D=E7=84=A6=E7=82=B9=E4=B8=A2=E5=A4=B1?= +MIME-Version: 1.0 +Content-Type: text/plain; charset=UTF-8 +Content-Transfer-Encoding: 8bit + +bugfix for BUG165587 BUG165577 BUG165563 +--- + xcb/windoweventhook.cpp | 88 +---------------------------------------- + xcb/windoweventhook.h | 3 -- + 2 files changed, 2 insertions(+), 89 deletions(-) + +diff --git a/xcb/windoweventhook.cpp b/xcb/windoweventhook.cpp +index 4c4bd78..8543a1f 100644 +--- a/xcb/windoweventhook.cpp ++++ b/xcb/windoweventhook.cpp +@@ -326,21 +326,6 @@ void WindowEventHook::handleClientMessageEvent(QXcbWindow *window, const xcb_cli + } + } + +-bool WindowEventHook::relayFocusToModalWindow(QWindow *w, QXcbConnection *connection) +-{ +- QWindow *modal_window = 0; +- if (QGuiApplicationPrivate::instance()->isWindowBlocked(w,&modal_window) && modal_window != w) { +- if (!modal_window->isExposed()) +- return false; +- +- modal_window->requestActivate(); +- connection->flush(); +- return true; +- } +- +- return false; +-} +- + void WindowEventHook::handleFocusInEvent(QXcbWindow *window, const xcb_focus_in_event_t *event) + { + // Ignore focus events that are being sent only because the pointer is over +@@ -357,63 +342,7 @@ void WindowEventHook::handleFocusInEvent(QXcbWindow *window, const xcb_focus_in_ + return; + } + +- if (relayFocusToModalWindow(w, window->connection())) +- return; +- +-#if QT_VERSION >= QT_VERSION_CHECK(5, 13, 0) +- window->connection()->focusInTimer().stop(); +-#endif +- +-#if QT_VERSION >= QT_VERSION_CHECK(5, 9, 0) +- window->connection()->setFocusWindow(w); +-#else +- window->connection()->setFocusWindow(static_cast(w->handle())); +-#endif +- +- QWindowSystemInterface::handleWindowActivated(w, Qt::ActiveWindowFocusReason); +-} +- +-enum QX11EmbedMessageType { +- XEMBED_EMBEDDED_NOTIFY = 0, +- XEMBED_WINDOW_ACTIVATE = 1, +- XEMBED_WINDOW_DEACTIVATE = 2, +- XEMBED_REQUEST_FOCUS = 3, +- XEMBED_FOCUS_IN = 4, +- XEMBED_FOCUS_OUT = 5, +- XEMBED_FOCUS_NEXT = 6, +- XEMBED_FOCUS_PREV = 7, +- XEMBED_MODALITY_ON = 10, +- XEMBED_MODALITY_OFF = 11, +- XEMBED_REGISTER_ACCELERATOR = 12, +- XEMBED_UNREGISTER_ACCELERATOR = 13, +- XEMBED_ACTIVATE_ACCELERATOR = 14 +-}; +- +-static bool focusInPeeker(QXcbConnection *connection, xcb_generic_event_t *event) +-{ +- if (!event) { +- // FocusIn event is not in the queue, proceed with FocusOut normally. +- QWindowSystemInterface::handleWindowActivated(0, Qt::ActiveWindowFocusReason); +- return true; +- } +- uint response_type = event->response_type & ~0x80; +- if (response_type == XCB_FOCUS_IN) { +- // Ignore focus events that are being sent only because the pointer is over +- // our window, even if the input focus is in a different window. +- xcb_focus_in_event_t *e = (xcb_focus_in_event_t *) event; +- if (e->detail != XCB_NOTIFY_DETAIL_POINTER) +- return true; +- } +- +- /* We are also interested in XEMBED_FOCUS_IN events */ +- if (response_type == XCB_CLIENT_MESSAGE) { +- xcb_client_message_event_t *cme = (xcb_client_message_event_t *)event; +- if (cme->type == connection->atom(QXcbAtom::_XEMBED) +- && cme->data.data32[1] == XEMBED_FOCUS_IN) +- return true; +- } +- +- return false; ++ VtableHook::callOriginalFun(window, &QXcbWindow::handleFocusInEvent, event); + } + + void WindowEventHook::handleFocusOutEvent(QXcbWindow *window, const xcb_focus_out_event_t *event) +@@ -428,20 +357,7 @@ void WindowEventHook::handleFocusOutEvent(QXcbWindow *window, const xcb_focus_ou + if (event->detail == XCB_NOTIFY_DETAIL_POINTER) + return; + +- QWindow *w = static_cast(QObjectPrivate::get(window->window()))->eventReceiver(); +- +- if (relayFocusToModalWindow(w, window->connection())) +- return; +- +- window->connection()->setFocusWindow(0); +- // Do not set the active window to 0 if there is a FocusIn coming. +- // There is however no equivalent for XPutBackEvent so register a +- // callback for QXcbConnection instead. +-#if QT_VERSION >= QT_VERSION_CHECK(5, 13, 0) +- window->connection()->focusInTimer().start(100); +-#else +- window->connection()->addPeekFunc(focusInPeeker); +-#endif ++ VtableHook::callOriginalFun(window, &QXcbWindow::handleFocusOutEvent, event); + } + + void WindowEventHook::handlePropertyNotifyEvent(QXcbWindowEventListener *el, const xcb_property_notify_event_t *event) +diff --git a/xcb/windoweventhook.h b/xcb/windoweventhook.h +index 308d30a..83a3939 100644 +--- a/xcb/windoweventhook.h ++++ b/xcb/windoweventhook.h +@@ -44,9 +44,6 @@ public: + #else + static bool windowEvent(QXcbWindow *window, QEvent *event); + #endif +- +-private: +- static bool relayFocusToModalWindow(QWindow *w, QXcbConnection *connection); + }; + + DPP_END_NAMESPACE +-- +2.27.0 + diff --git a/dde-qt5platform-plugins-5.0.25.1.tar.gz b/dde-qt5platform-plugins-5.0.25.1.tar.gz deleted file mode 100644 index 57404e1c4188662b08a55318a0854325ca0ea242..0000000000000000000000000000000000000000 Binary files a/dde-qt5platform-plugins-5.0.25.1.tar.gz and /dev/null differ diff --git a/dde-qt5platform-plugins-5.0.42.tar.gz b/dde-qt5platform-plugins-5.0.42.tar.gz new file mode 100644 index 0000000000000000000000000000000000000000..746ea5265f0f0877b777c3684f84c165e1a80a59 Binary files /dev/null and b/dde-qt5platform-plugins-5.0.42.tar.gz differ diff --git a/qt5platform-plugins.spec b/qt5platform-plugins.spec index 0a718c86ece915ec8e63fd99af1dbc0cf0e75a88..eb10ebd1b21f4ac586eb1d32ea43e0644033d666 100644 --- a/qt5platform-plugins.spec +++ b/qt5platform-plugins.spec @@ -1,10 +1,11 @@ Name: dde-qt5platform-plugins -Version: 5.0.25.1 +Version: 5.0.42 Release: 1 Summary: Qt platform plugins for DDE License: GPLv3 URL: https://github.com/linuxdeepin/deepin-desktop-schemas Source0: %{name}-%{version}.tar.gz +Patch9000: 9000-fix-lose-cursor-issue.patch %description @@ -68,7 +69,7 @@ BuildRequires: qt5-qtmultimedia-devel %prep -%autosetup +%autosetup -p1 sed -i 's|wayland/wayland.pro|#wayland/wayland.pro|' qt5platform-plugins.pro %build @@ -91,6 +92,9 @@ popd #%{_libdir}/qt5/plugins/wayland-shell-integration/libkwayland-shell.so %changelog +* Mon Apr 03 2023 liweiganga - 5.0.42-1 +- update: update to 5.0.42 + * Fri Feb 25 2022 liweigang - 5.0.25.1-1 - update to 5.0.25.1-1 @@ -98,4 +102,4 @@ popd - update to 5.0.17 * Fri Aug 7 2020 weidong - 5.0.10-1 -- Initial release for OpenEuler \ No newline at end of file +- Initial release for OpenEuler