mirror of
https://invent.kde.org/network/falkon.git
synced 2024-12-20 02:36:34 +01:00
WebInspector: Implement Inspect Element action
This commit is contained in:
parent
34eac0d9db
commit
74fc271e25
@ -74,9 +74,15 @@ void PopupWebView::requestFullScreen(bool enable)
|
||||
|
||||
void PopupWebView::inspectElement()
|
||||
{
|
||||
WebInspector *inspector = new WebInspector;
|
||||
inspector->setView(this);
|
||||
inspector->show();
|
||||
if (m_inspector) {
|
||||
triggerPageAction(QWebEnginePage::InspectElement);
|
||||
return;
|
||||
}
|
||||
|
||||
m_inspector = new WebInspector;
|
||||
m_inspector->setView(this);
|
||||
m_inspector->inspectElement();
|
||||
m_inspector->show();
|
||||
}
|
||||
|
||||
void PopupWebView::_contextMenuEvent(QContextMenuEvent *event)
|
||||
|
@ -18,11 +18,14 @@
|
||||
#ifndef POPUPWEBVIEW_H
|
||||
#define POPUPWEBVIEW_H
|
||||
|
||||
#include <QPointer>
|
||||
|
||||
#include "qzcommon.h"
|
||||
#include "webview.h"
|
||||
|
||||
class LoadRequest;
|
||||
class Menu;
|
||||
class LoadRequest;
|
||||
class WebInspector;
|
||||
|
||||
class QUPZILLA_EXPORT PopupWebView : public WebView
|
||||
{
|
||||
@ -44,6 +47,7 @@ private:
|
||||
void _contextMenuEvent(QContextMenuEvent *event) Q_DECL_OVERRIDE;
|
||||
|
||||
Menu* m_menu;
|
||||
QPointer<WebInspector> m_inspector;
|
||||
};
|
||||
|
||||
#endif // POPUPWEBVIEW_H
|
||||
|
@ -28,6 +28,7 @@ QList<QWebEngineView*> WebInspector::s_views;
|
||||
|
||||
WebInspector::WebInspector(QWidget *parent)
|
||||
: QWebEngineView(parent)
|
||||
, m_view(Q_NULLPTR)
|
||||
{
|
||||
setAttribute(Qt::WA_DeleteOnClose);
|
||||
setObjectName(QSL("web-inspector"));
|
||||
@ -36,7 +37,7 @@ WebInspector::WebInspector(QWidget *parent)
|
||||
registerView(this);
|
||||
|
||||
connect(page(), &QWebEnginePage::windowCloseRequested, this, &WebInspector::deleteLater);
|
||||
connect(page(), &QWebEnginePage::loadFinished, this, &WebInspector::updateCloseButton);
|
||||
connect(page(), &QWebEnginePage::loadFinished, this, &WebInspector::loadFinished);
|
||||
}
|
||||
|
||||
WebInspector::~WebInspector()
|
||||
@ -46,8 +47,10 @@ WebInspector::~WebInspector()
|
||||
|
||||
void WebInspector::setView(QWebEngineView *view)
|
||||
{
|
||||
m_view = view;
|
||||
|
||||
QUrl inspectorUrl = QUrl(QSL("http://localhost:%1").arg(WEBINSPECTOR_PORT));
|
||||
int index = s_views.indexOf(view);
|
||||
int index = s_views.indexOf(m_view);
|
||||
|
||||
QNetworkReply *reply = mApp->networkManager()->get(QNetworkRequest(inspectorUrl.resolved(QUrl("json/list"))));
|
||||
connect(reply, &QNetworkReply::finished, this, [=]() {
|
||||
@ -63,6 +66,11 @@ void WebInspector::setView(QWebEngineView *view)
|
||||
});
|
||||
}
|
||||
|
||||
void WebInspector::inspectElement()
|
||||
{
|
||||
m_inspectElement = true;
|
||||
}
|
||||
|
||||
void WebInspector::pushView(QWebEngineView *view)
|
||||
{
|
||||
s_views.removeOne(view);
|
||||
@ -79,8 +87,9 @@ void WebInspector::unregisterView(QWebEngineView *view)
|
||||
s_views.removeOne(view);
|
||||
}
|
||||
|
||||
void WebInspector::updateCloseButton()
|
||||
void WebInspector::loadFinished()
|
||||
{
|
||||
// Update close button
|
||||
page()->runJavaScript(QL1S("var toolbar = document.getElementsByClassName('inspector-view-toolbar')[1];"
|
||||
"var button = document.createElement('button');"
|
||||
"button.style.width = '22px';"
|
||||
@ -93,6 +102,12 @@ void WebInspector::updateCloseButton()
|
||||
" window.close();"
|
||||
"});"
|
||||
"toolbar.appendChild(button);"));
|
||||
|
||||
// Inspect element
|
||||
if (m_inspectElement) {
|
||||
m_view->triggerPageAction(QWebEnginePage::InspectElement);
|
||||
m_inspectElement = false;
|
||||
}
|
||||
}
|
||||
|
||||
void WebInspector::keyPressEvent(QKeyEvent *event)
|
||||
|
@ -35,19 +35,23 @@ public:
|
||||
~WebInspector();
|
||||
|
||||
void setView(QWebEngineView *view);
|
||||
void inspectElement();
|
||||
|
||||
static void pushView(QWebEngineView *view);
|
||||
static void registerView(QWebEngineView *view);
|
||||
static void unregisterView(QWebEngineView *view);
|
||||
|
||||
private slots:
|
||||
void updateCloseButton();
|
||||
void loadFinished();
|
||||
|
||||
private:
|
||||
void keyPressEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
|
||||
void keyReleaseEvent(QKeyEvent *event) Q_DECL_OVERRIDE;
|
||||
|
||||
static QList<QWebEngineView*> s_views;
|
||||
|
||||
bool m_inspectElement;
|
||||
QWebEngineView *m_view;
|
||||
};
|
||||
|
||||
#endif // WEBINSPECTORDOCKWIDGET_H
|
||||
|
@ -69,7 +69,10 @@ void TabbedWebView::setBrowserWindow(BrowserWindow* window)
|
||||
|
||||
void TabbedWebView::inspectElement()
|
||||
{
|
||||
m_webTab->showWebInspector();
|
||||
if (m_webTab->haveInspector())
|
||||
triggerPageAction(QWebEnginePage::InspectElement);
|
||||
else
|
||||
m_webTab->showWebInspector(true);
|
||||
}
|
||||
|
||||
WebTab* TabbedWebView::webTab() const
|
||||
|
@ -142,24 +142,29 @@ TabbedWebView* WebTab::webView() const
|
||||
return m_webView;
|
||||
}
|
||||
|
||||
void WebTab::showWebInspector()
|
||||
bool WebTab::haveInspector() const
|
||||
{
|
||||
if (m_splitter->count() != 1)
|
||||
return m_splitter->count() > 1 && m_splitter->widget(1)->inherits("WebInspector");
|
||||
}
|
||||
|
||||
void WebTab::showWebInspector(bool inspectElement)
|
||||
{
|
||||
if (haveInspector())
|
||||
return;
|
||||
|
||||
WebInspector *inspector = new WebInspector(this);
|
||||
inspector->setView(m_webView);
|
||||
if (inspectElement)
|
||||
inspector->inspectElement();
|
||||
|
||||
m_splitter->addWidget(inspector);
|
||||
}
|
||||
|
||||
void WebTab::toggleWebInspector()
|
||||
{
|
||||
if (m_splitter->count() == 1) {
|
||||
if (!haveInspector())
|
||||
showWebInspector();
|
||||
return;
|
||||
}
|
||||
|
||||
if (m_splitter->count() > 1 && m_splitter->widget(1)->inherits("WebInspector"))
|
||||
else
|
||||
delete m_splitter->widget(1);
|
||||
}
|
||||
|
||||
|
@ -85,7 +85,8 @@ public:
|
||||
|
||||
bool isCurrentTab() const;
|
||||
|
||||
void showWebInspector();
|
||||
bool haveInspector() const;
|
||||
void showWebInspector(bool inspectElement = false);
|
||||
void toggleWebInspector();
|
||||
|
||||
bool isRestored() const;
|
||||
|
Loading…
Reference in New Issue
Block a user