diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index a0d89e50d..ae6ff955e 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -1252,7 +1252,7 @@ MainWindow::keyPressEvent(QKeyEvent *event) #endif } - checkFullscreenHotkey(true); + checkFullscreenHotkey(); if (keyboard_ismsexit()) plat_mouse_capture(0); @@ -1288,37 +1288,34 @@ MainWindow::keyReleaseEvent(QKeyEvent *event) } } - checkFullscreenHotkey(false); - - if (!send_keyboard_input || event->isAutoRepeat()) - return; - + if (send_keyboard_input && !event->isAutoRepeat()) { #ifdef Q_OS_MACOS - processMacKeyboardInput(false, event); + processMacKeyboardInput(false, event); #else - processKeyboardInput(false, event->nativeScanCode()); + processKeyboardInput(false, event->nativeScanCode()); #endif + } + + checkFullscreenHotkey(); } void -MainWindow::checkFullscreenHotkey(bool down) +MainWindow::checkFullscreenHotkey() { - if (down) { - if (!fs_off_signal && (video_fullscreen > 0) && keyboard_isfsexit()) - fs_off_signal = true; + if (!fs_off_signal && video_fullscreen && keyboard_isfsexit()) { + /* Signal "exit fullscreen mode". */ + fs_off_signal = 1; + } else if (fs_off_signal && video_fullscreen && keyboard_isfsexit_up()) { + ui->actionFullscreen->trigger(); + fs_off_signal = 0; + } - if (!fs_on_signal && (video_fullscreen == 0) && keyboard_isfsenter()) - fs_on_signal = true; - } else { - if (fs_off_signal && (video_fullscreen > 0) && keyboard_isfsexit()) { - ui->actionFullscreen->trigger(); - fs_off_signal = false; - } - - if (fs_on_signal && (video_fullscreen == 0) && keyboard_isfsenter()) { - ui->actionFullscreen->trigger(); - fs_on_signal = false; - } + if (!fs_on_signal && !video_fullscreen && keyboard_isfsenter()) { + /* Signal "enter fullscreen mode". */ + fs_on_signal = 1; + } else if (fs_on_signal && !video_fullscreen && keyboard_isfsenter_up()) { + ui->actionFullscreen->trigger(); + fs_on_signal = 0; } } diff --git a/src/qt/qt_mainwindow.hpp b/src/qt/qt_mainwindow.hpp index 9bbfcaa6a..d5a6b1967 100644 --- a/src/qt/qt_mainwindow.hpp +++ b/src/qt/qt_mainwindow.hpp @@ -32,7 +32,7 @@ public: void blitToWidget(int x, int y, int w, int h, int monitor_index); QSize getRenderWidgetSize(); void setSendKeyboardInput(bool enabled); - void checkFullscreenHotkey(bool down); + void checkFullscreenHotkey(); std::array, 8> renderers; signals: diff --git a/src/qt/qt_winrawinputfilter.cpp b/src/qt/qt_winrawinputfilter.cpp index 64ed22ccf..73eea9ad8 100644 --- a/src/qt/qt_winrawinputfilter.cpp +++ b/src/qt/qt_winrawinputfilter.cpp @@ -237,8 +237,6 @@ WindowsRawInputFilter::keyboard_handle(PRAWINPUT raw) break; } - window->checkFullscreenHotkey(!(rawKB.Flags & RI_KEY_BREAK)); - /* Translate right CTRL to left ALT if the user has so chosen. */ if ((scancode == 0x11d) && rctrl_is_lalt) @@ -248,6 +246,8 @@ WindowsRawInputFilter::keyboard_handle(PRAWINPUT raw) it's not an invalid scan code. */ if (scancode != 0xFFFF) keyboard_input(!(rawKB.Flags & RI_KEY_BREAK), scancode); + + window->checkFullscreenHotkey(); } } else { if (rawKB.MakeCode == 0x1D) {