Also move child items on a return to source, and store group's collapsed state.
svn path=/trunk/KDE/kdelibs/; revision=959734
This commit is contained in:
parent
c8d29894f3
commit
eb07a4988d
@ -72,6 +72,10 @@ ExtenderGroup::ExtenderGroup(Extender *parent, uint groupId)
|
||||
hide();
|
||||
}
|
||||
|
||||
if (!config().readEntry("groupCollapsed", true)) {
|
||||
expandGroup();
|
||||
}
|
||||
|
||||
connect(Plasma::Theme::defaultTheme(), SIGNAL(themeChanged()),
|
||||
this, SLOT(themeChanged()));
|
||||
}
|
||||
@ -113,6 +117,7 @@ void ExtenderGroup::setAutoHide(bool autoHide)
|
||||
void ExtenderGroup::expandGroup()
|
||||
{
|
||||
d->collapsed = false;
|
||||
config().writeEntry("groupCollapsed", d->collapsed);
|
||||
action("collapse")->setVisible(true);
|
||||
action("expand")->setVisible(false);
|
||||
foreach (ExtenderItem *item, extender()->attachedItems()) {
|
||||
@ -126,6 +131,7 @@ void ExtenderGroup::expandGroup()
|
||||
void ExtenderGroup::collapseGroup()
|
||||
{
|
||||
d->collapsed = true;
|
||||
config().writeEntry("groupCollapsed", d->collapsed);
|
||||
action("collapse")->setVisible(false);
|
||||
action("expand")->setVisible(true);
|
||||
foreach (ExtenderItem *item, extender()->attachedItems()) {
|
||||
|
@ -188,12 +188,6 @@ void ExtenderItem::setWidget(QGraphicsItem *widget)
|
||||
widget->setPos(QPointF(d->bgLeft + d->dragLeft, panelSize.height() + d->bgTop));
|
||||
d->widget = widget;
|
||||
d->updateSizeHints();
|
||||
|
||||
/**
|
||||
if (isGroup() && !isVisible()) {
|
||||
widget->hide();
|
||||
}
|
||||
*/
|
||||
}
|
||||
|
||||
QGraphicsItem *ExtenderItem::widget() const
|
||||
@ -229,6 +223,12 @@ void ExtenderItem::setExtender(Extender *extender, const QPointF &pos)
|
||||
//been entirely finished.
|
||||
d->dragStarted = false;
|
||||
|
||||
ExtenderGroup *group = qobject_cast<ExtenderGroup*>(this);
|
||||
QList<ExtenderItem*> childItems;
|
||||
if (group) {
|
||||
childItems = group->items();
|
||||
}
|
||||
|
||||
if (extender == d->extender) {
|
||||
//We're not moving between extenders, so just insert this item back into the layout.
|
||||
setParentItem(extender);
|
||||
@ -281,6 +281,14 @@ void ExtenderItem::setExtender(Extender *extender, const QPointF &pos)
|
||||
|
||||
//we might have to enable or disable the returnToSource button.
|
||||
d->updateToolBox();
|
||||
|
||||
//invoke setGroup on all items belonging to this group, to make sure all children move to the
|
||||
//new extender together with the group.
|
||||
if (group) {
|
||||
foreach (ExtenderItem *item, childItems) {
|
||||
item->setGroup(group);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Extender *ExtenderItem::extender() const
|
||||
@ -584,12 +592,10 @@ void ExtenderItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
||||
}
|
||||
|
||||
ExtenderGroup *group = qobject_cast<ExtenderGroup*>(this);
|
||||
QList<ExtenderItem*> childItems;
|
||||
bool collapsedGroup;
|
||||
if (isGroup()) {
|
||||
collapsedGroup = group->d->collapsed;
|
||||
group->collapseGroup();
|
||||
childItems = group->items();
|
||||
}
|
||||
|
||||
//and execute the drag.
|
||||
@ -607,14 +613,6 @@ void ExtenderItem::mouseMoveEvent(QGraphicsSceneMouseEvent *event)
|
||||
d->extender->itemAddedEvent(this, curPos);
|
||||
}
|
||||
|
||||
//invoke setGroup on all items belonging to this group, to make sure all children move to the
|
||||
//new extender together with the group.
|
||||
if (isGroup()) {
|
||||
foreach (ExtenderItem *item, childItems) {
|
||||
item->setGroup(group);
|
||||
}
|
||||
}
|
||||
|
||||
if (isGroup() && !collapsedGroup) {
|
||||
group->expandGroup();
|
||||
}
|
||||
|
Loading…
x
Reference in New Issue
Block a user