diff --git a/src/gui/EditWidget.cpp b/src/gui/EditWidget.cpp index 92e221607..0c4e80698 100644 --- a/src/gui/EditWidget.cpp +++ b/src/gui/EditWidget.cpp @@ -96,16 +96,19 @@ void EditWidget::setPageHidden(QWidget* widget, bool hidden) } } - if (index != -1) { - m_ui->categoryList->setCategoryHidden(index, hidden); + if (index == -1) { + return; } - if (index == m_ui->stackedWidget->currentIndex()) { + bool changed = m_ui->categoryList->isCategoryHidden(index) != hidden; + m_ui->categoryList->setCategoryHidden(index, hidden); + + if (changed && index == m_ui->stackedWidget->currentIndex()) { int newIndex = m_ui->stackedWidget->currentIndex() - 1; if (newIndex < 0) { newIndex = m_ui->stackedWidget->count() - 1; } - m_ui->stackedWidget->setCurrentIndex(newIndex); + m_ui->categoryList->setCurrentCategory(newIndex); } } diff --git a/src/gui/entry/EditEntryWidget.cpp b/src/gui/entry/EditEntryWidget.cpp index b84fa2488..2b6960753 100644 --- a/src/gui/entry/EditEntryWidget.cpp +++ b/src/gui/entry/EditEntryWidget.cpp @@ -1134,21 +1134,23 @@ bool EditEntryWidget::commitEntry() toKeeAgentSettings(m_sshAgentSettings); #endif + // Begin entry update + if (!m_create) { + m_entry->beginUpdate(); + } + #ifdef WITH_XC_BROWSER if (config()->get(Config::Browser_Enabled).toBool()) { updateBrowser(); } #endif - if (!m_create) { - m_entry->beginUpdate(); - } - updateEntryData(m_entry); if (!m_create) { m_entry->endUpdate(); } + // End entry update m_historyModel->setEntries(m_entry->historyItems(), m_entry); setPageHidden(m_historyWidget, m_history || m_entry->historyItems().count() < 1); @@ -1156,6 +1158,9 @@ bool EditEntryWidget::commitEntry() showMessage(tr("Entry updated successfully."), MessageWidget::Positive); setModified(false); + // Prevent a reload due to entry modified signals + m_entryModifiedTimer.stop(); + return true; }