diff options
author | Mathias Gumz <akira at fluxbox dot org> | 2011-02-24 14:59:34 (GMT) |
---|---|---|
committer | Mathias Gumz <akira at fluxbox dot org> | 2011-02-24 14:59:34 (GMT) |
commit | 09f99a4674a75a201effdc912d79a28c2dad4225 (patch) | |
tree | 7827037016c4f1a33a405981e7061030e0e2b58a /src | |
parent | 35753c7c3f7ad8fb10bd0853359f770c822bf1f1 (diff) | |
download | fluxbox_paul-09f99a4674a75a201effdc912d79a28c2dad4225.zip fluxbox_paul-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.
Diffstat (limited to 'src')
-rw-r--r-- | src/Window.cc | 2 |
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(); |