diff --git a/events.cpp b/events.cpp index 45d58ef06f..7f26705540 100644 --- a/events.cpp +++ b/events.cpp @@ -879,7 +879,7 @@ void Client::enterNotifyEvent(XCrossingEvent* e) } #undef MOUSE_DRIVEN_FOCUS - if (options->focusPolicy() == Options::ClickToFocus) + if (options->focusPolicy() == Options::ClickToFocus || workspace()->windowMenuShown()) return; if (options->isAutoRaise() && !isDesktop() && diff --git a/workspace.h b/workspace.h index 9df435cebb..e271f8fafa 100644 --- a/workspace.h +++ b/workspace.h @@ -415,6 +415,7 @@ public: */ void showWindowMenu(int x, int y, Client* cl); void showWindowMenu(QPoint pos, Client* cl); + bool windowMenuShown(); void updateMinimizedOfTransients(Client*); void updateOnAllDesktopsOfTransients(Client*); @@ -1039,6 +1040,11 @@ inline void Workspace::showWindowMenu(int x, int y, Client* cl) showWindowMenu(QRect(QPoint(x, y), QPoint(x, y)), cl); } +inline bool Workspace::windowMenuShown() +{ + return popup && ((QWidget*)popup)->isVisible(); +} + inline void Workspace::setWasUserInteraction() { was_user_interaction = true;