From 8f26c01ae50b63addf1f5f5d4363fdd7e25f0a6a Mon Sep 17 00:00:00 2001 From: Megamouse Date: Mon, 5 Jan 2026 19:14:07 +0100 Subject: [PATCH] Qt: try to fix drag and drop issues --- rpcs3/rpcs3qt/cg_disasm_window.cpp | 10 +++------- rpcs3/rpcs3qt/cg_disasm_window.h | 1 - rpcs3/rpcs3qt/log_viewer.cpp | 10 +++------- rpcs3/rpcs3qt/log_viewer.h | 1 - rpcs3/rpcs3qt/main_window.cpp | 26 +++++++++++++++----------- rpcs3/rpcs3qt/main_window.h | 1 - rpcs3/rpcs3qt/patch_manager_dialog.cpp | 11 ++++------- rpcs3/rpcs3qt/patch_manager_dialog.h | 1 - 8 files changed, 25 insertions(+), 36 deletions(-) diff --git a/rpcs3/rpcs3qt/cg_disasm_window.cpp b/rpcs3/rpcs3qt/cg_disasm_window.cpp index 480383b973..87aff89546 100644 --- a/rpcs3/rpcs3qt/cg_disasm_window.cpp +++ b/rpcs3/rpcs3qt/cg_disasm_window.cpp @@ -146,6 +146,7 @@ void cg_disasm_window::dropEvent(QDropEvent* ev) { if (IsValidFile(*ev->mimeData(), true)) { + ev->acceptProposedAction(); ShowDisasm(); } } @@ -154,7 +155,7 @@ void cg_disasm_window::dragEnterEvent(QDragEnterEvent* ev) { if (IsValidFile(*ev->mimeData())) { - ev->accept(); + ev->acceptProposedAction(); } } @@ -162,11 +163,6 @@ void cg_disasm_window::dragMoveEvent(QDragMoveEvent* ev) { if (IsValidFile(*ev->mimeData())) { - ev->accept(); + ev->acceptProposedAction(); } } - -void cg_disasm_window::dragLeaveEvent(QDragLeaveEvent* ev) -{ - ev->accept(); -} diff --git a/rpcs3/rpcs3qt/cg_disasm_window.h b/rpcs3/rpcs3qt/cg_disasm_window.h index dc0a963c84..97aeee54f8 100644 --- a/rpcs3/rpcs3qt/cg_disasm_window.h +++ b/rpcs3/rpcs3qt/cg_disasm_window.h @@ -36,5 +36,4 @@ protected: void dropEvent(QDropEvent* ev) override; void dragEnterEvent(QDragEnterEvent* ev) override; void dragMoveEvent(QDragMoveEvent* ev) override; - void dragLeaveEvent(QDragLeaveEvent* ev) override; }; diff --git a/rpcs3/rpcs3qt/log_viewer.cpp b/rpcs3/rpcs3qt/log_viewer.cpp index 99961809c9..3a566937a7 100644 --- a/rpcs3/rpcs3qt/log_viewer.cpp +++ b/rpcs3/rpcs3qt/log_viewer.cpp @@ -446,6 +446,7 @@ void log_viewer::dropEvent(QDropEvent* ev) { if (is_valid_file(*ev->mimeData(), true)) { + ev->acceptProposedAction(); show_log(); } } @@ -454,7 +455,7 @@ void log_viewer::dragEnterEvent(QDragEnterEvent* ev) { if (is_valid_file(*ev->mimeData())) { - ev->accept(); + ev->acceptProposedAction(); } } @@ -462,15 +463,10 @@ void log_viewer::dragMoveEvent(QDragMoveEvent* ev) { if (is_valid_file(*ev->mimeData())) { - ev->accept(); + ev->acceptProposedAction(); } } -void log_viewer::dragLeaveEvent(QDragLeaveEvent* ev) -{ - ev->accept(); -} - bool log_viewer::eventFilter(QObject* object, QEvent* event) { if (object != m_log_text) diff --git a/rpcs3/rpcs3qt/log_viewer.h b/rpcs3/rpcs3qt/log_viewer.h index 320b2b97c9..85ece2688b 100644 --- a/rpcs3/rpcs3qt/log_viewer.h +++ b/rpcs3/rpcs3qt/log_viewer.h @@ -43,6 +43,5 @@ protected: void dropEvent(QDropEvent* ev) override; void dragEnterEvent(QDragEnterEvent* ev) override; void dragMoveEvent(QDragMoveEvent* ev) override; - void dragLeaveEvent(QDragLeaveEvent* ev) override; bool eventFilter(QObject* object, QEvent* event) override; }; diff --git a/rpcs3/rpcs3qt/main_window.cpp b/rpcs3/rpcs3qt/main_window.cpp index fea8dc8ca4..2778a1d92a 100644 --- a/rpcs3/rpcs3qt/main_window.cpp +++ b/rpcs3/rpcs3qt/main_window.cpp @@ -4077,15 +4077,18 @@ main_window::drop_type main_window::IsValidFile(const QMimeData& md, QStringList void main_window::dropEvent(QDropEvent* event) { - event->accept(); - QStringList drop_paths; + const drop_type type = IsValidFile(*event->mimeData(), &drop_paths); - switch (IsValidFile(*event->mimeData(), &drop_paths)) // get valid file paths and drop type + if (type != drop_type::drop_error) + { + event->acceptProposedAction(); + } + + switch (type) // get valid file paths and drop type { case drop_type::drop_error: { - event->ignore(); break; } case drop_type::drop_rap_edat_pkg: // install the packages @@ -4167,15 +4170,16 @@ void main_window::dropEvent(QDropEvent* event) void main_window::dragEnterEvent(QDragEnterEvent* event) { - event->setAccepted(IsValidFile(*event->mimeData()) != drop_type::drop_error); + if (IsValidFile(*event->mimeData()) != drop_type::drop_error) + { + event->acceptProposedAction(); + } } void main_window::dragMoveEvent(QDragMoveEvent* event) { - event->setAccepted(IsValidFile(*event->mimeData()) != drop_type::drop_error); -} - -void main_window::dragLeaveEvent(QDragLeaveEvent* event) -{ - event->accept(); + if (IsValidFile(*event->mimeData()) != drop_type::drop_error) + { + event->acceptProposedAction(); + } } diff --git a/rpcs3/rpcs3qt/main_window.h b/rpcs3/rpcs3qt/main_window.h index 8a82c125ce..f93f17a484 100644 --- a/rpcs3/rpcs3qt/main_window.h +++ b/rpcs3/rpcs3qt/main_window.h @@ -131,7 +131,6 @@ protected: void dropEvent(QDropEvent* event) override; void dragEnterEvent(QDragEnterEvent* event) override; void dragMoveEvent(QDragMoveEvent* event) override; - void dragLeaveEvent(QDragLeaveEvent* event) override; private: void ConfigureGuiFromSettings(); diff --git a/rpcs3/rpcs3qt/patch_manager_dialog.cpp b/rpcs3/rpcs3qt/patch_manager_dialog.cpp index 04c8906e9b..227a4a3a47 100644 --- a/rpcs3/rpcs3qt/patch_manager_dialog.cpp +++ b/rpcs3/rpcs3qt/patch_manager_dialog.cpp @@ -1020,6 +1020,8 @@ void patch_manager_dialog::dropEvent(QDropEvent* event) return; } + event->acceptProposedAction(); + QMessageBox box(QMessageBox::Icon::Question, tr("Patch Manager"), tr("What do you want to do with the patch file?"), QMessageBox::StandardButton::Cancel, this); QPushButton* button_yes = box.addButton(tr("Import"), QMessageBox::YesRole); QPushButton* button_no = box.addButton(tr("Validate"), QMessageBox::NoRole); @@ -1123,7 +1125,7 @@ void patch_manager_dialog::dragEnterEvent(QDragEnterEvent* event) { if (is_valid_file(*event->mimeData())) { - event->accept(); + event->acceptProposedAction(); } } @@ -1131,15 +1133,10 @@ void patch_manager_dialog::dragMoveEvent(QDragMoveEvent* event) { if (is_valid_file(*event->mimeData())) { - event->accept(); + event->acceptProposedAction(); } } -void patch_manager_dialog::dragLeaveEvent(QDragLeaveEvent* event) -{ - event->accept(); -} - void patch_manager_dialog::download_update(bool automatic, bool auto_accept) { patch_log.notice("Patch download triggered (automatic=%d, auto_accept=%d)", automatic, auto_accept); diff --git a/rpcs3/rpcs3qt/patch_manager_dialog.h b/rpcs3/rpcs3qt/patch_manager_dialog.h index e65bcfb7d3..a8c70c2caa 100644 --- a/rpcs3/rpcs3qt/patch_manager_dialog.h +++ b/rpcs3/rpcs3qt/patch_manager_dialog.h @@ -83,6 +83,5 @@ protected: void dropEvent(QDropEvent* event) override; void dragEnterEvent(QDragEnterEvent* event) override; void dragMoveEvent(QDragMoveEvent* event) override; - void dragLeaveEvent(QDragLeaveEvent* event) override; void closeEvent(QCloseEvent* event) override; };