all repos — fluxbox @ e99d940f407d37f31ecda0f4878a161bfc479a46

custom fork of the fluxbox windowmanager

do not confine transients to desktop layer

Originally patch #170 by gregor_b
Desktop stype windows will typically have their config dialogs as
transients. If those are confined to the desktop layer, they're stashed
behind everything else, so we don't force them there.

If the transient already is in the desktop layer otherwise it's a(nother)
desktop, not a dialog, and belongs to that layer, there's no need to
artificially raise it.
It's entirely sufficient to leave these windows untouched.
Thomas Lübking thomas.luebking@gmail.com
commit

e99d940f407d37f31ecda0f4878a161bfc479a46

parent

14e25f4a658f19389921fcfc6d7e355041146af1

1 files changed, 4 insertions(+), 2 deletions(-)

jump to
M src/Window.ccsrc/Window.cc

@@ -548,8 +548,10 @@

// if we're a transient then we should be on the same layer and workspace FluxboxWindow* twin = m_client->transientFor() ? m_client->transientFor()->fbwindow() : 0; if (twin && twin != this) { - layerItem().setLayer(twin->layerItem().getLayer()); - m_state.layernum = twin->layerNum(); + if (twin->layerNum() < ResourceLayer::DESKTOP) { // don't confine layer for desktops + layerItem().setLayer(twin->layerItem().getLayer()); + m_state.layernum = twin->layerNum(); + } m_workspace_number = twin->workspaceNumber(); const int x = twin->frame().x() + int(twin->frame().width() - frame().width())/2; const int y = twin->frame().y() + int(twin->frame().height() - frame().height())/2;