From 1d25832edcfde1eac543a7b7b82545319d79c1e3 Mon Sep 17 00:00:00 2001 From: Jean-Marc Lasgouttes Date: Tue, 2 Jul 2024 14:49:34 +0200 Subject: [PATCH] Avoid crash when InsetBibitem::updateCommand shows a dialog This is one of the places where a dialog is shown (indicating that some bibtems have been renamed) while the metrics are not up to date. Then a draw operation can be triggered too early and a crash can ensue. Use ad-hoc solution for this case and use Buffer::setBusy(). The Alert::warning helper cannot really do that since it doe snot know the current buffer. (cherry picked from commit c84c59eaecf19b1eb8227f9aadc7f5be187b3856) --- ANNOUNCE | 2 ++ src/insets/InsetBibitem.cpp | 2 ++ 2 files changed, 4 insertions(+) diff --git a/ANNOUNCE b/ANNOUNCE index 46e63fd8e9..cd49a9f1e2 100644 --- a/ANNOUNCE +++ b/ANNOUNCE @@ -97,6 +97,8 @@ What's new - Fix crash when deleting rows or columns from table. +- Avoid crash when InsetBibitem::updateCommand shows a dialog. + - Set cursor font after pasting to PassThru (e.g., ERT) inset (bug 12592). - Do not ask about unapplied changes if dialog has been closed. diff --git a/src/insets/InsetBibitem.cpp b/src/insets/InsetBibitem.cpp index 6336da32d4..e08a579173 100644 --- a/src/insets/InsetBibitem.cpp +++ b/src/insets/InsetBibitem.cpp @@ -95,9 +95,11 @@ void InsetBibitem::updateCommand(docstring const & new_key, bool) ++i; key = new_key + '-' + convert(i); } + buffer().setBusy(true); frontend::Alert::warning(_("Keys must be unique!"), bformat(_("The key %1$s already exists,\n" "it will be changed to %2$s."), new_key, key)); + buffer().setBusy(false); } setParam("key", key); buffer().invalidateBibinfoCache(); -- 2.39.5