From b14282fcc54f98725961e13e089f8b211cfa4a88 Mon Sep 17 00:00:00 2001 From: Aqua-sama Date: Mon, 2 Apr 2018 23:06:43 +0200 Subject: Only create developer tools page when action is triggered --- src/webengine/webview.cpp | 17 +---------------- src/webengine/webview.h | 6 ++---- src/webengine/widgets/pagetoolsmenu.cpp | 31 ++++++++++++++++++++++++++++--- src/webengine/widgets/pagetoolsmenu.h | 4 ++++ 4 files changed, 35 insertions(+), 23 deletions(-) diff --git a/src/webengine/webview.cpp b/src/webengine/webview.cpp index 520ce50..7734aa0 100644 --- a/src/webengine/webview.cpp +++ b/src/webengine/webview.cpp @@ -8,12 +8,12 @@ #include "webview.h" #include "mainwindow/mainwindow.h" +#include "mainwindow/widgets/tabbar.h" #include "widgets/pagemenu.h" #include "widgets/pagetoolsmenu.h" #include #include #include -#include "mainwindow/widgets/tabbar.h" WebView::WebView(MainWindow *parentMainWindow, QWidget *parent) : QWebEngineView(parent) @@ -38,7 +38,6 @@ WebView::WebView(MainWindow *parentMainWindow, QWidget *parent) m_pageMenu = new PageMenu(this); m_toolsMenu = new PageToolsMenu(this); - m_devToolsPage = new QWebEnginePage(this); } WebView::~WebView() @@ -57,24 +56,10 @@ void WebView::setPage(QWebEnginePage *page) Q_CHECK_PTR(page); // make sure the page gets cleaned up if we replace it by taking ownership page->setParent(this); - page->setDevToolsPage(m_devToolsPage); connect(page, &QWebEnginePage::linkHovered, this, &WebView::handleLinkHovered); QWebEngineView::setPage(page); } -void WebView::popupPage(QWebEnginePage *page) -{ - Q_CHECK_PTR(page); - auto *popup = new QDialog(this); - auto *view = new QWebEngineView(popup); - view->setPage(page); - - auto *l = new QVBoxLayout(popup); - l->addWidget(view); - - popup->show(); -} - bool WebView::isLoaded() const { return m_loaded; diff --git a/src/webengine/webview.h b/src/webengine/webview.h index 0750aee..233565e 100644 --- a/src/webengine/webview.h +++ b/src/webengine/webview.h @@ -27,13 +27,13 @@ public: ~WebView() override; QMenu *pageMenu(); - QMenu *toolsMenu() { + QMenu *toolsMenu() + { Q_CHECK_PTR(m_toolsMenu); return m_toolsMenu; } void setPage(QWebEnginePage *page); - void popupPage(QWebEnginePage *page); bool isLoaded() const; int loadProgress() const; @@ -59,8 +59,6 @@ private: bool m_loaded; int m_loadProgress; - - QWebEnginePage *m_devToolsPage; }; WebView *createWebView(const QUrl &url, WebEngineProfile *profile, MainWindow *parent); diff --git a/src/webengine/widgets/pagetoolsmenu.cpp b/src/webengine/widgets/pagetoolsmenu.cpp index 9a85f69..34c9d65 100644 --- a/src/webengine/widgets/pagetoolsmenu.cpp +++ b/src/webengine/widgets/pagetoolsmenu.cpp @@ -8,8 +8,12 @@ #include "pagetoolsmenu.h" #include "../webview.h" +#include +#include +#include #include #include +#include PageToolsMenu::PageToolsMenu(WebView *parent) : QMenu(parent) @@ -24,14 +28,35 @@ void PageToolsMenu::createEntries() { clear(); - auto *scriptsMenu = new QMenu(tr("Injected scripts"), this); + auto *scriptsMenu = new QMenu(tr("Injected Scripts"), this); for(const auto &script : parentView->page()->scripts().toList()) { scriptsMenu->addAction(script.name())->setEnabled(false); } addMenu(scriptsMenu); - auto *devToolsAction = addAction(tr("Dev tools page")); + auto *devToolsAction = addAction(tr("Developer Tools")); connect(devToolsAction, &QAction::triggered, this, [this]() { - parentView->popupPage(parentView->page()->devToolsPage()); + createDevToolsDialog(parentView->page())->show(); }); } + +QDialog *PageToolsMenu::createDevToolsDialog(QWebEnginePage *page) +{ + Q_CHECK_PTR(page); + + auto *popup = new QDialog(nullptr); + popup->setWindowTitle(tr("Developer Tools")); + popup->setAttribute(Qt::WA_DeleteOnClose, true); + + auto *view = new QWebEngineView(popup); + auto *devPage = new QWebEnginePage(view); + + view->setPage(devPage); + page->setDevToolsPage(devPage); + + auto *l = new QVBoxLayout(popup); + l->setContentsMargins(0, 0, 0, 0); + l->addWidget(view); + + return popup; +} diff --git a/src/webengine/widgets/pagetoolsmenu.h b/src/webengine/widgets/pagetoolsmenu.h index 010bb43..f234d0e 100644 --- a/src/webengine/widgets/pagetoolsmenu.h +++ b/src/webengine/widgets/pagetoolsmenu.h @@ -12,6 +12,8 @@ #include class WebView; +class QDialog; +class QWebEnginePage; class PageToolsMenu : public QMenu { Q_OBJECT @@ -22,6 +24,8 @@ public slots: void createEntries(); private: + QDialog *createDevToolsDialog(QWebEnginePage *page); + WebView *parentView; }; -- cgit v1.2.1