Commit 1a980008 authored by Albert Astals Cid's avatar Albert Astals Cid
Browse files

Fix crash while undoing with the menu on an empty annotation

BUGS: 453987
parent dbe951e1
Pipeline #179763 passed with stage
in 6 minutes and 44 seconds
...@@ -326,7 +326,16 @@ void AnnotWindow::slotUpdateUndoAndRedoInContextMenu(QMenu *menu) ...@@ -326,7 +326,16 @@ void AnnotWindow::slotUpdateUndoAndRedoInContextMenu(QMenu *menu)
QList<QAction *> actionList = menu->actions(); QList<QAction *> actionList = menu->actions();
enum { UndoAct, RedoAct, CutAct, CopyAct, PasteAct, ClearAct, SelectAllAct, NCountActs }; enum { UndoAct, RedoAct, CutAct, CopyAct, PasteAct, ClearAct, SelectAllAct, NCountActs };
QAction *kundo = KStandardAction::create(KStandardAction::Undo, m_document, SLOT(undo()), menu); QAction *kundo = KStandardAction::create(
KStandardAction::Undo,
m_document,
[doc = m_document] {
// We need a QueuedConnection because undoing may end up destroying the menu this action is on
// because it will undo the addition of the annotation. If it's not queued things gets unhappy
// because the menu is destroyed in the middle of processing the click on the menu itself
QMetaObject::invokeMethod(doc, &Okular::Document::undo, Qt::QueuedConnection);
},
menu);
QAction *kredo = KStandardAction::create(KStandardAction::Redo, m_document, SLOT(redo()), menu); QAction *kredo = KStandardAction::create(KStandardAction::Redo, m_document, SLOT(redo()), menu);
connect(m_document, &Okular::Document::canUndoChanged, kundo, &QAction::setEnabled); connect(m_document, &Okular::Document::canUndoChanged, kundo, &QAction::setEnabled);
connect(m_document, &Okular::Document::canRedoChanged, kredo, &QAction::setEnabled); connect(m_document, &Okular::Document::canRedoChanged, kredo, &QAction::setEnabled);
......
Supports Markdown
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment