aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMathias Gumz <akira at fluxbox dot org>2011-02-24 14:59:34 (GMT)
committerMathias Gumz <akira at fluxbox dot org>2011-02-24 14:59:34 (GMT)
commit09f99a4674a75a201effdc912d79a28c2dad4225 (patch)
tree7827037016c4f1a33a405981e7061030e0e2b58a
parent35753c7c3f7ad8fb10bd0853359f770c822bf1f1 (diff)
downloadfluxbox_pavel-09f99a4674a75a201effdc912d79a28c2dad4225.zip
fluxbox_pavel-09f99a4674a75a201effdc912d79a28c2dad4225.tar.bz2
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.
-rw-r--r--src/Window.cc2
1 files changed, 1 insertions, 1 deletions
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) {
2455 frame().height() + 2*frame().window().borderWidth()-1); 2455 frame().height() + 2*frame().window().borderWidth()-1);
2456 } 2456 }
2457 2457
2458 if (moved_x && screen().isWorkspaceWarping()) { 2458 if (moved_x && screen().isWorkspaceWarping() && !isTransient() ) {
2459 unsigned int cur_id = screen().currentWorkspaceID(); 2459 unsigned int cur_id = screen().currentWorkspaceID();
2460 unsigned int new_id = cur_id; 2460 unsigned int new_id = cur_id;
2461 const int warpPad = screen().getEdgeSnapThreshold(); 2461 const int warpPad = screen().getEdgeSnapThreshold();