diff --git a/src/mainwindow.cpp b/src/mainwindow.cpp index cc5039d..5a5736d 100644 --- a/src/mainwindow.cpp +++ b/src/mainwindow.cpp @@ -1182,7 +1182,6 @@ void MainWindow::clearUi() noexcept { m_ui->pushUpgradeAll->setHidden(true); } m_ui->comboFilterFlatpak->setCurrentIndex(0); - m_ui->comboFilterRepo->setCurrentIndex(0); blockSignals(false); } @@ -1691,14 +1690,13 @@ void MainWindow::on_current_tab_changed(int index) noexcept { m_tree->blockSignals(false); } - // save the search text + // save the search text and filter state QString search_str; - int filter_idx = 0; if (m_tree == m_ui->treePopularApps) { search_str = m_ui->searchPopular->text(); } else if (m_tree == m_ui->treeRepo) { search_str = m_ui->searchBoxRepo->text(); - filter_idx = m_ui->comboFilterRepo->currentIndex(); + m_filterIndexRepo = m_ui->comboFilterRepo->currentIndex(); } else if (m_tree == m_ui->treeFlatpak) { search_str = m_ui->searchBoxFlatpak->text(); } @@ -1723,7 +1721,7 @@ void MainWindow::on_current_tab_changed(int index) noexcept { if (m_tree->topLevelItemCount() == 0) { buildPackageLists(); } - m_ui->comboFilterRepo->setCurrentIndex(filter_idx); + m_ui->comboFilterRepo->setCurrentIndex(m_filterIndexRepo); findPackageOther(); m_ui->searchBoxRepo->setFocus(); break; @@ -1961,10 +1959,24 @@ void MainWindow::buildChangeList(QTreeWidgetItem* item) noexcept { // Force repo upgrade void MainWindow::on_push_force_update_repo() noexcept { - m_ui->searchBoxRepo->clear(); - m_ui->comboFilterRepo->setCurrentIndex(0); + // Save filter and search state + const int filterIndex = m_ui->comboFilterRepo->currentIndex(); + const QString searchText = m_ui->searchBoxRepo->text(); + m_alpm_manager->refresh_alpm(); buildPackageLists(true); + + // Restore filter and search state + m_ui->comboFilterRepo->setCurrentIndex(filterIndex); + m_ui->searchBoxRepo->setText(searchText); + + // Re-apply filter and search + if (filterIndex > 0) { + filterChanged(m_ui->comboFilterRepo->currentText()); + } + if (!searchText.isEmpty()) { + findPackageOther(); + } } // Hide/unhide lib/-dev packages diff --git a/src/mainwindow.hpp b/src/mainwindow.hpp index 9935520..73ac169 100644 --- a/src/mainwindow.hpp +++ b/src/mainwindow.hpp @@ -215,6 +215,7 @@ class MainWindow : public QDialog { alpm::AlpmManagerPtr m_alpm_manager; QString m_indexFilterFP{}; + int m_filterIndexRepo{}; bool m_warning_flatpaks{}; bool m_setup_assistant_mode{}; int m_height_app{};