diff --git a/src/FocusControl.cc b/src/FocusControl.cc index 366af347..54c3d46c 100644 --- a/src/FocusControl.cc +++ b/src/FocusControl.cc @@ -591,11 +591,14 @@ void FocusControl::setFocusedWindow(WinClient *client) { BScreen *screen = client ? &client->screen() : 0; if (client && screen && screen->focusControl().isCycling()) { Focusable *next = screen->focusControl().m_cycling_next; - if (next && next != client && screen->focusControl().m_cycling_list->contains(*next)) { + WinClient *nextClient = dynamic_cast(next); + FluxboxWindow *nextWindow = nextClient ? 0 : dynamic_cast(next); + if (next && nextClient != client && nextWindow != client->fbwindow() && + screen->focusControl().m_cycling_list->contains(*next)) { // if we're currently cycling and the client tries to juggle around focus // on FocusIn events to provide client-side modality - don't let him next->focus(); - if (WinClient *nextClient = dynamic_cast(next)) + if (nextClient) setFocusedWindow(nextClient); // doesn't happen automatically while cycling, 1148 return; }