aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/webengine/webview.cpp17
-rw-r--r--src/webengine/webview.h6
-rw-r--r--src/webengine/widgets/pagetoolsmenu.cpp31
-rw-r--r--src/webengine/widgets/pagetoolsmenu.h4
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 <QDialog>
#include <QStatusBar>
#include <QVBoxLayout>
-#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 <QDialog>
+#include <QVBoxLayout>
+#include <QWebEnginePage>
#include <QWebEngineProfile>
#include <QWebEngineScriptCollection>
+#include <QWebEngineView>
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 <QMenu>
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;
};