-
-
Notifications
You must be signed in to change notification settings - Fork 2.2k
Add multi-selection context menu #17782
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
digant73
wants to merge
8
commits into
RPCS3:master
Choose a base branch
from
digant73:multi_selection_context_menu
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
+1,428
−568
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Megamouse
reviewed
Nov 30, 2025
Contributor
Megamouse
left a comment
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
this is way too much code to review in one session.
More will follow at a later time
Contributor
Author
ok, I will book the requested changes and push them in few commits if possible |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Follow up of #17715 to implement #6008
Added multi-selection context menu. The PR is a follow up of #16038 that re-organized the context menu currently limited to a single game selection.
This PR allows to select multiple games from the game list, by the use of usual
Shift,CTRLkeys and mouse click, and so to provide a context menu for the selected games by a mouse right-click.The multiple selection is currently supported by the game list in
List Mode(see limitations reported below).Current limitations:
Grid Mode, This is simply due to the Qt objects currently used for theGrid Mode. It could probably be easily supported by few changes made by main developers. This task remained out of scope in this PR- The selection of multiple games inFixed by Qt: Relax game_list deselection checks #17799List Modeis allowed by clicking on the game's icon only (see screenshot). This limitation is probably due to other interfering registered actions that main developers could easily update in further PR to fix this minor limitationNOTES:
ValidateRemoval()etc.)GetContentInfo()method (collecting content info and path size) seems not needing the use of a concurrent thread to collect disk usage as needed in Add an entry on Log panel's contextual menu to show the main disk usa… #17715. The method uses disk size info from game list. The scan for disk usage is limited to auxiliary folders such as Savestates, Captures, Recordings, Screenshots not providing huge number of files that could slowdown the GUI. Eventually, the concurrent thread can be added. I simply considered it an overkillfixes #6008
Changes log:
game_list_frame.cpp:Action
remove_gamepresent in single-selection context menu moved toDialogRemoveGame()method in order to make it sharable (so reducing code) with the new multi-selection context menuDialogRemoveGame()method based on:GetContentInfo()method collects all the info (info text, data paths etc.) that will be used by new Front-End methodsDialogRemoveGame(),DialogGameInfo()and new BERemoveContentList()methodAdded right-click
Manage Game->Game Infoto display info for the selected content. The related dialog isDialogGameInfo()and it makes use of the shared BEGetContentInfo()methodImplemented new methods previously present (with limitations) in
main_window.cpp:BatchRemoveHDD1Caches()BatchRemoveAllCaches()BatchRemoveContentList()They all are compliant with other similar existing methods in
game_list_frame.cppsuch asBatchRemovePPUCaches()etc. so they will provide a progress bar for the task in progressExisting
BatchActionBySerials()method extended to provide also an action on task finish. It is needed byBatchRemoveContentLists()to finalize the list of titles to be removed from the game list and to refresh the listSome code reduction and more robust checks provided by the use of methods:
IsGameRunning()IsEmulatorRunning()ValidateRemoval()ValidateBatchRemoval()These methods are largely used by all the batch and non-batch removal methods such as
BatchRemovePPUCaches(),RemovePPUCache()etc. allowing to reduce code and to better control preliminary checksSome utility functions created on
system_utils.cpp. A lot of them are functions providing emulator's paths avoiding the possibility of mistakes possible when creating paths on-the-fly (unfortunately largely used in all the code).Of course the functions have been used only by the new code in this PR
main_window.cpp:game_list_frame.cpp:RemoveHDD1Caches()RemoveAllCaches()RemoveSavestates()Area for multi-selection (covered by the red rectangle):
Main context menu:
Remove menu:
Manage Game menu:
Game Info dialog:
Remove Game dialog: