Skip to content

Qt: Revamp the status bar#14308

Open
kamfretoz wants to merge 3 commits intoPCSX2:masterfrom
kamfretoz:dropdown-statusbar
Open

Qt: Revamp the status bar#14308
kamfretoz wants to merge 3 commits intoPCSX2:masterfrom
kamfretoz:dropdown-statusbar

Conversation

@kamfretoz
Copy link
Copy Markdown
Contributor

Description of Changes

This PR revamps the Status bar and adds a few quick access dropdown menu to the frequently used options. (Savestate slot, Renderer, volume, speed) and also added a GPU Usage monitor as well.

Screenshot_20260415_231527 image

Rationale behind Changes

QoL Improvements. Easier to access these options when using the mouse.

Suggested Testing Steps

Test each dropdowns and see if they works. The changes done are temporary, meaning if you restart the VM the changes made will be gone.

Did you use AI to help find, test, or implement this issue or feature?

Nawh

@kamfretoz kamfretoz force-pushed the dropdown-statusbar branch from 3a4fc6e to 337c26b Compare April 15, 2026 16:32
@kamfretoz kamfretoz marked this pull request as draft April 15, 2026 16:50
@kamfretoz kamfretoz force-pushed the dropdown-statusbar branch 4 times, most recently from 23a0c69 to 0a79c84 Compare April 17, 2026 12:53
@kamfretoz kamfretoz marked this pull request as ready for review April 17, 2026 15:09
@kamfretoz kamfretoz force-pushed the dropdown-statusbar branch from 0a79c84 to 91dc77b Compare April 18, 2026 15:19
Copy link
Copy Markdown
Member

@chaoticgd chaoticgd left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Had a look, found some issues.

I think the design here of bypassing the settings system and applying the changes directly, so that they are reset whenever the configuration is next updated, either from a reset or a setting being changed, is kind of odd.

I'd rather everything just go through the normal settings system and be synchronised with the settings in the config file.

Comment thread pcsx2-qt/MainWindow.cpp
m_status_speed_widget->hide();

m_status_speed_menu = new QMenu(m_status_speed_widget);
m_status_speed_menu->addAction(tr("Unlimited"), []() { VMManager::SetLimiterMode(LimiterModeType::Unlimited); });
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I don't think it's safe to call VMManager::SetLimiterMode from the UI thread like this.

Comment thread pcsx2-qt/MainWindow.cpp

m_status_slot_menu = new QMenu(m_status_slot_widget);
for (s32 i = 1; i <= VMManager::NUM_SAVE_STATE_SLOTS; i++)
m_status_slot_menu->addAction(tr("Slot %1").arg(i), [i]() { Host::RunOnGSThread([i] { SaveStateSelectorUI::SetCurrentSlot(i); }); });
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

I find this UI design quite confusing. The Qt UI doesn't really have a concept of a "selected" save state slot, that's only a thing for the save state selector UI accessible via hotkeys, which the average user probably doesn't even know exists, so I don't think it would be clear what this is referring to.

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Would renaming it to "SaveState slot" or "State slot" be sufficient?

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

No, since the user still doesn't know that it's related to the hotkeys. And if they need to use hotkeys to interact with it anyway, what's the point?

Copy link
Copy Markdown
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

fine, I'll just put it back where it was before (gated behind verbose status bar).

Comment thread pcsx2-qt/MainWindow.cpp
const float fscale = static_cast<float>(scale);
QAction* action = m_status_resolution_menu->addAction(tr("%1x Scale").arg(scale), [fscale]() {
EmuConfig.GS.UpscaleMultiplier = fscale;
MTGS::ApplySettings();
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This should be done from the CPU thread.

Comment thread pcsx2-qt/MainWindow.cpp
m_status_volume_menu->addAction(tr("Mute Audio"), []() {
Host::RunOnCPUThread([]() {
if (VMManager::HasValidVM())
{
Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Incorrect indentation here.

@Mrlinkwii
Copy link
Copy Markdown
Contributor

I don't think is is a good idea to do , all this will do is ending up confusing users

@kamfretoz
Copy link
Copy Markdown
Contributor Author

I think the design here of bypassing the settings system and applying the changes directly, so that they are reset whenever the configuration is next updated, either from a reset or a setting being changed, is kind of odd.

The idea is that i wanted to make it act like hotkeys where these changes made using the status bar dropdowns are only applied temporarily.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants