all repos — fluxbox @ 09f99a4674a75a201effdc912d79a28c2dad4225

custom fork of the fluxbox windowmanager

intermediate fix for segfault when warping transient windows to different workspace, see #3088856

warping a transient window to the next workspace creates a cycle between
BScreen::changeWorkspaceID(), BScreen::reassociateWindow(), Workspace::removeWindow(),
FocusControl::unfocusWindow(), FluxboxWindow::setCurrentClient(), FluxboxWindow::focus()
and so on.

for now we just stop allowing transient windows to be warped, it is most
likely a bad idea anyway having the modal dialog on one workspace and the
(dead) main window on another one.

this issue must be analyzed further, since there might be a deeper problem
with the way the focus code works.
Mathias Gumz akira at fluxbox dot org
commit

09f99a4674a75a201effdc912d79a28c2dad4225

parent

35753c7c3f7ad8fb10bd0853359f770c822bf1f1

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

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

@@ -2455,7 +2455,7 @@ frame().width() + 2*frame().window().borderWidth()-1,

frame().height() + 2*frame().window().borderWidth()-1); } - if (moved_x && screen().isWorkspaceWarping()) { + if (moved_x && screen().isWorkspaceWarping() && !isTransient() ) { unsigned int cur_id = screen().currentWorkspaceID(); unsigned int new_id = cur_id; const int warpPad = screen().getEdgeSnapThreshold();