Index: scribus/selection.cpp
===================================================================
--- scribus/selection.cpp	(révision 13039)
+++ scribus/selection.cpp	(copie de travail)
@@ -20,6 +20,7 @@
 
 #include "scribusdoc.h"
 #include "selection.h"
+#include <QDebug>
 
 Selection::Selection(QObject* parent)
 	: QObject(parent),
@@ -257,18 +258,47 @@
 
 bool Selection::removeItem(PageItem *item)
 {
+    bool removeOk(false);
 	if (!m_SelList.isEmpty() && m_SelList.contains(item))
 	{
-		bool removeOk=(m_SelList.removeAll(item)==1);
-		if (removeOk)
+		bool itemIsGroup(item->Groups.count() > 0);
+		if(itemIsGroup)
 		{
+		    QList<PageItem*> gItems;
+		    foreach(PageItem *pi, m_SelList)
+		    {
+			if(pi->groups().top() == item->groups().top())
+			    gItems << pi;
+		    }
+		    foreach(PageItem *gi, gItems)
+		    {
+			removeOk=(m_SelList.removeAll(gi)==1);
+			if (removeOk)
+			{
+			    if (m_isGUISelection)
+			    {
+				gi->setSelected(false);
+				gi->disconnectFromGUI();
+			    }
+			    gi->isSingleSel = false;
+			}
+		    }
+		}
+		else // regular item
+		{
+		    removeOk=(m_SelList.removeAll(item)==1);
+		    if (removeOk)
+		    {
 			if (m_isGUISelection)
 			{
-				item->setSelected(false);
-				item->disconnectFromGUI();
+			    item->setSelected(false);
+			    item->disconnectFromGUI();
 			}
 			item->isSingleSel = false;
+		    }
 		}
+
+
 		if (m_SelList.isEmpty())
 			m_hasGroupSelection=false;
 		else if (m_isGUISelection)
@@ -278,7 +308,7 @@
 		}
 		return removeOk;
 	}
-	return false;
+	return removeOk;
 }
 
 PageItem* Selection::takeItem(int itemIndex)
