summaryrefslogtreecommitdiffstats
path: root/examples/webenginewidgets
diff options
context:
space:
mode:
authorAllan Sandfeld Jensen <allan.jensen@qt.io>2017-09-12 14:56:22 +0200
committerMichael BrĂ¼ning <michael.bruning@qt.io>2017-12-06 15:02:13 +0000
commit481155893fd85b4b0770397375ceaf520fcf9db6 (patch)
tree84727f5b93c31debe246995b0072ef1b818e3ef1 /examples/webenginewidgets
parent1c6cacf3020c0c201cd484ba165126123046e53b (diff)
Introduce devtools frontend
Makes it possible to use devtools without using the remote-debugger Task-number: QTBUG-47899 Task-number: QTBUG-50725 Task-number: QTBUG-50766 Change-Id: Id32e13f773372d9917599ebbb64ab4af61bbf1d8 Reviewed-by: Alexandru Croitor <alexandru.croitor@qt.io>
Diffstat (limited to 'examples/webenginewidgets')
-rw-r--r--examples/webenginewidgets/simplebrowser/browser.cpp14
-rw-r--r--examples/webenginewidgets/simplebrowser/browser.h1
-rw-r--r--examples/webenginewidgets/simplebrowser/browserwindow.cpp80
-rw-r--r--examples/webenginewidgets/simplebrowser/browserwindow.h3
-rw-r--r--examples/webenginewidgets/simplebrowser/tabwidget.cpp1
-rw-r--r--examples/webenginewidgets/simplebrowser/tabwidget.h1
-rw-r--r--examples/webenginewidgets/simplebrowser/webview.cpp8
-rw-r--r--examples/webenginewidgets/simplebrowser/webview.h1
8 files changed, 75 insertions, 34 deletions
diff --git a/examples/webenginewidgets/simplebrowser/browser.cpp b/examples/webenginewidgets/simplebrowser/browser.cpp
index c50974531..5c6dbd35e 100644
--- a/examples/webenginewidgets/simplebrowser/browser.cpp
+++ b/examples/webenginewidgets/simplebrowser/browser.cpp
@@ -69,7 +69,19 @@ Browser::Browser()
BrowserWindow *Browser::createWindow(bool offTheRecord)
{
auto profile = offTheRecord ? &m_otrProfile : QWebEngineProfile::defaultProfile();
- auto mainWindow = new BrowserWindow(this, profile);
+ auto mainWindow = new BrowserWindow(this, profile, false);
+ m_windows.append(mainWindow);
+ QObject::connect(mainWindow, &QObject::destroyed, [this, mainWindow]() {
+ m_windows.removeOne(mainWindow);
+ });
+ mainWindow->show();
+ return mainWindow;
+}
+
+BrowserWindow *Browser::createDevToolsWindow()
+{
+ auto profile = QWebEngineProfile::defaultProfile();
+ auto mainWindow = new BrowserWindow(this, profile, true);
m_windows.append(mainWindow);
QObject::connect(mainWindow, &QObject::destroyed, [this, mainWindow]() {
m_windows.removeOne(mainWindow);
diff --git a/examples/webenginewidgets/simplebrowser/browser.h b/examples/webenginewidgets/simplebrowser/browser.h
index 9240cc987..fbc8465d2 100644
--- a/examples/webenginewidgets/simplebrowser/browser.h
+++ b/examples/webenginewidgets/simplebrowser/browser.h
@@ -66,6 +66,7 @@ public:
QVector<BrowserWindow*> windows() { return m_windows; }
BrowserWindow *createWindow(bool offTheRecord = false);
+ BrowserWindow *createDevToolsWindow();
DownloadManagerWidget &downloadManagerWidget() { return m_downloadManagerWidget; }
diff --git a/examples/webenginewidgets/simplebrowser/browserwindow.cpp b/examples/webenginewidgets/simplebrowser/browserwindow.cpp
index 016d58afe..c369a90fa 100644
--- a/examples/webenginewidgets/simplebrowser/browserwindow.cpp
+++ b/examples/webenginewidgets/simplebrowser/browserwindow.cpp
@@ -67,11 +67,11 @@
#include <QVBoxLayout>
#include <QWebEngineProfile>
-BrowserWindow::BrowserWindow(Browser *browser, QWebEngineProfile *profile)
+BrowserWindow::BrowserWindow(Browser *browser, QWebEngineProfile *profile, bool forDevTools)
: m_browser(browser)
, m_profile(profile)
, m_tabWidget(new TabWidget(profile, this))
- , m_progressBar(new QProgressBar(this))
+ , m_progressBar(nullptr)
, m_historyBackAction(nullptr)
, m_historyForwardAction(nullptr)
, m_stopAction(nullptr)
@@ -83,49 +83,59 @@ BrowserWindow::BrowserWindow(Browser *browser, QWebEngineProfile *profile)
setAttribute(Qt::WA_DeleteOnClose, true);
setFocusPolicy(Qt::ClickFocus);
- QToolBar *toolbar = createToolBar();
- addToolBar(toolbar);
- menuBar()->addMenu(createFileMenu(m_tabWidget));
- menuBar()->addMenu(createEditMenu());
- menuBar()->addMenu(createViewMenu(toolbar));
- menuBar()->addMenu(createWindowMenu(m_tabWidget));
- menuBar()->addMenu(createHelpMenu());
+ if (!forDevTools) {
+ m_progressBar = new QProgressBar(this);
+
+ QToolBar *toolbar = createToolBar();
+ addToolBar(toolbar);
+ menuBar()->addMenu(createFileMenu(m_tabWidget));
+ menuBar()->addMenu(createEditMenu());
+ menuBar()->addMenu(createViewMenu(toolbar));
+ menuBar()->addMenu(createWindowMenu(m_tabWidget));
+ menuBar()->addMenu(createHelpMenu());
+ }
QWidget *centralWidget = new QWidget(this);
QVBoxLayout *layout = new QVBoxLayout;
layout->setSpacing(0);
layout->setMargin(0);
- addToolBarBreak();
+ if (!forDevTools) {
+ addToolBarBreak();
- m_progressBar->setMaximumHeight(1);
- m_progressBar->setTextVisible(false);
- m_progressBar->setStyleSheet(QStringLiteral("QProgressBar {border: 0px} QProgressBar::chunk {background-color: #da4453}"));
+ m_progressBar->setMaximumHeight(1);
+ m_progressBar->setTextVisible(false);
+ m_progressBar->setStyleSheet(QStringLiteral("QProgressBar {border: 0px} QProgressBar::chunk {background-color: #da4453}"));
+
+ layout->addWidget(m_progressBar);
+ }
- layout->addWidget(m_progressBar);
layout->addWidget(m_tabWidget);
centralWidget->setLayout(layout);
setCentralWidget(centralWidget);
connect(m_tabWidget, &TabWidget::titleChanged, this, &BrowserWindow::handleWebViewTitleChanged);
- connect(m_tabWidget, &TabWidget::linkHovered, [this](const QString& url) {
- statusBar()->showMessage(url);
- });
- connect(m_tabWidget, &TabWidget::loadProgress, this, &BrowserWindow::handleWebViewLoadProgress);
- connect(m_tabWidget, &TabWidget::webActionEnabledChanged, this, &BrowserWindow::handleWebActionEnabledChanged);
- connect(m_tabWidget, &TabWidget::urlChanged, [this](const QUrl &url) {
- m_urlLineEdit->setText(url.toDisplayString());
- });
- connect(m_tabWidget, &TabWidget::favIconChanged, m_favAction, &QAction::setIcon);
- connect(m_urlLineEdit, &QLineEdit::returnPressed, [this]() {
- m_tabWidget->setUrl(QUrl::fromUserInput(m_urlLineEdit->text()));
- });
+ if (!forDevTools) {
+ connect(m_tabWidget, &TabWidget::linkHovered, [this](const QString& url) {
+ statusBar()->showMessage(url);
+ });
+ connect(m_tabWidget, &TabWidget::loadProgress, this, &BrowserWindow::handleWebViewLoadProgress);
+ connect(m_tabWidget, &TabWidget::webActionEnabledChanged, this, &BrowserWindow::handleWebActionEnabledChanged);
+ connect(m_tabWidget, &TabWidget::urlChanged, [this](const QUrl &url) {
+ m_urlLineEdit->setText(url.toDisplayString());
+ });
+ connect(m_tabWidget, &TabWidget::favIconChanged, m_favAction, &QAction::setIcon);
+ connect(m_tabWidget, &TabWidget::devToolsRequested, this, &BrowserWindow::handleDevToolsRequested);
+ connect(m_urlLineEdit, &QLineEdit::returnPressed, [this]() {
+ m_tabWidget->setUrl(QUrl::fromUserInput(m_urlLineEdit->text()));
+ });
- QAction *focusUrlLineEditAction = new QAction(this);
- addAction(focusUrlLineEditAction);
- focusUrlLineEditAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_L));
- connect(focusUrlLineEditAction, &QAction::triggered, this, [this] () {
- m_urlLineEdit->setFocus(Qt::ShortcutFocusReason);
- });
+ QAction *focusUrlLineEditAction = new QAction(this);
+ addAction(focusUrlLineEditAction);
+ focusUrlLineEditAction->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_L));
+ connect(focusUrlLineEditAction, &QAction::triggered, this, [this] () {
+ m_urlLineEdit->setFocus(Qt::ShortcutFocusReason);
+ });
+ }
handleWebViewTitleChanged(QString());
m_tabWidget->createTab();
@@ -504,3 +514,9 @@ void BrowserWindow::handleShowWindowTriggered()
windows.at(offset)->currentTab()->setFocus();
}
}
+
+void BrowserWindow::handleDevToolsRequested(QWebEnginePage *source)
+{
+ source->setDevToolsPage(m_browser->createDevToolsWindow()->currentTab()->page());
+ source->triggerAction(QWebEnginePage::InspectElement);
+}
diff --git a/examples/webenginewidgets/simplebrowser/browserwindow.h b/examples/webenginewidgets/simplebrowser/browserwindow.h
index b522a6b9d..8f328b751 100644
--- a/examples/webenginewidgets/simplebrowser/browserwindow.h
+++ b/examples/webenginewidgets/simplebrowser/browserwindow.h
@@ -69,7 +69,7 @@ class BrowserWindow : public QMainWindow
Q_OBJECT
public:
- BrowserWindow(Browser *browser, QWebEngineProfile *profile);
+ BrowserWindow(Browser *browser, QWebEngineProfile *profile, bool forDevTools = false);
QSize sizeHint() const override;
TabWidget *tabWidget() const;
WebView *currentTab() const;
@@ -87,6 +87,7 @@ private slots:
void handleWebViewLoadProgress(int);
void handleWebViewTitleChanged(const QString &title);
void handleWebActionEnabledChanged(QWebEnginePage::WebAction action, bool enabled);
+ void handleDevToolsRequested(QWebEnginePage *source);
private:
QMenu *createFileMenu(TabWidget *tabWidget);
diff --git a/examples/webenginewidgets/simplebrowser/tabwidget.cpp b/examples/webenginewidgets/simplebrowser/tabwidget.cpp
index e7376c7a5..8b458a9af 100644
--- a/examples/webenginewidgets/simplebrowser/tabwidget.cpp
+++ b/examples/webenginewidgets/simplebrowser/tabwidget.cpp
@@ -190,6 +190,7 @@ void TabWidget::setupView(WebView *webView)
if (index >= 0)
closeTab(index);
});
+ connect(webView, &WebView::devToolsRequested, this, &TabWidget::devToolsRequested);
}
WebView *TabWidget::createTab()
diff --git a/examples/webenginewidgets/simplebrowser/tabwidget.h b/examples/webenginewidgets/simplebrowser/tabwidget.h
index 5b09f2708..bf83781df 100644
--- a/examples/webenginewidgets/simplebrowser/tabwidget.h
+++ b/examples/webenginewidgets/simplebrowser/tabwidget.h
@@ -77,6 +77,7 @@ signals:
void urlChanged(const QUrl &url);
void favIconChanged(const QIcon &icon);
void webActionEnabledChanged(QWebEnginePage::WebAction action, bool enabled);
+ void devToolsRequested(QWebEnginePage *source);
public slots:
// current tab/page slots
diff --git a/examples/webenginewidgets/simplebrowser/webview.cpp b/examples/webenginewidgets/simplebrowser/webview.cpp
index 868cca037..ab42c4a0a 100644
--- a/examples/webenginewidgets/simplebrowser/webview.cpp
+++ b/examples/webenginewidgets/simplebrowser/webview.cpp
@@ -167,6 +167,7 @@ QWebEngineView *WebView::createWindow(QWebEnginePage::WebWindowType type)
}
case QWebEnginePage::WebDialog: {
WebPopupWindow *popup = new WebPopupWindow(page()->profile());
+ connect(popup->view(), &WebView::devToolsRequested, this, &WebView::devToolsRequested);
return popup->view();
}
}
@@ -185,6 +186,13 @@ void WebView::contextMenuEvent(QContextMenuEvent *event)
menu->insertAction(before, page()->action(QWebEnginePage::OpenLinkInNewWindow));
menu->insertAction(before, page()->action(QWebEnginePage::OpenLinkInNewTab));
}
+ it = std::find(actions.cbegin(), actions.cend(), page()->action(QWebEnginePage::InspectElement));
+ if (it == actions.cend()) {
+ QAction *action = new QAction(menu);
+ action->setText("Inspect Element");
+ connect(action, &QAction::triggered, [this]() { emit devToolsRequested(page()); });
+ menu->addAction(action);
+ }
menu->popup(event->globalPos());
}
diff --git a/examples/webenginewidgets/simplebrowser/webview.h b/examples/webenginewidgets/simplebrowser/webview.h
index 7276ab1c4..8559a68b8 100644
--- a/examples/webenginewidgets/simplebrowser/webview.h
+++ b/examples/webenginewidgets/simplebrowser/webview.h
@@ -75,6 +75,7 @@ protected:
signals:
void webActionEnabledChanged(QWebEnginePage::WebAction webAction, bool enabled);
void favIconChanged(const QIcon &icon);
+ void devToolsRequested(QWebEnginePage *source);
private:
void createWebActionTrigger(QWebEnginePage *page, QWebEnginePage::WebAction);