View Issue Details

IDProjectCategoryView StatusLast Update
0017647ScribusGeneralpublic2025-10-13 00:56
Reporterqirat Assigned To 
PrioritynormalSeverityminorReproducibilityalways
Status newResolutionopen 
PlatformLinuxOSFedoraOS Version42 Workstation
Product Version1.7.1.svn 
Summary0017647: [PATCH] Ungrouping groups - no "ungroup" option after the first ungroup
DescriptionSo, when you ungroup groups, it does not go all the way through.

As far as I have tested, the issue is with paths. The shapes work fine.
Steps To Reproduce1. Select two paths -> Ctrl+G
2. While that group is selected, Shift-select a third path -> Ctrl+G (a group of 3 paths)
3. Now, select it and press Ctrl+Shift+G multiple times (at least 2 right?).
4. It should go all the way through (making all 3 paths individual items).

However, it will stop after ungrouping the last group, removing the 3rd path from it. The first two paths remain grouped still.
Additional InformationAlso, the "Ungroup" option in "Item > Grouping" greys-out after the first ungrouping.

I tested the issue on X11 (LMDE), and Wayland (Fedora 42).
Tagsgrouped Objects
PatchYes

Activities

cbradney

2025-10-11 21:23

administrator   ~0053061

When you undo the first (outer) group, the items remain selected however the first (inner) group is not the primary selected item, so ungroup is not an available option. This is the same for all item types.

qirat

2025-10-12 02:45

reporter   ~0053062

What I meant to say was that Inkscape and Krita do not do the way Scribus does it. Especially Inkscape.

They ungroup the items to the last point (until all of them are individual items), no matter how many steps (groups after groups) were involved while grouping. You can ungroup all intermediate groups by selecting the last formed group once. As far as I know, that is convenient from the user's perspective.

ale

2025-10-12 10:18

manager   ~0053063

Ungrouping does work when single items and groups are selected.

But the command is only active when the first item selected is a group.

I guess that when checking if ungroup should is enabled or not, Scribus should not simply check the first item in the selection, but look for at least one item in the selection being a group.

qirat

2025-10-12 14:03

reporter   ~0053064

You summed up well, @ale. It would be nice if Scribus does that too (like others).

ale

2025-10-12 14:47

manager   ~0053065

Last edited: 2025-10-12 14:51

Here a trivial patch to allow the ungrouping when a group is in the selection (and not only when the first item selected is a group)

P.S.: both ungroup (not checked in the code but in the UI) and resize group act already on all the groups in the selection, it's just the menu entry that is disabled.

P.P.S.: If this is accepted, I will also do a patch for the context menu...
unggroup-recursive.diff (929 bytes)   
From 198aa83476680f1b90e81a2344731c5d894ae9a4 Mon Sep 17 00:00:00 2001
From: ale rimoldi <ale@graphicslab.org>
Date: Sun, 12 Oct 2025 16:45:27 +0200
Subject: enable ungrouping and group adjust if the selection contains a group


diff --git a/scribus/appmodehelper.cpp b/scribus/appmodehelper.cpp
index 79e0359af..6bb7235f7 100644
--- a/scribus/appmodehelper.cpp
+++ b/scribus/appmodehelper.cpp
@@ -910,7 +910,7 @@ void AppModeHelper::enableActionsForSelection(ScribusMainWindow* scmw, ScribusDo
 		(*a_scrActions)["itemLock"]->setEnabled(doc->appMode != modeEditClip);
 		(*a_scrActions)["itemLockSize"]->setEnabled(true);
 		(*a_scrActions)["itemPrintingEnabled"]->setEnabled(true);
-		if (currItem->isGroup())
+		if (doc->m_Selection->containsItemType(PageItem::Group))
 		{
 			(*a_scrActions)["itemUngroup"]->setEnabled(doc->appMode != modeEdit);
 			(*a_scrActions)["itemGroupAdjust"]->setEnabled(doc->appMode != modeEdit);
unggroup-recursive.diff (929 bytes)   

ale

2025-10-12 19:27

manager   ~0053066

Similar patch for adding the ungroup to the context menu and enabling the button in PP when a group is in the selection.
ungroup-context-xyz.diff (1,893 bytes)   
From 28ba52350230c3646d8bd95a3e20ae172f88e296 Mon Sep 17 00:00:00 2001
From: ale rimoldi <ale@graphicslab.org>
Date: Sun, 12 Oct 2025 21:24:29 +0200
Subject: when the selection contains a group add ungroup to context menu and
 enable the ungroup button in the palette


diff --git a/scribus/ui/contextmenu.cpp b/scribus/ui/contextmenu.cpp
index 10ab3b1b4..dc2ddfc2c 100644
--- a/scribus/ui/contextmenu.cpp
+++ b/scribus/ui/contextmenu.cpp
@@ -413,13 +413,10 @@ void ContextMenu::createMenuItems_Selection()
 		if (m_Sel.objectsLayer() != -1)
 			addAction(m_ScMW->scrActions["itemGroup"]);
 	}
-	else
+	if (selectedItemCount > 0 && m_doc->m_Selection->containsItemType(PageItem::Group))
 	{
-		if (currItem->isGroup())
-		{
-			addAction(m_ScMW->scrActions["itemUngroup"]);
-			addAction(m_ScMW->scrActions["itemGroupAdjust"]);
-		}
+		addAction(m_ScMW->scrActions["itemUngroup"]);
+		addAction(m_ScMW->scrActions["itemGroupAdjust"]);
 	}
 	//-->
 
diff --git a/scribus/ui/propertiespalette_xyz.cpp b/scribus/ui/propertiespalette_xyz.cpp
index f9026a5d2..955049df0 100644
--- a/scribus/ui/propertiespalette_xyz.cpp
+++ b/scribus/ui/propertiespalette_xyz.cpp
@@ -361,12 +361,13 @@ void PropertiesPalette_XYZ::setCurrentItem(PageItem *item)
 
 	doGroup->setEnabled(false);
 	doUnGroup->setEnabled(false);
-	if ((m_doc->m_Selection->count() > 1) && haveSameParent)
+	if (m_doc->m_Selection->count() > 1 && haveSameParent)
 		doGroup->setEnabled(true);
-	if (m_doc->m_Selection->count() == 1)
-		doUnGroup->setEnabled(m_item->isGroup());
-	if ((m_doc->appMode == modeEditClip) && (m_item->isGroup()))
-		doUnGroup->setEnabled(false);
+	if (m_doc->m_Selection->count() > 0)
+	{
+		if (m_doc->appMode != modeEditClip && m_doc->m_Selection->containsItemType(PageItem::Group))
+			doUnGroup->setEnabled(true);
+	}
 	if (m_item->isOSGFrame())
 	{
 		setEnabled(true);
ungroup-context-xyz.diff (1,893 bytes)   

qirat

2025-10-13 00:56

reporter   ~0053067

Thank you, @ale. I hope it gets accepted.

Issue History

Date Modified Username Field Change
2025-10-11 11:58 qirat New Issue
2025-10-11 11:58 qirat Tag Attached: grouped Objects
2025-10-11 21:23 cbradney Note Added: 0053061
2025-10-12 02:45 qirat Note Added: 0053062
2025-10-12 10:18 ale Note Added: 0053063
2025-10-12 14:03 qirat Note Added: 0053064
2025-10-12 14:47 ale Note Added: 0053065
2025-10-12 14:47 ale File Added: unggroup-recursive.diff
2025-10-12 14:47 ale Summary Ungrouping groups - no "ungroup" option after the first ungroup => [PATCH] Ungrouping groups - no "ungroup" option after the first ungroup
2025-10-12 14:47 ale Patch No => Yes
2025-10-12 14:50 ale Note Edited: 0053065
2025-10-12 14:51 ale Note Edited: 0053065
2025-10-12 19:27 ale Note Added: 0053066
2025-10-12 19:27 ale File Added: ungroup-context-xyz.diff
2025-10-13 00:56 qirat Note Added: 0053067