From 056b0b16947ac19a0c425aa9d2ff8f589378d3bc Mon Sep 17 00:00:00 2001 From: Akshay Nair Date: Tue, 18 Mar 2025 20:52:36 +0530 Subject: Add keymap evaluation with strict event filter --- src/widgets/MainWindow.cpp | 24 +++++++++++++++++++++++- src/widgets/WebView.cpp | 6 ++++++ src/widgets/WebViewStack.cpp | 5 ++--- 3 files changed, 31 insertions(+), 4 deletions(-) create mode 100644 src/widgets/WebView.cpp (limited to 'src/widgets') diff --git a/src/widgets/MainWindow.cpp b/src/widgets/MainWindow.cpp index d2b1578..7d045bc 100644 --- a/src/widgets/MainWindow.cpp +++ b/src/widgets/MainWindow.cpp @@ -1,8 +1,9 @@ #include #include #include -#include +#include #include +#include #include "InputMediator.hpp" #include "widgets/InputLine.hpp" @@ -13,6 +14,8 @@ MainWindow::MainWindow() { setStyleSheet("background-color: #000; color: #fff;"); setCentralWidget(new QWidget()); // TODO: manage widget memory + qApp->installEventFilter(this); + // Root stacked layout auto layout = new QStackedLayout(); layout->setContentsMargins(0, 0, 0, 0); @@ -31,6 +34,9 @@ MainWindow::MainWindow() { inputMediator = new InputMediator(inputLine, webViewStack, LuaRuntime::instance()); + + keymapEvaluator.addKeymap("default", "a", "Stuff"); + keymapEvaluator.addKeymap("default", "b", "Other stuff"); } void MainWindow::keyPressEvent(QKeyEvent *event) { @@ -57,3 +63,19 @@ void MainWindow::keyPressEvent(QKeyEvent *event) { inputMediator->closeCurrentWebView(); } } + +bool MainWindow::eventFilter(QObject *object, QEvent *event) { + if (event->type() != QEvent::KeyPress && event->type() != QEvent::KeyRelease) + return false; + + if (auto keyEvent = dynamic_cast(event)) { + if (keyEvent->type() == QEvent::KeyPress) + keymapEvaluator.evaluate(keyEvent->modifiers(), (Qt::Key)keyEvent->key()); + + // qDebug() << "EV SELF: " << (object == this) << " | " << event->type(); + // qDebug() << "Key: " << keyEvent->modifiers() << keyEvent->key(); + return true; + } + + return false; +} diff --git a/src/widgets/WebView.cpp b/src/widgets/WebView.cpp new file mode 100644 index 0000000..e00be1f --- /dev/null +++ b/src/widgets/WebView.cpp @@ -0,0 +1,6 @@ +#include +#include + +#include "widgets/WebView.hpp" + +WebView::WebView(QWebEngineProfile *profile) : QWebEngineView(profile) {} diff --git a/src/widgets/WebViewStack.cpp b/src/widgets/WebViewStack.cpp index d89db6e..f915d9e 100644 --- a/src/widgets/WebViewStack.cpp +++ b/src/widgets/WebViewStack.cpp @@ -1,6 +1,5 @@ #include #include -#include #include "widgets/WebViewStack.hpp" @@ -31,8 +30,8 @@ void WebViewStack::openUrl(QUrl url, OpenType openType) { } } -QWebEngineView *WebViewStack::createNewWebView(QUrl url, bool focus) { - auto webview = new QWebEngineView(profile); +WebView *WebViewStack::createNewWebView(QUrl url, bool focus) { + auto webview = new WebView(profile); webview->setUrl(url); layout->addWidget(webview); webViewList.append(webview); -- cgit v1.3.1