diff --git a/src/gui/group/GroupView.cpp b/src/gui/group/GroupView.cpp index 51100ea5..aa2e09d9 100644 --- a/src/gui/group/GroupView.cpp +++ b/src/gui/group/GroupView.cpp @@ -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) diff --git a/src/gui/group/GroupView.h b/src/gui/group/GroupView.h index 08ed5ddb..94f52086 100644 --- a/src/gui/group/GroupView.h +++ b/src/gui/group/GroupView.h @@ -50,8 +50,10 @@ protected: private: void recInitExpanded(Group* group); + void emitEditFinished(); GroupModel* const m_model; + bool m_emitEditFinished; }; #endif // KEEPASSX_GROUPVIEW_H