Put in a working implementation

This has some issues:
- no feedback
- it shows up even when the keys should be captured by some lineedits
wilder-markers
Jacopo De Simoi 5 years ago committed by Jacopo De Simoi
parent fdfc5a0f04
commit 873e7ac5ee
  1. 4
      src/lib/webengine/webpage.cpp
  2. 2
      src/lib/webengine/webpage.h
  3. 45
      src/lib/webengine/webview.cpp
  4. 1
      src/lib/webengine/webview.h

@ -694,6 +694,10 @@ void WebPage::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, cons
std::cout << qPrintable(sourceID) << ":" << lineNumber << " " << qPrintable(message);
}
void WebPage::followLinkMarker(QString label) {
runJavaScript("Marker.gotoMarker('"+label+"',Marker.getMarkerLink)",[this](const QVariant& v) { QString url=v.toString(); if (!url.isEmpty()) load(v.toUrl());});
}
void WebPage::showLinkMarkers() {
runJavaScript("Marker.generateMarker('a, input, button, [class*=\"btn\"], [aria-haspopup], [role=\"button\"], textarea, select, summary, [class=\"gap\"], [ng-click]')");
}

@ -78,6 +78,8 @@ public:
static void removeSupportedScheme(const QString &scheme);
void showLinkMarkers();
void followLinkMarker(QString);
void markerCallback(const QVariant &);
Q_SIGNALS:
void privacyChanged(bool status);

@ -61,6 +61,7 @@ WebView::WebView(QWidget* parent)
, m_page(0)
, m_firstLoad(false)
, m_followLink(false)
, m_currentLinkMarkerLabel()
{
connect(this, &QWebEngineView::loadStarted, this, &WebView::slotLoadStarted);
connect(this, &QWebEngineView::loadProgress, this, &WebView::slotLoadProgress);
@ -1199,24 +1200,42 @@ void WebView::_keyReleaseEvent(QKeyEvent *event)
event->accept();
}
switch (event->key()) {
case Qt::Key_Escape:
if (isFullScreen()) {
triggerPageAction(QWebEnginePage::ExitFullScreen);
if (m_followLink) {
// We are following links; therefore we need to process the
// key
switch (event->key()) {
case Qt::Key_Space:
// Accept current label
page()->followLinkMarker(m_currentLinkMarkerLabel);
case Qt::Key_Escape:
page()->hideLinkMarkers();
m_currentLinkMarkerLabel=QString();
m_followLink = false;
event->accept();
break;
default:
m_currentLinkMarkerLabel += event->text();
qDebug() << "process letter" << m_currentLinkMarkerLabel;
break;
}
break;
case Qt::Key_F:
if (!m_followLink) {
} else {
switch (event->key()) {
case Qt::Key_Escape:
if (isFullScreen()) {
triggerPageAction(QWebEnginePage::ExitFullScreen);
event->accept();
}
break;
case Qt::Key_F:
page()->showLinkMarkers();
qDebug() << "markers activated";
m_followLink = true;
} else {
page()->hideLinkMarkers();
m_followLink = false;
event->accept();
break;
default:
break;
}
event->accept();
default:
break;
}
}

@ -189,6 +189,7 @@ private:
WebPage* m_page;
bool m_firstLoad;
bool m_followLink;
QString m_currentLinkMarkerLabel;
QPointer<QWidget> m_rwhvqt;
WheelHelper m_wheelHelper;

Loading…
Cancel
Save