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:
authorJonathan White <support@dmapps.us>2022-09-30 16:58:11 +0300
committerJonathan White <support@dmapps.us>2022-10-16 00:33:36 +0300
commit6f64c84c7d51793967d7db8c79a5f82b51dcaa20 (patch)
tree2088eaebe37490eb13b8acb73e97c4c3bee3eba2
parentf56fcdd79b3e064c31fadd6be9acc5749f9aed1e (diff)
Fix crash when application is unfocused during saves
* Fix #8504
-rw-r--r--src/gui/DatabaseWidget.cpp7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/gui/DatabaseWidget.cpp b/src/gui/DatabaseWidget.cpp
index 457dd4ec6..7f9d06fe4 100644
--- a/src/gui/DatabaseWidget.cpp
+++ b/src/gui/DatabaseWidget.cpp
@@ -1620,13 +1620,18 @@ bool DatabaseWidget::focusNextPrevChild(bool next)
// [parent] <-> GroupView <-> TagView <-> EntryView <-> EntryPreview <-> [parent]
QList<QWidget*> sequence = {m_groupView, m_tagView, m_entryView, m_previewView};
auto widget = qApp->focusWidget();
+ if (!widget) {
+ return QStackedWidget::focusNextPrevChild(next);
+ }
+ // Find the nearest parent widget in the sequence list
int idx;
do {
idx = sequence.indexOf(widget);
widget = widget->parentWidget();
} while (idx == -1 && widget);
+ // Determine next/previous or wrap around
if (idx == -1) {
idx = next ? 0 : sequence.size() - 1;
} else {
@@ -1636,7 +1641,7 @@ bool DatabaseWidget::focusNextPrevChild(bool next)
// Find the next visible element in the sequence and set the focus
while (idx >= 0 && idx < sequence.size()) {
widget = sequence[idx];
- if (widget->isVisible() && widget->height() > 0 && widget->width() > 0) {
+ if (widget && widget->isVisible() && widget->height() > 0 && widget->width() > 0) {
widget->setFocus();
return widget;
}