From a85dafa18d38e6f2b25ac83af96e07f86503a859 Mon Sep 17 00:00:00 2001 From: Gres Date: Thu, 2 Apr 2020 19:15:44 +0300 Subject: [PATCH] Ensure page is visible during translation Because some translator sites require it --- src/translate/translator.cpp | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/translate/translator.cpp b/src/translate/translator.cpp index 6a7fa97..a1db399 100644 --- a/src/translate/translator.cpp +++ b/src/translate/translator.cpp @@ -153,6 +153,12 @@ void Translator::createPage(const QString &scriptName, const auto &page = pageIt.first->second; page->setIgnoreSslErrors(settings_.ignoreSslErrors); page->setTimeout(settings_.translationTimeout); + page->setVisible(true); + connect(page.get(), &WebPage::visibleChanged, // + page.get(), [page = page.get()](bool on) { + if (!on) + page->setVisible(true); + }); auto log = new QTextEdit(tabs_); tabs_->addTab(log, scriptName); @@ -233,13 +239,27 @@ void Translator::processQueue() std::unordered_set idlePages; std::unordered_set busyTasks; + const auto visible = isVisible(); + if (!visible) + showNormal(); + + auto oldPage = view_->page(); for (auto &i : pages_) { - if (i.second->checkBusy()) - busyTasks.insert(i.second->task().get()); - else + if (!i.second->checkBusy()) { idlePages.insert(i.first); + } else { + busyTasks.insert(i.second->task().get()); + view_->setPage(i.second.get()); + view_->update(); + } } + if (oldPage != view_->page()) + view_->setPage(oldPage); + + if (!visible) + hide(); + if (idlePages.empty()) return;