diff -Nru kwin-5.24.4/debian/changelog kwin-5.24.4/debian/changelog --- kwin-5.24.4/debian/changelog 2024-11-18 16:10:17.000000000 +0800 +++ kwin-5.24.4/debian/changelog 2025-02-19 11:19:22.000000000 +0800 @@ -1,3 +1,10 @@ +kwin (4:5.24.4-ok10.1) nile; urgency=medium + + * allow repeated creation of ukui_surface for the same wl_surface + * ignore right button click event on user action menu + + -- Jie Liu <liujie01@kylinos.cn> Wed, 19 Feb 2025 11:19:22 +0800 + kwin (4:5.24.4-ok10~1118) nile; urgency=medium * x11client: x11client: enable NET_RESIZE for dock window diff -Nru kwin-5.24.4/debian/patches/0203-update-changelog-4-5.24.4-ok10.1.patch kwin-5.24.4/debian/patches/0203-update-changelog-4-5.24.4-ok10.1.patch --- kwin-5.24.4/debian/patches/0203-update-changelog-4-5.24.4-ok10.1.patch 1970-01-01 08:00:00.000000000 +0800 +++ kwin-5.24.4/debian/patches/0203-update-changelog-4-5.24.4-ok10.1.patch 2025-02-19 11:19:22.000000000 +0800 @@ -0,0 +1,216 @@ +From: Jie Liu <liujie01@kylinos.cn> +Date: Wed, 19 Feb 2025 11:20:37 +0800 +Subject: update changelog: 4:5.24.4-ok10.1 + +--- + src/useractions.cpp | 56 ++++++++++++++++++++++++++----------- + src/useractions.h | 24 ++++++++++++---- + src/wayland/ukuishell_interface.cpp | 8 +++--- + 3 files changed, 62 insertions(+), 26 deletions(-) + +diff --git a/src/useractions.cpp b/src/useractions.cpp +index 9ac03ef..fac6345 100644 +--- a/src/useractions.cpp ++++ b/src/useractions.cpp +@@ -45,14 +45,14 @@ + + #include <QAction> + #include <QCheckBox> ++#include <QFile> ++#include <QMouseEvent> + #include <QPushButton> + #include <QtConcurrentRun> +-#include <QFile> + + #include <KGlobalAccel> + #include <KLocalizedString> + #include <QAction> +-#include <QMenu> + #include <QRegularExpression> + #include <kauthorized.h> + #include <kconfig.h> +@@ -65,6 +65,30 @@ + namespace KWin + { + ++void CustomMenu::mousePressEvent(QMouseEvent *event) ++{ ++ if (event->button() != Qt::LeftButton) { ++ event->accept(); ++ if (!rect().contains(event->pos())) { ++ close(); ++ } ++ } else { ++ QMenu::mousePressEvent(event); ++ } ++} ++ ++void CustomMenu::mouseReleaseEvent(QMouseEvent *event) ++{ ++ if (event->button() != Qt::LeftButton) { ++ event->accept(); ++ if (!rect().contains(event->pos())) { ++ close(); ++ } ++ } else { ++ QMenu::mouseReleaseEvent(event); ++ } ++} ++ + UserActionsMenu::UserActionsMenu(QObject *parent) + : QObject(parent) + , m_menu(nullptr) +@@ -217,11 +241,11 @@ void UserActionsMenu::init() + if (m_menu) { + return; + } +- m_menu = new QMenu; +- connect(m_menu, &QMenu::aboutToShow, this, &UserActionsMenu::menuAboutToShow); +- connect(m_menu, &QMenu::triggered, this, &UserActionsMenu::slotWindowOperation, Qt::QueuedConnection); ++ m_menu = new CustomMenu; ++ connect(m_menu, &CustomMenu::aboutToShow, this, &UserActionsMenu::menuAboutToShow); ++ connect(m_menu, &CustomMenu::triggered, this, &UserActionsMenu::slotWindowOperation, Qt::QueuedConnection); + +- QMenu *advancedMenu = new QMenu(m_menu); ++ CustomMenu *advancedMenu = new CustomMenu(m_menu); + + auto setShortcut = [](QAction *action, const QString &actionName) { + const auto shortcuts = KGlobalAccel::self()->shortcut(Workspace::self()->findChild<QAction *>(actionName)); +@@ -390,7 +414,7 @@ void UserActionsMenu::menuAboutToShow() + // ask scripts whether they want to add entries for the given Client + QList<QAction *> scriptActions = Scripting::self()->actionsForUserActionMenu(m_client.data(), m_scriptsMenu); + if (!scriptActions.isEmpty()) { +- m_scriptsMenu = new QMenu(m_menu); ++ m_scriptsMenu = new CustomMenu(m_menu); + m_scriptsMenu->addActions(scriptActions); + + QAction *action = m_scriptsMenu->menuAction(); +@@ -429,8 +453,8 @@ void UserActionsMenu::initDesktopPopup() + return; + } + +- m_multipleDesktopsMenu = new QMenu(m_menu); +- connect(m_multipleDesktopsMenu, &QMenu::aboutToShow, this, &UserActionsMenu::multipleDesktopsPopupAboutToShow); ++ m_multipleDesktopsMenu = new CustomMenu(m_menu); ++ connect(m_multipleDesktopsMenu, &CustomMenu::aboutToShow, this, &UserActionsMenu::multipleDesktopsPopupAboutToShow); + + QAction *action = m_multipleDesktopsMenu->menuAction(); + // set it as the first item +@@ -442,8 +466,8 @@ void UserActionsMenu::initDesktopPopup() + if (m_desktopMenu) + return; + +- m_desktopMenu = new QMenu(m_menu); +- connect(m_desktopMenu, &QMenu::aboutToShow, this, &UserActionsMenu::desktopPopupAboutToShow); ++ m_desktopMenu = new CustomMenu(m_menu); ++ connect(m_desktopMenu, &CustomMenu::aboutToShow, this, &UserActionsMenu::desktopPopupAboutToShow); + + QAction *action = m_desktopMenu->menuAction(); + // set it as the first item +@@ -459,8 +483,8 @@ void UserActionsMenu::initScreenPopup() + return; + } + +- m_screenMenu = new QMenu(m_menu); +- connect(m_screenMenu, &QMenu::aboutToShow, this, &UserActionsMenu::screenPopupAboutToShow); ++ m_screenMenu = new CustomMenu(m_menu); ++ connect(m_screenMenu, &CustomMenu::aboutToShow, this, &UserActionsMenu::screenPopupAboutToShow); + + QAction *action = m_screenMenu->menuAction(); + // set it as the first item after desktop +@@ -474,9 +498,9 @@ void UserActionsMenu::initActivityPopup() + if (m_activityMenu) + return; + +- m_activityMenu = new QMenu(m_menu); +- connect(m_activityMenu, &QMenu::triggered, this, &UserActionsMenu::slotToggleOnActivity); +- connect(m_activityMenu, &QMenu::aboutToShow, this, &UserActionsMenu::activityPopupAboutToShow); ++ m_activityMenu = new CustomMenu(m_menu); ++ connect(m_activityMenu, &CustomMenu::triggered, this, &UserActionsMenu::slotToggleOnActivity); ++ connect(m_activityMenu, &CustomMenu::aboutToShow, this, &UserActionsMenu::activityPopupAboutToShow); + + QAction *action = m_activityMenu->menuAction(); + // set it as the first item +diff --git a/src/useractions.h b/src/useractions.h +index 97d54a3..f16d94b 100644 +--- a/src/useractions.h ++++ b/src/useractions.h +@@ -14,6 +14,7 @@ + + // Qt + #include <QDialog> ++#include <QMenu> + #include <QObject> + #include <QPointer> + +@@ -24,6 +25,17 @@ namespace KWin + { + class AbstractClient; + ++class KWIN_EXPORT CustomMenu : public QMenu ++{ ++ Q_OBJECT ++public: ++ using QMenu::QMenu; ++ ++protected: ++ void mousePressEvent(QMouseEvent *event) override; ++ void mouseReleaseEvent(QMouseEvent *event) override; ++}; ++ + /** + * @brief Menu shown for a Client. + * +@@ -170,27 +182,27 @@ private: + /** + * The actual main context menu which is show when the UserActionsMenu is invoked. + */ +- QMenu *m_menu; ++ CustomMenu *m_menu; + /** + * The move to desktop sub menu. + */ +- QMenu *m_desktopMenu; ++ CustomMenu *m_desktopMenu; + /** + * The move to desktop sub menu, with the Wayland protocol. + */ +- QMenu *m_multipleDesktopsMenu; ++ CustomMenu *m_multipleDesktopsMenu; + /** + * The move to screen sub menu. + */ +- QMenu *m_screenMenu; ++ CustomMenu *m_screenMenu; + /** + * The activities sub menu. + */ +- QMenu *m_activityMenu; ++ CustomMenu *m_activityMenu; + /** + * Menu for further entries added by scripts. + */ +- QMenu *m_scriptsMenu; ++ CustomMenu *m_scriptsMenu; + QAction *m_resizeOperation; + QAction *m_moveOperation; + QAction *m_maximizeOperation; +diff --git a/src/wayland/ukuishell_interface.cpp b/src/wayland/ukuishell_interface.cpp +index ecab6ad..8236fcd 100644 +--- a/src/wayland/ukuishell_interface.cpp ++++ b/src/wayland/ukuishell_interface.cpp +@@ -128,10 +128,10 @@ void UkuiShellInterfacePrivate::ukui_shell_create_surface(QtWaylandServer::ukui_ + return; + } + +- if (UkuiSurfaceInterface::get(surface)) { +- wl_resource_post_error(resource->handle, 0, "ukui_surface already exists"); +- return; +- } ++ // if (UkuiSurfaceInterface::get(surface)) { ++ // wl_resource_post_error(resource->handle, 0, "ukui_surface already exists"); ++ // return; ++ // } + + wl_resource *ukuiSurfaceResource = wl_resource_create(resource->client(), &ukui_surface_interface, resource->version(), id); + diff -Nru kwin-5.24.4/debian/patches/series kwin-5.24.4/debian/patches/series --- kwin-5.24.4/debian/patches/series 2024-11-18 16:10:17.000000000 +0800 +++ kwin-5.24.4/debian/patches/series 2025-02-19 11:19:22.000000000 +0800 @@ -200,3 +200,4 @@ 0200-Add-get-modify-block-reset-shortcut-interface.patch 0201-Add-new-rule-Unlimited-window-size.patch 0202-update-changlog-4-5.24.4-ok10-1118.patch +0203-update-changelog-4-5.24.4-ok10.1.patch