From 67cce8d196339101ea70de8bca0e1275b6907866 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Sat, 5 Feb 2022 01:35:26 +0600 Subject: [PATCH 1/6] * Remove unused VRAM dump option * Only emit fileSelected signal if the user didn't cancel file selection * Don't unmount emulator images if the user cancelled file selection --- src/qt/qt_filefield.cpp | 8 +++++--- src/qt/qt_mainwindow.cpp | 15 --------------- src/qt/qt_mediamenu.cpp | 15 ++++++++------- 3 files changed, 13 insertions(+), 25 deletions(-) diff --git a/src/qt/qt_filefield.cpp b/src/qt/qt_filefield.cpp index fbeed6066..2d7268d97 100644 --- a/src/qt/qt_filefield.cpp +++ b/src/qt/qt_filefield.cpp @@ -30,7 +30,9 @@ void FileField::on_pushButton_clicked() { fileName = QFileDialog::getOpenFileName(this, QString(), QString(), filter_, &selectedFilter_); } - fileName_ = fileName; - ui->label->setText(fileName); - emit fileSelected(fileName); + if (!fileName.isNull()) { + fileName_ = fileName; + ui->label->setText(fileName); + emit fileSelected(fileName); + } } diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index 6d017dc7a..4ac507f03 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -384,21 +384,6 @@ MainWindow::MainWindow(QWidget *parent) : }); } #endif - -#ifdef ENABLE_VRAM_DUMP - { -#ifndef MTR_ENABLED - ui->menuTools->addSeparator(); -#endif - auto actionDump_video_RAM = ui->menuTools->addAction(tr("Dump &video RAM")); - actionDump_video_RAM->setShortcut(QKeySequence(Qt::Key_Control + Qt::Key_F1)); -#ifdef Q_OS_MACOS - actionDump_video_RAM->setShortcutVisibleInContextMenu(true); -#endif - connect(actionDump_video_RAM, &QAction::triggered, this, [this] - { svga_dump_vram(); }); - } -#endif } void MainWindow::closeEvent(QCloseEvent *event) { diff --git a/src/qt/qt_mediamenu.cpp b/src/qt/qt_mediamenu.cpp index ff1f1398c..2aabe04a8 100644 --- a/src/qt/qt_mediamenu.cpp +++ b/src/qt/qt_mediamenu.cpp @@ -143,7 +143,10 @@ void MediaMenu::cassetteNewImage() { if (fileinfo.suffix().isEmpty()) { filename.append(".cas"); } - cassetteMount(filename, false); + if (!filename.isNull()) { + if (filename.isEmpty()) cassetteEject(); + else cassetteMount(filename, false); + } } void MediaMenu::cassetteSelectImage(bool wp) { @@ -155,7 +158,7 @@ void MediaMenu::cassetteSelectImage(bool wp) { tr("All files") % util::DlgFilter({ "*" }, true)); - cassetteMount(filename, wp); + if (!filename.isEmpty()) cassetteMount(filename, wp); } void MediaMenu::cassetteMount(const QString& filename, bool wp) { @@ -276,7 +279,7 @@ void MediaMenu::floppySelectImage(int i, bool wp) { tr("All files") % util::DlgFilter({ "*" }, true)); - floppyMount(i, filename, wp); + if (!filename.isEmpty()) floppyMount(i, filename, wp); } void MediaMenu::floppyMount(int i, const QString &filename, bool wp) { @@ -349,8 +352,6 @@ void MediaMenu::cdromMount(int i) { util::DlgFilter({ "*" }, true)); if (filename.isEmpty()) { - auto* imageMenu = dynamic_cast(cdromMenus[i]->children()[cdromImagePos]); - imageMenu->setChecked(false); return; } QByteArray fn = filename.toUtf8().data(); @@ -439,7 +440,7 @@ void MediaMenu::zipSelectImage(int i, bool wp) { tr("All files") % util::DlgFilter({ "*" }, true)); - zipMount(i, filename, wp); + if (!filename.isEmpty()) zipMount(i, filename, wp); } void MediaMenu::zipMount(int i, const QString &filename, bool wp) { @@ -536,7 +537,7 @@ void MediaMenu::moSelectImage(int i, bool wp) { tr("All files") % util::DlgFilter({ "*", }, true)); - moMount(i, filename, wp); + if (!filename.isEmpty()) moMount(i, filename, wp); } void MediaMenu::moMount(int i, const QString &filename, bool wp) { From 54853c2d624993a3f41934364d19c5c9fb628529 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Sat, 5 Feb 2022 01:43:12 +0600 Subject: [PATCH 2/6] Fix for capture on closing/double-clicking at selection on file dialogs By lemondrops --- src/qt/qt_rendererstack.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/src/qt/qt_rendererstack.cpp b/src/qt/qt_rendererstack.cpp index d11b4a0b5..db19e6a7d 100644 --- a/src/qt/qt_rendererstack.cpp +++ b/src/qt/qt_rendererstack.cpp @@ -86,29 +86,33 @@ void RendererStack::mousePoll() #endif } -int ignoreNextMouseEvent = 1; +static int ignoreNextMouseEvent = 1, isButtonDown = 0; void RendererStack::mouseReleaseEvent(QMouseEvent *event) { - if (this->geometry().contains(event->pos()) && event->button() == Qt::LeftButton && !mouse_capture) + if (this->geometry().contains(event->pos()) && event->button() == Qt::LeftButton && !mouse_capture && (isButtonDown & 1)) { plat_mouse_capture(1); this->setCursor(Qt::BlankCursor); if (!ignoreNextMouseEvent) ignoreNextMouseEvent++; // Avoid jumping cursor when moved. + isButtonDown &= ~1; return; } if (mouse_capture && event->button() == Qt::MiddleButton && mouse_get_buttons() < 3) { plat_mouse_capture(0); this->setCursor(Qt::ArrowCursor); + isButtonDown &= ~1; return; } if (mouse_capture) { mousedata.mousebuttons &= ~event->button(); } + isButtonDown &= ~1; } void RendererStack::mousePressEvent(QMouseEvent *event) { + isButtonDown |= 1; if (mouse_capture) { mousedata.mousebuttons |= event->button(); From 633ad83bb2c6cf5d6d6004d94ccc391e8c64e42c Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Sat, 5 Feb 2022 01:46:55 +0600 Subject: [PATCH 3/6] qt: Fix type displays in hard disk dialog --- src/qt/qt_harddiskdialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/qt_harddiskdialog.cpp b/src/qt/qt_harddiskdialog.cpp index 6a3ba6207..5fc8dc9ba 100644 --- a/src/qt/qt_harddiskdialog.cpp +++ b/src/qt/qt_harddiskdialog.cpp @@ -75,7 +75,7 @@ HarddiskDialog::HarddiskDialog(bool existing, QWidget *parent) : uint64_t size = ((uint64_t) hdd_table[i][0]) * hdd_table[i][1] * hdd_table[i][2]; uint64_t size_mb = size >> 11LL; //QString text = QString("%1 MiB (CHS: %2, %3, %4)").arg(size_mb).arg(hdd_table[i][0]).arg(hdd_table[i][1]).arg(hdd_table[i][2]); - QString text = QString::asprintf(tr("%u MB (CHS: %i, %i, %i)").toUtf8().constData(), (size_mb), (hdd_table[i][0]), (hdd_table[i][1]), (hdd_table[i][2])); + QString text = QString::asprintf(tr("%llu MB (CHS: %i, %i, %i)").toUtf8().constData(), (size_mb), (hdd_table[i][0]), (hdd_table[i][1]), (hdd_table[i][2])); Models::AddEntry(model, text, i); } Models::AddEntry(model, tr("Custom..."), 127); From 85a11813d66210c03b972c89e868bdca2bae1c3c Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Sat, 5 Feb 2022 02:04:32 +0600 Subject: [PATCH 4/6] Fix crashes on language settings changes --- src/qt/qt_mainwindow.cpp | 36 +++++++++++++++++++----------------- src/qt/qt_mainwindow.ui | 33 ++++++++++++++++++++++++++++++++- 2 files changed, 51 insertions(+), 18 deletions(-) diff --git a/src/qt/qt_mainwindow.cpp b/src/qt/qt_mainwindow.cpp index 4ac507f03..844edec63 100644 --- a/src/qt/qt_mainwindow.cpp +++ b/src/qt/qt_mainwindow.cpp @@ -104,10 +104,12 @@ MainWindow::MainWindow(QWidget *parent) : { /* get the percentage and mouse message, TODO: refactor ui_window_title() */ auto parts = title.split(" - "); - if (parts.size() < 5) - toolbar_label->setText(parts[1]); - else - toolbar_label->setText(QString("%1 - %2").arg(parts[1], parts.last())); + if (parts.size() >= 2) { + if (parts.size() < 5) + toolbar_label->setText(parts[1]); + else + toolbar_label->setText(QString("%1 - %2").arg(parts[1], parts.last())); + } } #endif ui->actionPause->setChecked(dopause); @@ -346,11 +348,11 @@ MainWindow::MainWindow(QWidget *parent) : #ifdef MTR_ENABLED { ui->menuTools->addSeparator(); - static auto actionBegin_trace = ui->menuTools->addAction(tr("Begin trace")); - static auto actionEnd_trace = ui->menuTools->addAction(tr("End trace")); - actionBegin_trace->setShortcut(QKeySequence(Qt::Key_Control + Qt::Key_T)); - actionEnd_trace->setShortcut(QKeySequence(Qt::Key_Control + Qt::Key_T)); - actionEnd_trace->setDisabled(true); + ui->actionBegin_trace->setVisible(true); + ui->actionEnd_trace->setVisible(true); + ui->actionBegin_trace->setShortcut(QKeySequence(Qt::Key_Control + Qt::Key_T)); + ui->actionEnd_trace->setShortcut(QKeySequence(Qt::Key_Control + Qt::Key_T)); + ui->actionEnd_trace->setDisabled(true); static auto init_trace = [&] { mtr_init("trace.json"); @@ -362,23 +364,23 @@ MainWindow::MainWindow(QWidget *parent) : mtr_shutdown(); }; #ifdef Q_OS_MACOS - actionBegin_trace->setShortcutVisibleInContextMenu(true); - actionEnd_trace->setShortcutVisibleInContextMenu(true); + ui->actionBegin_trace->setShortcutVisibleInContextMenu(true); + ui->actionEnd_trace->setShortcutVisibleInContextMenu(true); #endif static bool trace = false; - connect(actionBegin_trace, &QAction::triggered, this, [this] + connect(ui->actionBegin_trace, &QAction::triggered, this, [this] { if (trace) return; - actionBegin_trace->setDisabled(true); - actionEnd_trace->setDisabled(false); + ui->actionBegin_trace->setDisabled(true); + ui->actionEnd_trace->setDisabled(false); init_trace(); trace = true; }); - connect(actionEnd_trace, &QAction::triggered, this, [this] + connect(ui->actionEnd_trace, &QAction::triggered, this, [this] { if (!trace) return; - actionBegin_trace->setDisabled(false); - actionEnd_trace->setDisabled(true); + ui->actionBegin_trace->setDisabled(false); + ui->actionEnd_trace->setDisabled(true); shutdown_trace(); trace = false; }); diff --git a/src/qt/qt_mainwindow.ui b/src/qt/qt_mainwindow.ui index d7ffb8589..787112399 100644 --- a/src/qt/qt_mainwindow.ui +++ b/src/qt/qt_mainwindow.ui @@ -47,7 +47,7 @@ 0 0 724 - 21 + 22 @@ -79,6 +79,9 @@ + + + @@ -666,6 +669,34 @@ ACPI Shutdown + + + Begin trace + + + Ctrl+T + + + false + + + false + + + + + End trace + + + Ctrl+T + + + false + + + false + + From 2986bfa4a8afdd4549b0f25ce119cfaba44059ca Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Sat, 5 Feb 2022 02:21:54 +0600 Subject: [PATCH 5/6] Revert "qt: Fix type displays in hard disk dialog" This reverts commit 633ad83bb2c6cf5d6d6004d94ccc391e8c64e42c. --- src/qt/qt_harddiskdialog.cpp | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/qt/qt_harddiskdialog.cpp b/src/qt/qt_harddiskdialog.cpp index 5fc8dc9ba..6a3ba6207 100644 --- a/src/qt/qt_harddiskdialog.cpp +++ b/src/qt/qt_harddiskdialog.cpp @@ -75,7 +75,7 @@ HarddiskDialog::HarddiskDialog(bool existing, QWidget *parent) : uint64_t size = ((uint64_t) hdd_table[i][0]) * hdd_table[i][1] * hdd_table[i][2]; uint64_t size_mb = size >> 11LL; //QString text = QString("%1 MiB (CHS: %2, %3, %4)").arg(size_mb).arg(hdd_table[i][0]).arg(hdd_table[i][1]).arg(hdd_table[i][2]); - QString text = QString::asprintf(tr("%llu MB (CHS: %i, %i, %i)").toUtf8().constData(), (size_mb), (hdd_table[i][0]), (hdd_table[i][1]), (hdd_table[i][2])); + QString text = QString::asprintf(tr("%u MB (CHS: %i, %i, %i)").toUtf8().constData(), (size_mb), (hdd_table[i][0]), (hdd_table[i][1]), (hdd_table[i][2])); Models::AddEntry(model, text, i); } Models::AddEntry(model, tr("Custom..."), 127); From dd2fb22e413f4a6f992341c1b6235bbfd83ccae1 Mon Sep 17 00:00:00 2001 From: Cacodemon345 Date: Sat, 5 Feb 2022 02:23:55 +0600 Subject: [PATCH 6/6] Revert "Fix for capture on closing/double-clicking at selection on file dialogs" This reverts commit 54853c2d624993a3f41934364d19c5c9fb628529. --- src/qt/qt_rendererstack.cpp | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/src/qt/qt_rendererstack.cpp b/src/qt/qt_rendererstack.cpp index db19e6a7d..d11b4a0b5 100644 --- a/src/qt/qt_rendererstack.cpp +++ b/src/qt/qt_rendererstack.cpp @@ -86,33 +86,29 @@ void RendererStack::mousePoll() #endif } -static int ignoreNextMouseEvent = 1, isButtonDown = 0; +int ignoreNextMouseEvent = 1; void RendererStack::mouseReleaseEvent(QMouseEvent *event) { - if (this->geometry().contains(event->pos()) && event->button() == Qt::LeftButton && !mouse_capture && (isButtonDown & 1)) + if (this->geometry().contains(event->pos()) && event->button() == Qt::LeftButton && !mouse_capture) { plat_mouse_capture(1); this->setCursor(Qt::BlankCursor); if (!ignoreNextMouseEvent) ignoreNextMouseEvent++; // Avoid jumping cursor when moved. - isButtonDown &= ~1; return; } if (mouse_capture && event->button() == Qt::MiddleButton && mouse_get_buttons() < 3) { plat_mouse_capture(0); this->setCursor(Qt::ArrowCursor); - isButtonDown &= ~1; return; } if (mouse_capture) { mousedata.mousebuttons &= ~event->button(); } - isButtonDown &= ~1; } void RendererStack::mousePressEvent(QMouseEvent *event) { - isButtonDown |= 1; if (mouse_capture) { mousedata.mousebuttons |= event->button();