Recreate page on webengine render error/crash
This commit is contained in:
parent
705bae636d
commit
1757b2b89f
@ -130,28 +130,7 @@ void Translator::updateSettings()
|
||||
return;
|
||||
}
|
||||
|
||||
for (const auto &script : loaded) {
|
||||
const auto &scriptName = script.first;
|
||||
const auto &scriptText = script.second;
|
||||
const auto pageIt = pages_.emplace(
|
||||
scriptName, std::make_unique<WebPage>(*this, scriptText, scriptName));
|
||||
SOFT_ASSERT(pageIt.second, continue);
|
||||
|
||||
const auto &page = pageIt.first->second;
|
||||
page->setIgnoreSslErrors(settings_.ignoreSslErrors);
|
||||
page->setTimeout(settings_.translationTimeout);
|
||||
|
||||
auto log = new QTextEdit(tabs_);
|
||||
tabs_->addTab(log, scriptName);
|
||||
|
||||
connect(page.get(), &WebPage::log, //
|
||||
log, &QTextEdit::append);
|
||||
connect(page.get(), &WebPage::urlChanged, //
|
||||
this, &Translator::updateUrl);
|
||||
|
||||
SOFT_ASSERT(log->document(), continue)
|
||||
log->document()->setMaximumBlockCount(1000);
|
||||
}
|
||||
for (const auto &script : loaded) createPage(script.first, script.second);
|
||||
|
||||
if (settings_.debugMode) {
|
||||
show();
|
||||
@ -160,6 +139,37 @@ void Translator::updateSettings()
|
||||
}
|
||||
}
|
||||
|
||||
void Translator::createPage(const QString &scriptName,
|
||||
const QString &scriptText)
|
||||
{
|
||||
pages_.erase(scriptName);
|
||||
const auto pageIt = pages_.emplace(
|
||||
scriptName, std::make_unique<WebPage>(*this, scriptText, scriptName));
|
||||
SOFT_ASSERT(pageIt.second, return );
|
||||
|
||||
const auto &page = pageIt.first->second;
|
||||
page->setIgnoreSslErrors(settings_.ignoreSslErrors);
|
||||
page->setTimeout(settings_.translationTimeout);
|
||||
|
||||
auto log = new QTextEdit(tabs_);
|
||||
tabs_->addTab(log, scriptName);
|
||||
|
||||
connect(page.get(), &WebPage::log, //
|
||||
log, &QTextEdit::append);
|
||||
connect(page.get(), &WebPage::urlChanged, //
|
||||
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(), return )
|
||||
log->document()->setMaximumBlockCount(1000);
|
||||
}
|
||||
|
||||
WebPage *Translator::currentPage() const
|
||||
{
|
||||
const auto index = tabs_->currentIndex();
|
||||
|
@ -32,6 +32,7 @@ private:
|
||||
void setPageLoadImages(bool isOn);
|
||||
void processQueue();
|
||||
void markTranslated(const TaskPtr &task);
|
||||
void createPage(const QString &scriptName, const QString &scriptText);
|
||||
|
||||
Manager &manager_;
|
||||
const Settings &settings_;
|
||||
|
Loading…
Reference in New Issue
Block a user