View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0007726 | Scribus | Canvas | public | 2009-01-15 15:41 | 2009-01-26 20:42 |
| Reporter | pierremarchand | Assigned To | pierremarchand | ||
| Priority | normal | Severity | minor | Reproducibility | always |
| Status | closed | Resolution | fixed | ||
| Product Version | 1.3.5svn | ||||
| Target Version | 1.3.5 | Fixed in Version | 1.3.5svn | ||
| Summary | 0007726: unselect group from a multi (shift left-click) does not work properly | ||||
| Description | When unselecting a group from a multi, only the controlgroup item is unselected while grouped items are still selected. I made the simpliest fix you can imagine which, I guess, could break things elsewhere. As I have no idea where exactly, I would like someone to have a look before i commit, hence this report and the attached diff. | ||||
| Tags | No tags attached. | ||||
| Attached Files | unselect-group-in-multi.diff (1,619 bytes)
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)
| ||||
| Patch | |||||
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2009-01-15 15:41 | pierremarchand | New Issue | |
| 2009-01-15 15:41 | pierremarchand | Status | new => assigned |
| 2009-01-15 15:41 | pierremarchand | Assigned To | => pierremarchand |
| 2009-01-15 15:41 | pierremarchand | File Added: unselect-group-in-multi.diff | |
| 2009-01-22 19:36 | avox | View Status | private => public |
| 2009-01-26 15:36 | pierremarchand | Relationship added | related to 0000504 |
| 2009-01-26 20:42 | cbradney | Status | assigned => resolved |
| 2009-01-26 20:42 | cbradney | Fixed in Version | => 1.3.5svn |
| 2009-01-26 20:42 | cbradney | Resolution | open => fixed |
| 2009-01-26 20:42 | cbradney | Status | resolved => closed |