summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGravatar Lubomir I. Ivanov <neolit123@gmail.com>2017-10-19 01:34:57 +0300
committerGravatar Lubomir I. Ivanov <neolit123@gmail.com>2017-10-19 14:04:38 +0300
commite9673938fb886a829e64ac595f96611dd14934fc (patch)
tree78809d1cb46232cf9f8a7615635c979478162623
parent305a35a48c17b1e5fa26347a1f4006033c827b6c (diff)
downloadsubsurface-e9673938fb886a829e64ac595f96611dd14934fc.tar.gz
printoptions.cpp: correctly remember the last selected template
To find the last selected template index in the combo box, comparing against `printOptions->p_template` would work fine, except the `on_printTemplate_currentIndexChanged()` slot updates `printOptions->p_template` each time QComboBox::addItem() is called. This makes the `for` loop to add new combo box items and find the index of the last selected template not possible. To work around the issue, a local QString variable `storedTemplate` is introduced and it does not change during the `for` loop. Fixes #595 Signed-off-by: Lubomir I. Ivanov <neolit123@gmail.com>
-rw-r--r--desktop-widgets/printoptions.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/desktop-widgets/printoptions.cpp b/desktop-widgets/printoptions.cpp
index 77920f888..b4862e79e 100644
--- a/desktop-widgets/printoptions.cpp
+++ b/desktop-widgets/printoptions.cpp
@@ -53,13 +53,15 @@ void PrintOptions::setupTemplates()
QStringList currList = printOptions->type == print_options::DIVELIST ?
grantlee_templates : grantlee_statistics_templates;
+ // temp. store the template from options, as addItem() updates it via:
+ // on_printTemplate_currentIndexChanged()
+ QString storedTemplate = printOptions->p_template;
qSort(currList);
int current_index = 0;
ui.printTemplate->clear();
Q_FOREACH(const QString& theme, currList) {
- if (theme == printOptions->p_template){
+ if (theme == storedTemplate) // find the stored template in the list
current_index = currList.indexOf(theme);
- }
ui.printTemplate->addItem(theme.split('.')[0], theme);
}
ui.printTemplate->setCurrentIndex(current_index);