Compare commits
15 Commits
6cbe4241b8
...
4a23f5875a
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4a23f5875a | ||
|
|
a58b653547 | ||
|
|
61ef68a539 | ||
|
|
97e44de033 | ||
|
|
438323fcfb | ||
|
|
04e2efd7f2 | ||
|
|
7ab117e22a | ||
|
|
8753c355dd | ||
|
|
0047cdaba4 | ||
|
|
e03165108c | ||
|
|
eb9e50927c | ||
|
|
7b144e1e9d | ||
|
|
75cf972978 | ||
|
|
93fc8a985c | ||
|
|
ff61738161 |
3647
0001-modify-x11-don-t-xcb-in-keys.patch
Normal file
3647
0001-modify-x11-don-t-xcb-in-keys.patch
Normal file
File diff suppressed because it is too large
Load Diff
145
9000-fix-lose-cursor-issue.patch
Normal file
145
9000-fix-lose-cursor-issue.patch
Normal file
@ -0,0 +1,145 @@
|
|||||||
|
From 1b797d6e15ece7f87af2d86be4ad19f885619285 Mon Sep 17 00:00:00 2001
|
||||||
|
From: root <root@localhost.localdomain>
|
||||||
|
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<QXcbWindow *>(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<QWindowPrivate *>(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
|
||||||
|
|
||||||
BIN
dde-qt5platform-plugins-5.0.71.tar.gz
Normal file
BIN
dde-qt5platform-plugins-5.0.71.tar.gz
Normal file
Binary file not shown.
4
qt5dxcb-plugin.yaml
Normal file
4
qt5dxcb-plugin.yaml
Normal file
@ -0,0 +1,4 @@
|
|||||||
|
version_control: github
|
||||||
|
src_repo: linuxdeepin/qt5platform-plugins
|
||||||
|
tag_prefix: ""
|
||||||
|
seperator: "."
|
||||||
118
qt5platform-plugins.spec
Normal file
118
qt5platform-plugins.spec
Normal file
@ -0,0 +1,118 @@
|
|||||||
|
%global repo qt5platform-plugins
|
||||||
|
|
||||||
|
Name: dde-qt5platform-plugins
|
||||||
|
Version: 5.0.71
|
||||||
|
Release: 3
|
||||||
|
Summary: Qt platform plugins for DDE
|
||||||
|
License: GPLv3
|
||||||
|
URL: https://github.com/linuxdeepin/qt5platform-plugins
|
||||||
|
Source0: %{name}-%{version}.tar.gz
|
||||||
|
|
||||||
|
Patch0: 0001-modify-x11-don-t-xcb-in-keys.patch
|
||||||
|
|
||||||
|
%description
|
||||||
|
%{summary}.
|
||||||
|
|
||||||
|
%package -n dde-qt5xcb-plugin
|
||||||
|
Summary: %{summary}
|
||||||
|
BuildRequires: qt5-devel
|
||||||
|
BuildRequires: git
|
||||||
|
BuildRequires: qt5-qtwayland-devel
|
||||||
|
BuildRequires: qt5-qtdeclarative-devel
|
||||||
|
BuildRequires: wayland-devel
|
||||||
|
#BuildRequires: dde-waylandserver-devel
|
||||||
|
#BuildRequires: dde-waylandclient-devel
|
||||||
|
BuildRequires: xcb-util-image-devel
|
||||||
|
BuildRequires: xcb-util-renderutil-devel
|
||||||
|
BuildRequires: libxcb-devel
|
||||||
|
BuildRequires: xcb-util-wm-devel
|
||||||
|
BuildRequires: mtdev-devel
|
||||||
|
BuildRequires: libxkbcommon-x11-devel
|
||||||
|
BuildRequires: dbus-devel
|
||||||
|
BuildRequires: systemd-devel
|
||||||
|
BuildRequires: libXrender-devel
|
||||||
|
BuildRequires: libXi-devel
|
||||||
|
BuildRequires: libSM-devel
|
||||||
|
BuildRequires: libxcb-devel
|
||||||
|
BuildRequires: fontconfig-devel
|
||||||
|
BuildRequires: freetype-devel
|
||||||
|
BuildRequires: libxcb-devel
|
||||||
|
BuildRequires: cairo-devel
|
||||||
|
BuildRequires: kf5-kwayland-devel
|
||||||
|
BuildRequires: libqtxdg-devel
|
||||||
|
BuildRequires: dtkwidget-devel
|
||||||
|
BuildRequires: dtkcore-devel
|
||||||
|
BuildRequires: pkg-config
|
||||||
|
BuildRequires: mtdev-devel
|
||||||
|
BuildRequires: xcb-util-keysyms-devel
|
||||||
|
BuildRequires: qt5-qtbase-private-devel
|
||||||
|
|
||||||
|
|
||||||
|
Provides: qt5dxcb-plugin
|
||||||
|
Obsoletes: qt5dxcb-plugin
|
||||||
|
%description -n dde-qt5xcb-plugin
|
||||||
|
%{summary}.
|
||||||
|
|
||||||
|
%package -n dde-qt5wayland-plugin
|
||||||
|
Summary: %{summary}
|
||||||
|
BuildRequires: qt5-devel
|
||||||
|
|
||||||
|
BuildRequires: qt5-qtbase-devel
|
||||||
|
BuildRequires: qt5-qtbase-static
|
||||||
|
BuildRequires: libqtxdg-devel
|
||||||
|
BuildRequires: dtkwidget-devel
|
||||||
|
BuildRequires: pkg-config
|
||||||
|
BuildRequires: qt5-qtx11extras-devel
|
||||||
|
BuildRequires: qt5-qtsvg-devel
|
||||||
|
BuildRequires: mtdev-devel
|
||||||
|
BuildRequires: qt5-qtmultimedia-devel
|
||||||
|
%description -n dde-qt5wayland-plugin
|
||||||
|
%{summary}.
|
||||||
|
|
||||||
|
|
||||||
|
%prep
|
||||||
|
%autosetup -p1 -n %{repo}-%{version}
|
||||||
|
rm -r xcb/libqt5xcbqpa-dev wayland/qtwayland-dev
|
||||||
|
sed -i 's|error(Not support Qt Version: .*)|INCLUDEPATH += %{_qt5_includedir}/QtXcb|' xcb/linux.pri
|
||||||
|
|
||||||
|
%build
|
||||||
|
# help find (and prefer) qt5 utilities, e.g. qmake, lrelease
|
||||||
|
export PATH=%{_qt5_bindir}:$PATH
|
||||||
|
mkdir build && pushd build
|
||||||
|
%qmake_qt5 ../
|
||||||
|
%make_build
|
||||||
|
popd
|
||||||
|
|
||||||
|
%install
|
||||||
|
%make_install -C build INSTALL_ROOT="%buildroot"
|
||||||
|
|
||||||
|
%files -n dde-qt5xcb-plugin
|
||||||
|
%{_libdir}/qt5/plugins/platforms/libdxcb.so
|
||||||
|
|
||||||
|
|
||||||
|
%files -n dde-qt5wayland-plugin
|
||||||
|
%{_libdir}/qt5/plugins/platforms/libdwayland.so
|
||||||
|
%{_libdir}/qt5/plugins/wayland-shell-integration/libkwayland-shell.so
|
||||||
|
|
||||||
|
%changelog
|
||||||
|
* Mon Sep 18 2023 leeffo <liweiganga@uniontech.com> - 5.0.71-3
|
||||||
|
- modify x11 don't xcb in keys
|
||||||
|
- add qt5-qtbase-5.15.10 support
|
||||||
|
|
||||||
|
* Mon Sep 04 2023 yangxianzhao <yangxianzhao@uniontech.com> - 5.0.71-2
|
||||||
|
- add script for build on Qt5-qtbase-5.15.10
|
||||||
|
|
||||||
|
* Tue Aug 01 2023 leeffo <liweiganga@uniontech.com> - 5.0.71-1
|
||||||
|
- upgrade to version 5.0.71
|
||||||
|
|
||||||
|
* Mon Apr 03 2023 liweiganga <liweiganga@uniontech.com> - 5.0.42-1
|
||||||
|
- update: update to 5.0.42
|
||||||
|
|
||||||
|
* Fri Feb 25 2022 liweigang <liweiganga@uniontech.com> - 5.0.25.1-1
|
||||||
|
- update to 5.0.25.1-1
|
||||||
|
|
||||||
|
* Mon Feb 14 2022 liweigang <liweiganga@uniontech.com> - 5.0.17-1
|
||||||
|
- update to 5.0.17
|
||||||
|
|
||||||
|
* Fri Aug 7 2020 weidong <weidong@uniontech.com> - 5.0.10-1
|
||||||
|
- Initial release for OpenEuler
|
||||||
Loading…
x
Reference in New Issue
Block a user