From e9673938fb886a829e64ac595f96611dd14934fc Mon Sep 17 00:00:00 2001 From: "Lubomir I. Ivanov" Date: Thu, 19 Oct 2017 01:34:57 +0300 Subject: 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 --- desktop-widgets/printoptions.cpp | 6 ++++-- 1 file 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); -- cgit v1.2.3-70-g09d2