diff options
author | Morph <39850852+Morph1984@users.noreply.github.com> | 2020-12-01 04:25:01 +0100 |
---|---|---|
committer | Morph <39850852+Morph1984@users.noreply.github.com> | 2020-12-18 16:33:28 +0100 |
commit | 51cddcb8b8d4d12715ba0517638b394244b500bb (patch) | |
tree | 5dda5981c3116c049a4df6f78be0bd63cf523d58 /src | |
parent | main: Add the ability to disable the web applet (diff) | |
download | yuzu-51cddcb8b8d4d12715ba0517638b394244b500bb.tar yuzu-51cddcb8b8d4d12715ba0517638b394244b500bb.tar.gz yuzu-51cddcb8b8d4d12715ba0517638b394244b500bb.tar.bz2 yuzu-51cddcb8b8d4d12715ba0517638b394244b500bb.tar.lz yuzu-51cddcb8b8d4d12715ba0517638b394244b500bb.tar.xz yuzu-51cddcb8b8d4d12715ba0517638b394244b500bb.tar.zst yuzu-51cddcb8b8d4d12715ba0517638b394244b500bb.zip |
Diffstat (limited to 'src')
-rw-r--r-- | src/yuzu/applets/web_browser.cpp | 19 | ||||
-rw-r--r-- | src/yuzu/applets/web_browser.h | 13 | ||||
-rw-r--r-- | src/yuzu/main.cpp | 2 |
3 files changed, 30 insertions, 4 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(); diff --git a/src/yuzu/applets/web_browser.h b/src/yuzu/applets/web_browser.h index 18b8640a7..cfddaa6f8 100644 --- a/src/yuzu/applets/web_browser.h +++ b/src/yuzu/applets/web_browser.h @@ -26,6 +26,10 @@ namespace Core { class System; } +namespace InputCommon { +class InputSubsystem; +} + #ifdef YUZU_USE_QT_WEB_ENGINE enum class UserAgent { @@ -41,7 +45,8 @@ class QtNXWebEngineView : public QWebEngineView { Q_OBJECT public: - explicit QtNXWebEngineView(QWidget* parent, Core::System& system); + explicit QtNXWebEngineView(QWidget* parent, Core::System& system, + InputCommon::InputSubsystem* input_subsystem_); ~QtNXWebEngineView() override; /** @@ -86,6 +91,10 @@ public: public slots: void hide(); +protected: + void keyPressEvent(QKeyEvent* event) override; + void keyReleaseEvent(QKeyEvent* event) override; + private: /** * Handles button presses to execute functions assigned in yuzu_key_callbacks. @@ -138,6 +147,8 @@ private: /// The thread where input is being polled and processed. void InputThread(); + InputCommon::InputSubsystem* input_subsystem; + std::unique_ptr<UrlRequestInterceptor> url_interceptor; std::unique_ptr<InputInterpreter> input_interpreter; diff --git a/src/yuzu/main.cpp b/src/yuzu/main.cpp index ccff08074..f835ee9cb 100644 --- a/src/yuzu/main.cpp +++ b/src/yuzu/main.cpp @@ -376,7 +376,7 @@ void GMainWindow::WebBrowserOpenLocalWebPage(std::string_view main_url, return; } - QtNXWebEngineView web_browser_view(this, Core::System::GetInstance()); + QtNXWebEngineView web_browser_view(this, Core::System::GetInstance(), input_subsystem.get()); ui.action_Pause->setEnabled(false); ui.action_Restart->setEnabled(false); |