From ebf1bc47a95bc8e976604b295e328b6fa879f5d1 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Thu, 20 Dec 2012 21:26:33 +0100 Subject: [PATCH] Do not clear UserActionMenu's Client after the menu closed The Client is still needed as the invoked action might be delayed by one event cycle to work around a crash if the operation causes the deco to close. BUG: 312004 FIXED-IN: 4.10 RC 2 REVIEW: 107823 --- useractions.cpp | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/useractions.cpp b/useractions.cpp index 118cd13fca..3617d2938c 100755 --- a/useractions.cpp +++ b/useractions.cpp @@ -127,7 +127,7 @@ bool UserActionsMenu::isShown() const bool UserActionsMenu::hasClient() const { - return !m_client.isNull(); + return !m_client.isNull() && isShown(); } void UserActionsMenu::close() @@ -136,7 +136,7 @@ void UserActionsMenu::close() return; } m_menu->close(); - m_client.clear();; + m_client.clear(); } bool UserActionsMenu::isMenuClient(const Client *c) const @@ -153,7 +153,7 @@ void UserActionsMenu::show(const QRect &pos, const QWeakPointer &cl) return; if (cl.isNull()) return; - if (!m_client.isNull()) // recursion + if (isShown()) // recursion return; if (cl.data()->isDesktop() || cl.data()->isDock()) @@ -175,7 +175,6 @@ void UserActionsMenu::show(const QRect &pos, const QWeakPointer &cl) else m_menu->exec(QPoint(x, pos.top() - popupHeight)); } - m_client.clear();; } void UserActionsMenu::helperDialog(const QString& message, const QWeakPointer &c)