summaryrefslogtreecommitdiff
path: root/src/yuzu/applets/web_browser.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/yuzu/applets/web_browser.cpp')
-rw-r--r--src/yuzu/applets/web_browser.cpp19
1 files changed, 17 insertions, 2 deletions
diff --git a/src/yuzu/applets/web_browser.cpp b/src/yuzu/applets/web_browser.cpp
index 52c99d1ba..7e2dc6ee9 100644
--- a/src/yuzu/applets/web_browser.cpp
+++ b/src/yuzu/applets/web_browser.cpp
@@ -15,6 +15,8 @@
#include "common/file_util.h"
#include "core/core.h"
#include "core/frontend/input_interpreter.h"
+#include "input_common/keyboard.h"
+#include "input_common/main.h"
#include "yuzu/applets/web_browser.h"
#include "yuzu/applets/web_browser_scripts.h"
#include "yuzu/main.h"
@@ -45,8 +47,10 @@ constexpr int HIDButtonToKey(HIDButton button) {
} // Anonymous namespace
-QtNXWebEngineView::QtNXWebEngineView(QWidget* parent, Core::System& system)
- : QWebEngineView(parent), url_interceptor(std::make_unique<UrlRequestInterceptor>()),
+QtNXWebEngineView::QtNXWebEngineView(QWidget* parent, Core::System& system,
+ InputCommon::InputSubsystem* input_subsystem_)
+ : QWebEngineView(parent), input_subsystem{input_subsystem_},
+ url_interceptor(std::make_unique<UrlRequestInterceptor>()),
input_interpreter(std::make_unique<InputInterpreter>(system)) {
QWebEngineScript nx_font_css;
QWebEngineScript load_nx_font;
@@ -203,6 +207,14 @@ void QtNXWebEngineView::hide() {
QWidget::hide();
}
+void QtNXWebEngineView::keyPressEvent(QKeyEvent* event) {
+ input_subsystem->GetKeyboard()->PressKey(event->key());
+}
+
+void QtNXWebEngineView::keyReleaseEvent(QKeyEvent* event) {
+ input_subsystem->GetKeyboard()->ReleaseKey(event->key());
+}
+
template <HIDButton... T>
void QtNXWebEngineView::HandleWindowFooterButtonPressedOnce() {
const auto f = [this](HIDButton button) {
@@ -282,6 +294,7 @@ void QtNXWebEngineView::StartInputThread() {
}
void QtNXWebEngineView::StopInputThread() {
+ QWidget::releaseKeyboard();
input_thread_running = false;
if (input_thread.joinable()) {
input_thread.join();
@@ -292,6 +305,8 @@ void QtNXWebEngineView::InputThread() {
// Wait for 1 second before allowing any inputs to be processed.
std::this_thread::sleep_for(std::chrono::seconds(1));
+ QWidget::grabKeyboard();
+
while (input_thread_running) {
input_interpreter->PollInput();