diff --git a/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp b/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp index e4154b6b6c..dc1b4f44b7 100644 --- a/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp +++ b/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.cpp @@ -6,9 +6,13 @@ #include #include +#include #include #include #include +#include +#include +#include #include #include #include @@ -26,12 +30,13 @@ #include "DolphinQt/FIFO/FIFOAnalyzer.h" #include "DolphinQt/QtUtils/ModalMessageBox.h" #include "DolphinQt/QtUtils/QueueOnObject.h" +#include "DolphinQt/Resources.h" #include "DolphinQt/Settings.h" -FIFOPlayerWindow::FIFOPlayerWindow(QWidget* parent) : QDialog(parent) +FIFOPlayerWindow::FIFOPlayerWindow(QWidget* parent) : QWidget(parent) { setWindowTitle(tr("FIFO Player")); - setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint); + setWindowIcon(Resources::GetAppIcon()); CreateWidgets(); ConnectWidgets(); @@ -56,6 +61,8 @@ FIFOPlayerWindow::FIFOPlayerWindow(QWidget* parent) : QDialog(parent) OnEmulationStopped(); m_emu_state = state; }); + + installEventFilter(this); } FIFOPlayerWindow::~FIFOPlayerWindow() @@ -167,7 +174,7 @@ void FIFOPlayerWindow::ConnectWidgets() connect(m_save, &QPushButton::clicked, this, &FIFOPlayerWindow::SaveRecording); connect(m_record, &QPushButton::clicked, this, &FIFOPlayerWindow::StartRecording); connect(m_stop, &QPushButton::clicked, this, &FIFOPlayerWindow::StopRecording); - connect(m_button_box, &QDialogButtonBox::rejected, this, &FIFOPlayerWindow::reject); + connect(m_button_box, &QDialogButtonBox::rejected, this, &FIFOPlayerWindow::hide); connect(m_early_memory_updates, &QCheckBox::toggled, this, &FIFOPlayerWindow::OnEarlyMemoryUpdatesChanged); connect(m_frame_range_from, qOverload(&QSpinBox::valueChanged), this, @@ -371,3 +378,15 @@ void FIFOPlayerWindow::UpdateControls() m_save->setEnabled(FifoRecorder::GetInstance().IsRecordingDone()); } + +bool FIFOPlayerWindow::eventFilter(QObject* object, QEvent* event) +{ + // Close when escape is pressed + if (event->type() == QEvent::KeyPress) + { + if (static_cast(event)->matches(QKeySequence::Cancel)) + hide(); + } + + return false; +} diff --git a/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.h b/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.h index 10df9b0b96..d6bc8b3600 100644 --- a/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.h +++ b/Source/Core/DolphinQt/FIFO/FIFOPlayerWindow.h @@ -4,7 +4,7 @@ #pragma once -#include +#include #include "Core/Core.h" @@ -15,7 +15,7 @@ class QPushButton; class QSpinBox; class FIFOAnalyzer; -class FIFOPlayerWindow : public QDialog +class FIFOPlayerWindow : public QWidget { Q_OBJECT public: @@ -45,6 +45,8 @@ private: void UpdateInfo(); void UpdateLimits(); + bool eventFilter(QObject* object, QEvent* event) final override; + QLabel* m_info_label; QPushButton* m_load; QPushButton* m_save; diff --git a/Source/Core/DolphinQt/MainWindow.cpp b/Source/Core/DolphinQt/MainWindow.cpp index 3261a4b740..61e58eb19f 100644 --- a/Source/Core/DolphinQt/MainWindow.cpp +++ b/Source/Core/DolphinQt/MainWindow.cpp @@ -1214,7 +1214,7 @@ void MainWindow::ShowFIFOPlayer() { if (!m_fifo_window) { - m_fifo_window = new FIFOPlayerWindow(this); + m_fifo_window = new FIFOPlayerWindow; connect(m_fifo_window, &FIFOPlayerWindow::LoadFIFORequested, this, [this](const QString& path) { StartGame(path, ScanForSecondDisc::No); }); }