don't change a fullscreen window's layer when its transient takes the focus
Mark Tiefenbruck mark@fluxbox.org
1 files changed,
8 insertions(+),
11 deletions(-)
jump to
M
src/Window.cc
→
src/Window.cc
@@ -475,21 +475,16 @@
if (m_workspace_number >= screen().numberOfWorkspaces()) m_workspace_number = screen().currentWorkspaceID(); - // if we're a transient then we should be on the same layer as our parent + // if we're a transient then we should be on the same layer and workspace if (m_client->isTransient() && m_client->transientFor()->fbwindow() && - m_client->transientFor()->fbwindow() != this) + m_client->transientFor()->fbwindow() != this) { layerItem().setLayer(m_client->transientFor()->fbwindow()->layerItem().getLayer()); - else // if no parent then set default layer - moveToLayer(m_state.layernum, m_state.layernum != ::Layer::NORMAL); - - // transients should be on the same workspace as parent - if (m_client->isTransient() && - m_client->transientFor()->fbwindow()) { + m_state.layernum = m_client->transientFor()->fbwindow()->layerNum(); m_workspace_number = m_client->transientFor()->fbwindow()->workspaceNumber(); - } - + } else // if no parent then set default layer + moveToLayer(m_state.layernum, m_state.layernum != ::Layer::NORMAL); #ifdef DEBUG cerr<<"FluxboxWindow::init("<<title()<<") transientFor: "<<@@ -1472,7 +1467,9 @@
FluxboxWindow *foc = FocusControl::focusedFbWindow(); // if another window on the same head is focused, make sure we can see it if (isFocused() || !foc || &foc->screen() != &screen() || - getOnHead() != foc->getOnHead()) { + getOnHead() != foc->getOnHead() || + (foc->winClient().isTransient() && + foc->winClient().transientFor()->fbwindow() == this)) { moveToLayer(::Layer::ABOVE_DOCK); } else { moveToLayer(::Layer::DESKTOP);