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-activities
Jacopo De Simoi 5 years ago
parent 02e7ff35bd
commit 980c6a5fe7
  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

@ -707,6 +707,10 @@ void WebPage::javaScriptConsoleMessage(JavaScriptConsoleMessageLevel level, cons
std::cout << qPrintable(sourceID) << ":" << lineNumber << " " << qPrintable(message); 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() { void WebPage::showLinkMarkers() {
runJavaScript("Marker.generateMarker('a, input, button, [class*=\"btn\"], [aria-haspopup], [role=\"button\"], textarea, select, summary, [class=\"gap\"], [ng-click]')"); runJavaScript("Marker.generateMarker('a, input, button, [class*=\"btn\"], [aria-haspopup], [role=\"button\"], textarea, select, summary, [class=\"gap\"], [ng-click]')");
} }

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

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

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

Loading…
Cancel
Save