From 09f99a4674a75a201effdc912d79a28c2dad4225 Mon Sep 17 00:00:00 2001 From: Mathias Gumz Date: Thu, 24 Feb 2011 15:59:34 +0100 Subject: 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. --- src/Window.cc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/Window.cc b/src/Window.cc index 51a66df..e5e9f37 100644 --- a/src/Window.cc +++ b/src/Window.cc @@ -2455,7 +2455,7 @@ void FluxboxWindow::motionNotifyEvent(XMotionEvent &me) { 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(); -- cgit v0.11.2