From b9975cb40dfb7fd0387d0eaa722c664faf2f9ea3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Martin=20Gr=C3=A4=C3=9Flin?= Date: Fri, 11 Jun 2010 19:58:46 +0000 Subject: [PATCH] Only unmanage windows which are on an existing desktop. This was the cause for a crash when a different widget set per desktop was used. Removing a desktop unmanaged the desktop window and it got closed, so it was unmanaged a second time. BUG: 241421 svn path=/trunk/KDE/kdebase/workspace/; revision=1137156 --- effects/desktopgrid/desktopgrid.cpp | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/effects/desktopgrid/desktopgrid.cpp b/effects/desktopgrid/desktopgrid.cpp index 3449ccf274..1154530796 100644 --- a/effects/desktopgrid/desktopgrid.cpp +++ b/effects/desktopgrid/desktopgrid.cpp @@ -436,9 +436,12 @@ void DesktopGridEffect::windowClosed( EffectWindow* w ) } else { - WindowMotionManager& manager = m_managers[(w->desktop()-1)*effects->numScreens()+w->screen()]; - manager.unmanage(w); - m_proxy->calculateWindowTransformations(manager.managedWindows(), w->screen(), manager); + if( w->desktop() <= effects->numberOfDesktops() ) + { + WindowMotionManager& manager = m_managers[(w->desktop()-1)*effects->numScreens()+w->screen()]; + manager.unmanage(w); + m_proxy->calculateWindowTransformations(manager.managedWindows(), w->screen(), manager); + } } } for( QHash< DesktopButtonsView*, EffectWindow*>::iterator it = m_desktopButtonsViews.begin();