Mercurial > hg > easyhg
diff changesetitem.cpp @ 119:005a54380502
* Make scene remember which item has its details showing, and remove the previous one when a new one is clicked
author | Chris Cannam |
---|---|
date | Sun, 28 Nov 2010 21:52:00 +0000 |
parents | 9734fb0d6fff |
children | 1f27f71a7034 |
line wrap: on
line diff
--- a/changesetitem.cpp Fri Nov 26 23:49:48 2010 +0000 +++ b/changesetitem.cpp Sun Nov 28 21:52:00 2010 +0000 @@ -44,15 +44,9 @@ } void -ChangesetItem::mousePressEvent(QGraphicsSceneMouseEvent *e) +ChangesetItem::showDetail() { - DEBUG << "ChangesetItem::mousePressEvent" << endl; - //!!! how best to handle this? - if (m_detail) { - delete m_detail; - m_detail = 0; - return; - } + if (m_detail) return; m_detail = new ChangesetDetailItem(m_changeset); m_detail->setZValue(zValue() + 1); scene()->addItem(m_detail); @@ -60,6 +54,26 @@ if (m_wide) w = 180; m_detail->moveBy(x() - (m_detail->boundingRect().width() - 50) / 2, y() + 60); + emit detailShown(); +} + +void +ChangesetItem::hideDetail() +{ + delete m_detail; + m_detail = 0; + emit detailHidden(); +} + +void +ChangesetItem::mousePressEvent(QGraphicsSceneMouseEvent *e) +{ + DEBUG << "ChangesetItem::mousePressEvent" << endl; + if (m_detail) { + hideDetail(); + } else { + showDetail(); + } } void