From 09f99a4674a75a201effdc912d79a28c2dad4225 Mon Sep 17 00:00:00 2001
From: Mathias Gumz <akira at fluxbox dot org>
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