summaryrefslogtreecommitdiff
path: root/kde-frameworks/kconfigwidgets/files/kconfigwidgets-5.88.0-hamburger-menu-no-window-on-wayland.patch
diff options
context:
space:
mode:
Diffstat (limited to 'kde-frameworks/kconfigwidgets/files/kconfigwidgets-5.88.0-hamburger-menu-no-window-on-wayland.patch')
-rw-r--r--kde-frameworks/kconfigwidgets/files/kconfigwidgets-5.88.0-hamburger-menu-no-window-on-wayland.patch87
1 files changed, 0 insertions, 87 deletions
diff --git a/kde-frameworks/kconfigwidgets/files/kconfigwidgets-5.88.0-hamburger-menu-no-window-on-wayland.patch b/kde-frameworks/kconfigwidgets/files/kconfigwidgets-5.88.0-hamburger-menu-no-window-on-wayland.patch
deleted file mode 100644
index 8cf60aeb7594..000000000000
--- a/kde-frameworks/kconfigwidgets/files/kconfigwidgets-5.88.0-hamburger-menu-no-window-on-wayland.patch
+++ /dev/null
@@ -1,87 +0,0 @@
-From 82c40f18709484fd462643aa113a8ccf961b646a Mon Sep 17 00:00:00 2001
-From: Felix Ernst <fe.a.ernst@gmail.com>
-Date: Tue, 26 Oct 2021 17:28:09 +0200
-Subject: [PATCH] Fix hamburger menu opening as a window on Wayland
-
-Before this commit, if an app window is unfocused and the first
-click on the window is the hamburger menu button, the menu would
-appear displaced as a separate window on Wayland.
-
-This commit fixes this by setting a sane transientParent for the
-menu. This is slightly difficult because there can be any number
-of hamburger buttons in any number of different windows so we need
-to figure out spontaneously which button was pressed to open the
-menu.
-
-BUG: 442375
----
- src/khamburgermenuhelpers.cpp | 26 ++++++++++++++++++++++++--
- src/khamburgermenuhelpers_p.h | 2 +-
- 2 files changed, 25 insertions(+), 3 deletions(-)
-
-diff --git a/src/khamburgermenuhelpers.cpp b/src/khamburgermenuhelpers.cpp
-index 88242aa5..d1ae2835 100644
---- a/src/khamburgermenuhelpers.cpp
-+++ b/src/khamburgermenuhelpers.cpp
-@@ -10,7 +10,10 @@
- #include "khamburgermenu.h"
-
- #include <QEvent>
-+#include <QMenu>
-+#include <QToolButton>
- #include <QWidget>
-+#include <QWindow>
-
- ListenerContainer::ListenerContainer(KHamburgerMenuPrivate *hamburgerMenuPrivate)
- : QObject{hamburgerMenuPrivate},
-@@ -28,13 +31,32 @@ bool AddOrRemoveActionListener::eventFilter(QObject * /*watched*/, QEvent *event
- return false;
- }
-
--bool ButtonPressListener::eventFilter(QObject * /*watched*/, QEvent *event)
-+bool ButtonPressListener::eventFilter(QObject *watched, QEvent *event)
- {
- if (event->type() == QEvent::KeyPress || event->type() == QEvent::MouseButtonPress) {
- auto hamburgerMenuPrivate = static_cast<KHamburgerMenuPrivate *>(parent());
- auto q = static_cast<KHamburgerMenu *>(hamburgerMenuPrivate->q_ptr);
- Q_EMIT q->aboutToShowMenu();
-- hamburgerMenuPrivate->resetMenu();
-+ hamburgerMenuPrivate->resetMenu(); // This menu never has a parent which can be
-+ // problematic because it can lead to situations in which the QMenu itself is
-+ // treated like its own window.
-+ // To avoid this we set a sane transientParent() now even if it already has one
-+ // because the menu might be opened from another window this time.
-+ const auto watchedButton = qobject_cast<QToolButton *>(watched);
-+ if (!watchedButton) {
-+ return false;
-+ }
-+ auto menu = watchedButton->menu();
-+ if (!menu) {
-+ return false;
-+ }
-+ menu->winId(); // trigger being a native widget already, to ensure windowHandle created
-+ // generic code if not known if the available parent widget is a native widget or not
-+ auto parentWindowHandle = watchedButton->windowHandle();
-+ if (!parentWindowHandle) {
-+ parentWindowHandle = watchedButton->nativeParentWidget()->windowHandle();
-+ }
-+ menu->windowHandle()->setTransientParent(parentWindowHandle);
- }
- return false;
- }
-diff --git a/src/khamburgermenuhelpers_p.h b/src/khamburgermenuhelpers_p.h
-index f0d98790..4993ee61 100644
---- a/src/khamburgermenuhelpers_p.h
-+++ b/src/khamburgermenuhelpers_p.h
-@@ -80,7 +80,7 @@ class ButtonPressListener : public QObject
- protected:
- inline ButtonPressListener(QObject *parent) : QObject{parent} { };
-
-- bool eventFilter(QObject * /*watched*/, QEvent *event) override;
-+ bool eventFilter(QObject *watched, QEvent *event) override;
-
- friend class ListenerContainer;
- };
---
-GitLab
-