diff options
author | Jonathan White <support@dmapps.us> | 2022-09-30 16:58:11 +0300 |
---|---|---|
committer | Jonathan White <support@dmapps.us> | 2022-10-16 00:33:36 +0300 |
commit | 6f64c84c7d51793967d7db8c79a5f82b51dcaa20 (patch) | |
tree | 2088eaebe37490eb13b8acb73e97c4c3bee3eba2 | |
parent | f56fcdd79b3e064c31fadd6be9acc5749f9aed1e (diff) |
Fix crash when application is unfocused during saves
* Fix #8504
-rw-r--r-- | src/gui/DatabaseWidget.cpp | 7 |
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; } |