Recreate page on webengine render error/crash
This commit is contained in:
parent
705bae636d
commit
1757b2b89f
@ -130,28 +130,7 @@ 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;
|
|
||||||
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);
|
|
||||||
}
|
|
||||||
|
|
||||||
if (settings_.debugMode) {
|
if (settings_.debugMode) {
|
||||||
show();
|
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
|
WebPage *Translator::currentPage() const
|
||||||
{
|
{
|
||||||
const auto index = tabs_->currentIndex();
|
const auto index = tabs_->currentIndex();
|
||||||
|
@ -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_;
|
||||||
|
Loading…
Reference in New Issue
Block a user