diff --git a/src/contentmanager.cpp b/src/contentmanager.cpp index f2bd5fd..0f9a0a8 100644 --- a/src/contentmanager.cpp +++ b/src/contentmanager.cpp @@ -906,5 +906,6 @@ void ContentManager::updateLibraryFromDir(QString monitorDir) void ContentManager::handleDisappearedZimFile(QString bookId) { - mp_library->removeBookFromLibraryById(bookId); + if (!KiwixApp::instance()->getTabWidget()->getTabZimIds().contains(bookId)) + mp_library->removeBookFromLibraryById(bookId); } diff --git a/src/kiwixapp.cpp b/src/kiwixapp.cpp index 878824f..2df37e8 100644 --- a/src/kiwixapp.cpp +++ b/src/kiwixapp.cpp @@ -106,10 +106,10 @@ void KiwixApp::init() mp_manager->asyncUpdateLibraryFromDir(monitorDir); }); - setupDirectoryMonitoring(); - + /* Restore Tabs before directory monitoring to ensure we know what tabs user had. */ restoreTabs(); restoreWindowState(); + setupDirectoryMonitoring(); } void KiwixApp::setupDirectoryMonitoring() diff --git a/src/tabbar.cpp b/src/tabbar.cpp index 421b49d..0cb1586 100644 --- a/src/tabbar.cpp +++ b/src/tabbar.cpp @@ -284,6 +284,15 @@ QStringList TabBar::getTabUrls() const { return idList; } +QStringList TabBar::getTabZimIds() const +{ + QStringList idList; + for (int index = 0; index <= mp_stackedWidget->count(); index++) + if (ZimView* zv = qobject_cast(mp_stackedWidget->widget(index))) + idList.push_back(zv->getWebView()->zimId()); + return idList; +} + void TabBar::closeTab(int index) { // The first and last tabs (i.e. the library tab and the + (new tab) button) diff --git a/src/tabbar.h b/src/tabbar.h index f830351..9310756 100644 --- a/src/tabbar.h +++ b/src/tabbar.h @@ -50,6 +50,7 @@ public: void openFindInPageBar(); void closeTabsByZimId(const QString &id); QStringList getTabUrls() const; + QStringList getTabZimIds() const; protected: void mousePressEvent(QMouseEvent *event);