Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/keepassxreboot/keepassxc.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'src/gui/masterkey/KeyComponentWidget.cpp')
-rw-r--r--src/gui/masterkey/KeyComponentWidget.cpp35
1 files changed, 19 insertions, 16 deletions
diff --git a/src/gui/masterkey/KeyComponentWidget.cpp b/src/gui/masterkey/KeyComponentWidget.cpp
index 7d795aca1..769cbab95 100644
--- a/src/gui/masterkey/KeyComponentWidget.cpp
+++ b/src/gui/masterkey/KeyComponentWidget.cpp
@@ -37,7 +37,7 @@ KeyComponentWidget::KeyComponentWidget(const QString& name, QWidget* parent)
connect(m_ui->removeButton, SIGNAL(clicked(bool)), SIGNAL(componentRemovalRequested()));
connect(m_ui->cancelButton, SIGNAL(clicked(bool)), SLOT(cancelEdit()));
- connect(m_ui->stackedWidget, SIGNAL(currentChanged(int)), SLOT(reset()));
+ connect(m_ui->stackedWidget, SIGNAL(currentChanged(int)), SLOT(resetComponentEditWidget()));
connect(this, SIGNAL(nameChanged(QString)), SLOT(updateComponentName(QString)));
connect(this, SIGNAL(descriptionChanged(QString)), SLOT(updateComponentDescription(QString)));
@@ -46,11 +46,13 @@ KeyComponentWidget::KeyComponentWidget(const QString& name, QWidget* parent)
connect(this, SIGNAL(componentRemovalRequested()), SLOT(doRemove()));
connect(this, SIGNAL(componentAddChanged(bool)), SLOT(updateAddStatus(bool)));
- blockSignals(true);
+ bool prev = blockSignals(true);
setComponentName(name);
+ blockSignals(prev);
+
+ prev = m_ui->stackedWidget->blockSignals(true);
m_ui->stackedWidget->setCurrentIndex(Page::AddNew);
- updateSize();
- blockSignals(false);
+ m_ui->stackedWidget->blockSignals(prev);
}
KeyComponentWidget::~KeyComponentWidget()
@@ -164,21 +166,22 @@ void KeyComponentWidget::cancelEdit()
emit editCanceled();
}
-void KeyComponentWidget::reset()
+void KeyComponentWidget::showEvent(QShowEvent* event)
{
- if (static_cast<Page>(m_ui->stackedWidget->currentIndex()) == Page::Edit) {
- if (!m_ui->componentWidgetLayout->isEmpty()) {
- auto* item = m_ui->componentWidgetLayout->takeAt(0);
- if (item->widget()) {
- delete item->widget();
- }
- delete item;
- }
+ resetComponentEditWidget();
+ QWidget::showEvent(event);
+}
- QWidget* widget = componentEditWidget();
- m_ui->componentWidgetLayout->addWidget(widget);
+void KeyComponentWidget::resetComponentEditWidget()
+{
+ if (!m_componentWidget || static_cast<Page>(m_ui->stackedWidget->currentIndex()) == Page::Edit) {
+ if (m_componentWidget) {
+ delete m_componentWidget;
+ }
- initComponentEditWidget(widget);
+ m_componentWidget = componentEditWidget();
+ m_ui->componentWidgetLayout->addWidget(m_componentWidget);
+ initComponentEditWidget(m_componentWidget);
}
QTimer::singleShot(0, this, SLOT(updateSize()));