Stop web view immediately if in background and user disables this
This commit is contained in:
parent
047050ac8f
commit
900377b036
|
@ -174,7 +174,7 @@ void SyncthingApplet::setCurrentConnectionConfigIndex(int index)
|
|||
reconnectRequired = m_connection.applySettings(selectedConfig);
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
if (m_webViewDlg) {
|
||||
m_webViewDlg->applySettings(selectedConfig);
|
||||
m_webViewDlg->applySettings(selectedConfig, false);
|
||||
}
|
||||
#endif
|
||||
config().writeEntry<int>("selectedConfig", index);
|
||||
|
@ -243,7 +243,7 @@ void SyncthingApplet::showWebUI()
|
|||
if (!m_webViewDlg) {
|
||||
m_webViewDlg = new WebViewDialog;
|
||||
if (const auto *connectionConfig = currentConnectionConfig()) {
|
||||
m_webViewDlg->applySettings(*connectionConfig);
|
||||
m_webViewDlg->applySettings(*connectionConfig, true);
|
||||
}
|
||||
connect(m_webViewDlg, &WebViewDialog::destroyed, this, &SyncthingApplet::handleWebViewDeleted);
|
||||
}
|
||||
|
|
|
@ -84,7 +84,8 @@ TrayWidget::TrayWidget(TrayMenu *parent)
|
|||
// setup sync-all button
|
||||
m_cornerFrame = new QFrame(this);
|
||||
auto *cornerFrameLayout = new QHBoxLayout(m_cornerFrame);
|
||||
cornerFrameLayout->setSpacing(0), cornerFrameLayout->setMargin(0);
|
||||
cornerFrameLayout->setSpacing(0);
|
||||
cornerFrameLayout->setMargin(0);
|
||||
//cornerFrameLayout->addStretch();
|
||||
m_cornerFrame->setLayout(cornerFrameLayout);
|
||||
auto *viewIdButton = new QPushButton(m_cornerFrame);
|
||||
|
@ -211,7 +212,7 @@ void TrayWidget::showWebUi()
|
|||
if (!m_webViewDlg) {
|
||||
m_webViewDlg = new WebViewDialog(this);
|
||||
if (m_selectedConnection) {
|
||||
m_webViewDlg->applySettings(*m_selectedConnection);
|
||||
m_webViewDlg->applySettings(*m_selectedConnection, true);
|
||||
}
|
||||
connect(m_webViewDlg, &WebViewDialog::destroyed, this, &TrayWidget::handleWebViewDeleted);
|
||||
}
|
||||
|
@ -381,7 +382,7 @@ void TrayWidget::applySettings(const QString &connectionConfig)
|
|||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
// web view
|
||||
if (m_webViewDlg) {
|
||||
m_webViewDlg->applySettings(*m_selectedConnection);
|
||||
m_webViewDlg->applySettings(*m_selectedConnection, false);
|
||||
}
|
||||
#endif
|
||||
|
||||
|
@ -565,7 +566,7 @@ void TrayWidget::handleConnectionSelected(QAction *connectionAction)
|
|||
#endif
|
||||
#ifndef SYNCTHINGWIDGETS_NO_WEBVIEW
|
||||
if (m_webViewDlg) {
|
||||
m_webViewDlg->applySettings(*m_selectedConnection);
|
||||
m_webViewDlg->applySettings(*m_selectedConnection, false);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
|
|
@ -191,9 +191,9 @@ void WebPage::supplyCredentials(QNetworkReply *reply, QAuthenticator *authentica
|
|||
*/
|
||||
void WebPage::supplyCredentials(QAuthenticator *authenticator)
|
||||
{
|
||||
if (m_dlg && m_dlg->settings().authEnabled) {
|
||||
authenticator->setUser(m_dlg->settings().userName);
|
||||
authenticator->setPassword(m_dlg->settings().password);
|
||||
if (m_dlg && m_dlg->connectionSettings().authEnabled) {
|
||||
authenticator->setUser(m_dlg->connectionSettings().userName);
|
||||
authenticator->setPassword(m_dlg->connectionSettings().password);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -28,7 +28,7 @@ WebViewDialog::WebViewDialog(QWidget *parent)
|
|||
|
||||
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE)
|
||||
m_profile = new QWebEngineProfile(objectName(), this);
|
||||
m_profile->setRequestInterceptor(new WebViewInterceptor(m_settings, m_profile));
|
||||
m_profile->setRequestInterceptor(new WebViewInterceptor(m_connectionSettings, m_profile));
|
||||
m_view->setPage(new WebPage(m_profile, this, m_view));
|
||||
#else
|
||||
m_view->setPage(new WebPage(this, m_view));
|
||||
|
@ -55,13 +55,21 @@ QtGui::WebViewDialog::~WebViewDialog()
|
|||
Settings::values().webView.geometry = saveGeometry();
|
||||
}
|
||||
|
||||
void QtGui::WebViewDialog::applySettings(const Data::SyncthingConnectionSettings &connectionSettings)
|
||||
void QtGui::WebViewDialog::applySettings(const Data::SyncthingConnectionSettings &connectionSettings, bool aboutToShow)
|
||||
{
|
||||
m_settings = connectionSettings;
|
||||
if (!WebPage::isSamePage(m_view->url(), connectionSettings.syncthingUrl)) {
|
||||
// delete the web view if currently hidden and the configuration to keep it running in the backround isn't enabled
|
||||
const auto &settings(Settings::values());
|
||||
if (!aboutToShow && !settings.webView.keepRunning && isHidden()) {
|
||||
deleteLater();
|
||||
return;
|
||||
}
|
||||
|
||||
// apply settings to the view
|
||||
m_connectionSettings = connectionSettings;
|
||||
if (!WebPage::isSamePage(m_view->url(), connectionSettings.syncthingUrl)) { // prevent reload if the URL remains the same
|
||||
m_view->setUrl(connectionSettings.syncthingUrl);
|
||||
}
|
||||
m_view->setZoomFactor(Settings::values().webView.zoomFactor);
|
||||
m_view->setZoomFactor(settings.webView.zoomFactor);
|
||||
}
|
||||
|
||||
#if defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
||||
|
|
|
@ -24,8 +24,8 @@ public:
|
|||
~WebViewDialog() override;
|
||||
|
||||
public slots:
|
||||
void applySettings(const Data::SyncthingConnectionSettings &connectionSettings);
|
||||
const Data::SyncthingConnectionSettings &settings() const;
|
||||
void applySettings(const Data::SyncthingConnectionSettings &connectionSettings, bool aboutToShow);
|
||||
const Data::SyncthingConnectionSettings &connectionSettings() const;
|
||||
#if defined(SYNCTHINGWIDGETS_USE_WEBKIT)
|
||||
bool isModalVisible() const;
|
||||
#endif
|
||||
|
@ -40,15 +40,15 @@ protected:
|
|||
|
||||
private:
|
||||
SYNCTHINGWIDGETS_WEB_VIEW *m_view;
|
||||
Data::SyncthingConnectionSettings m_settings;
|
||||
Data::SyncthingConnectionSettings m_connectionSettings;
|
||||
#if defined(SYNCTHINGWIDGETS_USE_WEBENGINE)
|
||||
QWebEngineProfile *m_profile;
|
||||
#endif
|
||||
};
|
||||
|
||||
inline const Data::SyncthingConnectionSettings &WebViewDialog::settings() const
|
||||
inline const Data::SyncthingConnectionSettings &WebViewDialog::connectionSettings() const
|
||||
{
|
||||
return m_settings;
|
||||
return m_connectionSettings;
|
||||
}
|
||||
|
||||
} // namespace QtGui
|
||||
|
|
Loading…
Reference in New Issue