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 c84c59eaec)
This commit is contained in:
Jean-Marc Lasgouttes 2024-07-02 14:49:34 +02:00 committed by Richard Kimberly Heck
parent b295b39de1
commit 1d25832edc
2 changed files with 4 additions and 0 deletions

View File

@ -97,6 +97,8 @@ What's new
- Fix crash when deleting rows or columns from table. - 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). - Set cursor font after pasting to PassThru (e.g., ERT) inset (bug 12592).
- Do not ask about unapplied changes if dialog has been closed. - Do not ask about unapplied changes if dialog has been closed.

View File

@ -95,9 +95,11 @@ void InsetBibitem::updateCommand(docstring const & new_key, bool)
++i; ++i;
key = new_key + '-' + convert<docstring>(i); key = new_key + '-' + convert<docstring>(i);
} }
buffer().setBusy(true);
frontend::Alert::warning(_("Keys must be unique!"), frontend::Alert::warning(_("Keys must be unique!"),
bformat(_("The key %1$s already exists,\n" bformat(_("The key %1$s already exists,\n"
"it will be changed to %2$s."), new_key, key)); "it will be changed to %2$s."), new_key, key));
buffer().setBusy(false);
} }
setParam("key", key); setParam("key", key);
buffer().invalidateBibinfoCache(); buffer().invalidateBibinfoCache();