diff --git a/conf/okular.kcfg b/conf/okular.kcfg
index 873b231e9..f5d37333f 100644
--- a/conf/okular.kcfg
+++ b/conf/okular.kcfg
@@ -163,6 +163,9 @@
true
+
+ 0
+
diff --git a/part/annotationactionhandler.cpp b/part/annotationactionhandler.cpp
index 7d46590ad..196d28596 100644
--- a/part/annotationactionhandler.cpp
+++ b/part/annotationactionhandler.cpp
@@ -32,6 +32,7 @@
#include "guiutils.h"
#include "pageview.h"
#include "pageviewannotator.h"
+#include "settings.h"
#include "toggleactionmenu.h"
class AnnotationActionHandlerPrivate
@@ -353,6 +354,7 @@ void AnnotationActionHandlerPrivate::populateQuickAnnotations()
q->deselectAllAnnotationActions();
}
+ const bool isFirstTimePopulated = quickTools->count() == 0;
for (auto action : *quickTools) {
action->setShortcut(QKeySequence());
aQuickTools->removeAction(action);
@@ -388,9 +390,24 @@ void AnnotationActionHandlerPrivate::populateQuickAnnotations()
favToolElement = annotator->quickTool(++favToolId);
}
- if (!quickTools->isEmpty()) {
- aQuickTools->setDefaultAction(quickTools->at(0));
+
+ if (quickTools->isEmpty()) {
+ aQuickTools->setDefaultAction(aQuickTools);
+ Okular::Settings::setQuickAnnotationDefaultAction(0);
+ Okular::Settings::self()->save();
+ } else {
+ int defaultAction = Okular::Settings::quickAnnotationDefaultAction();
+ if (isFirstTimePopulated && defaultAction < quickTools->count()) {
+ // we can reach here also if no quick tools were defined before, in that case defaultAction is correctly equal to zero
+ aQuickTools->setDefaultAction(quickTools->at(defaultAction));
+ } else {
+ // if the quick tools have been modified we cannot restore the previous default action
+ aQuickTools->setDefaultAction(quickTools->at(0));
+ Okular::Settings::setQuickAnnotationDefaultAction(0);
+ Okular::Settings::self()->save();
+ }
}
+
QAction *separator = new QAction();
separator->setSeparator(true);
aQuickTools->addAction(separator);
@@ -467,6 +484,8 @@ void AnnotationActionHandlerPrivate::slotQuickToolSelected(int favToolId)
annotator->selectQuickTool(favToolId);
selectedBuiltinTool = -1;
updateConfigActions();
+ Okular::Settings::setQuickAnnotationDefaultAction(favToolId - 1);
+ Okular::Settings::self()->save();
}
void AnnotationActionHandlerPrivate::slotSetColor(AnnotationColor colorType, const QColor &color)
diff --git a/part/pageviewannotator.cpp b/part/pageviewannotator.cpp
index a805e0e99..a6d55bdc9 100644
--- a/part/pageviewannotator.cpp
+++ b/part/pageviewannotator.cpp
@@ -890,7 +890,7 @@ PageViewAnnotator::PageViewAnnotator(PageView *parent, Okular::Document *storage
reparseBuiltinToolsConfig();
reparseQuickToolsConfig();
connect(Okular::Settings::self(), &Okular::Settings::builtinAnnotationToolsChanged, this, &PageViewAnnotator::reparseBuiltinToolsConfig);
- connect(Okular::Settings::self(), &Okular::Settings::quickAnnotationToolsChanged, this, &PageViewAnnotator::reparseQuickToolsConfig);
+ connect(Okular::Settings::self(), &Okular::Settings::quickAnnotationToolsChanged, this, &PageViewAnnotator::reparseQuickToolsConfig, Qt::QueuedConnection);
}
void PageViewAnnotator::reparseConfig()