Recreate page on webengine render error/crash

This commit is contained in:
Gres 2020-03-21 13:04:50 +03:00
parent 705bae636d
commit 1757b2b89f
2 changed files with 33 additions and 22 deletions

View File

@ -130,12 +130,22 @@ void Translator::updateSettings()
return; return;
} }
for (const auto &script : loaded) { for (const auto &script : loaded) createPage(script.first, script.second);
const auto &scriptName = script.first;
const auto &scriptText = script.second; if (settings_.debugMode) {
show();
} else {
hide();
}
}
void Translator::createPage(const QString &scriptName,
const QString &scriptText)
{
pages_.erase(scriptName);
const auto pageIt = pages_.emplace( const auto pageIt = pages_.emplace(
scriptName, std::make_unique<WebPage>(*this, scriptText, scriptName)); scriptName, std::make_unique<WebPage>(*this, scriptText, scriptName));
SOFT_ASSERT(pageIt.second, continue); SOFT_ASSERT(pageIt.second, return );
const auto &page = pageIt.first->second; const auto &page = pageIt.first->second;
page->setIgnoreSslErrors(settings_.ignoreSslErrors); page->setIgnoreSslErrors(settings_.ignoreSslErrors);
@ -148,18 +158,18 @@ void Translator::updateSettings()
log, &QTextEdit::append); log, &QTextEdit::append);
connect(page.get(), &WebPage::urlChanged, // connect(page.get(), &WebPage::urlChanged, //
this, &Translator::updateUrl); this, &Translator::updateUrl);
connect(page.get(), &WebPage::renderProcessTerminated, //
this,
[this, scriptName,
scriptText](WebPage::RenderProcessTerminationStatus status) {
if (status != WebPage::NormalTerminationStatus)
createPage(scriptName, scriptText);
});
SOFT_ASSERT(log->document(), continue) SOFT_ASSERT(log->document(), return )
log->document()->setMaximumBlockCount(1000); log->document()->setMaximumBlockCount(1000);
} }
if (settings_.debugMode) {
show();
} else {
hide();
}
}
WebPage *Translator::currentPage() const WebPage *Translator::currentPage() const
{ {
const auto index = tabs_->currentIndex(); const auto index = tabs_->currentIndex();

View File

@ -32,6 +32,7 @@ private:
void setPageLoadImages(bool isOn); void setPageLoadImages(bool isOn);
void processQueue(); void processQueue();
void markTranslated(const TaskPtr &task); void markTranslated(const TaskPtr &task);
void createPage(const QString &scriptName, const QString &scriptText);
Manager &manager_; Manager &manager_;
const Settings &settings_; const Settings &settings_;