Avoid multiple editFinished signals from group view.

This commit is contained in:
Florian Geyer 2012-06-14 23:43:06 +02:00
parent a720903083
commit e578ca9a82
2 changed files with 15 additions and 1 deletions

View File

@ -29,6 +29,7 @@ GroupView::GroupView(Database* db, QWidget* parent)
, m_model(new GroupModel(db, this))
{
QTreeView::setModel(m_model);
m_emitEditFinished = false;
setHeaderHidden(true);
setUniformRowHeights(true);
@ -47,6 +48,7 @@ GroupView::GroupView(Database* db, QWidget* parent)
setDragEnabled(true);
viewport()->setAcceptDrops(true);
setDropIndicatorShown(true);
m_emitEditFinished = true;
}
void GroupView::dragMoveEvent(QDragMoveEvent* event)
@ -74,7 +76,7 @@ void GroupView::expandedChanged(const QModelIndex& index)
{
Group* group = m_model->groupFromIndex(index);
group->setExpanded(isExpanded(index));
Q_EMIT editFinished();
emitEditFinished();
}
void GroupView::recInitExpanded(Group* group)
@ -86,6 +88,13 @@ void GroupView::recInitExpanded(Group* group)
}
}
void GroupView::emitEditFinished()
{
if (m_emitEditFinished) {
Q_EMIT editFinished();
}
}
void GroupView::expandGroup(Group* group, bool expand)
{
QModelIndex index = m_model->index(group);
@ -110,10 +119,13 @@ void GroupView::emitGroupChanged()
void GroupView::syncExpandedState(const QModelIndex& parent, int start, int end)
{
m_emitEditFinished = false;
for (int row = start; row <= end; row++) {
Group* group = m_model->groupFromIndex(m_model->index(row, 0, parent));
recInitExpanded(group);
}
m_emitEditFinished = true;
emitEditFinished();
}
void GroupView::setCurrentGroup(Group* group)

View File

@ -50,8 +50,10 @@ protected:
private:
void recInitExpanded(Group* group);
void emitEditFinished();
GroupModel* const m_model;
bool m_emitEditFinished;
};
#endif // KEEPASSX_GROUPVIEW_H