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:
Rob Scheepmaker 2009-04-26 23:49:22 +00:00
parent c8d29894f3
commit eb07a4988d
2 changed files with 20 additions and 16 deletions

View File

@ -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()) {

View File

@ -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();
}