mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-04-24 14:24:54 +00:00
Merge eb825bbf4c
into 879a8889aa
This commit is contained in:
commit
1df4b17042
5 changed files with 64 additions and 5 deletions
|
@ -314,6 +314,8 @@ add_executable(dolphin-emu
|
||||||
QtUtils/ImageConverter.h
|
QtUtils/ImageConverter.h
|
||||||
QtUtils/ModalMessageBox.cpp
|
QtUtils/ModalMessageBox.cpp
|
||||||
QtUtils/ModalMessageBox.h
|
QtUtils/ModalMessageBox.h
|
||||||
|
QtUtils/NonAutodismissibleMenu.cpp
|
||||||
|
QtUtils/NonAutodismissibleMenu.h
|
||||||
QtUtils/NonDefaultQPushButton.cpp
|
QtUtils/NonDefaultQPushButton.cpp
|
||||||
QtUtils/NonDefaultQPushButton.h
|
QtUtils/NonDefaultQPushButton.h
|
||||||
QtUtils/ParallelProgressDialog.h
|
QtUtils/ParallelProgressDialog.h
|
||||||
|
|
|
@ -195,6 +195,7 @@
|
||||||
<ClCompile Include="QtUtils\FileOpenEventFilter.cpp" />
|
<ClCompile Include="QtUtils\FileOpenEventFilter.cpp" />
|
||||||
<ClCompile Include="QtUtils\ImageConverter.cpp" />
|
<ClCompile Include="QtUtils\ImageConverter.cpp" />
|
||||||
<ClCompile Include="QtUtils\ModalMessageBox.cpp" />
|
<ClCompile Include="QtUtils\ModalMessageBox.cpp" />
|
||||||
|
<ClCompile Include="QtUtils\NonAutodismissibleMenu.cpp" />
|
||||||
<ClCompile Include="QtUtils\NonDefaultQPushButton.cpp" />
|
<ClCompile Include="QtUtils\NonDefaultQPushButton.cpp" />
|
||||||
<ClCompile Include="QtUtils\PartiallyClosableTabWidget.cpp" />
|
<ClCompile Include="QtUtils\PartiallyClosableTabWidget.cpp" />
|
||||||
<ClCompile Include="QtUtils\QtUtils.cpp" />
|
<ClCompile Include="QtUtils\QtUtils.cpp" />
|
||||||
|
|
|
@ -63,6 +63,7 @@
|
||||||
#include "DolphinQt/NANDRepairDialog.h"
|
#include "DolphinQt/NANDRepairDialog.h"
|
||||||
#include "DolphinQt/QtUtils/DolphinFileDialog.h"
|
#include "DolphinQt/QtUtils/DolphinFileDialog.h"
|
||||||
#include "DolphinQt/QtUtils/ModalMessageBox.h"
|
#include "DolphinQt/QtUtils/ModalMessageBox.h"
|
||||||
|
#include "DolphinQt/QtUtils/NonAutodismissibleMenu.h"
|
||||||
#include "DolphinQt/QtUtils/ParallelProgressDialog.h"
|
#include "DolphinQt/QtUtils/ParallelProgressDialog.h"
|
||||||
#include "DolphinQt/QtUtils/QueueOnObject.h"
|
#include "DolphinQt/QtUtils/QueueOnObject.h"
|
||||||
#include "DolphinQt/QtUtils/SetWindowDecorations.h"
|
#include "DolphinQt/QtUtils/SetWindowDecorations.h"
|
||||||
|
@ -461,7 +462,8 @@ void MenuBar::UpdateStateSlotMenu()
|
||||||
|
|
||||||
void MenuBar::AddViewMenu()
|
void MenuBar::AddViewMenu()
|
||||||
{
|
{
|
||||||
QMenu* view_menu = addMenu(tr("&View"));
|
auto* const view_menu{new QtUtils::NonAutodismissibleMenu(tr("&View"), this)};
|
||||||
|
addMenu(view_menu);
|
||||||
QAction* show_log = view_menu->addAction(tr("Show &Log"));
|
QAction* show_log = view_menu->addAction(tr("Show &Log"));
|
||||||
show_log->setCheckable(true);
|
show_log->setCheckable(true);
|
||||||
show_log->setChecked(Settings::Instance().IsLogVisible());
|
show_log->setChecked(Settings::Instance().IsLogVisible());
|
||||||
|
@ -716,7 +718,8 @@ void MenuBar::AddListColumnsMenu(QMenu* view_menu)
|
||||||
{tr("Tags"), &Config::MAIN_GAMELIST_COLUMN_TAGS}};
|
{tr("Tags"), &Config::MAIN_GAMELIST_COLUMN_TAGS}};
|
||||||
|
|
||||||
QActionGroup* column_group = new QActionGroup(this);
|
QActionGroup* column_group = new QActionGroup(this);
|
||||||
m_cols_menu = view_menu->addMenu(tr("List Columns"));
|
m_cols_menu = new QtUtils::NonAutodismissibleMenu(tr("List Columns"), view_menu);
|
||||||
|
view_menu->addMenu(m_cols_menu);
|
||||||
column_group->setExclusive(false);
|
column_group->setExclusive(false);
|
||||||
|
|
||||||
for (const auto& key : columns.keys())
|
for (const auto& key : columns.keys())
|
||||||
|
@ -742,7 +745,8 @@ void MenuBar::AddShowPlatformsMenu(QMenu* view_menu)
|
||||||
{tr("Show ELF/DOL"), &Config::MAIN_GAMELIST_LIST_ELF_DOL}};
|
{tr("Show ELF/DOL"), &Config::MAIN_GAMELIST_LIST_ELF_DOL}};
|
||||||
|
|
||||||
QActionGroup* platform_group = new QActionGroup(this);
|
QActionGroup* platform_group = new QActionGroup(this);
|
||||||
QMenu* plat_menu = view_menu->addMenu(tr("Show Platforms"));
|
auto* const plat_menu{new QtUtils::NonAutodismissibleMenu(tr("Show Platforms"), view_menu)};
|
||||||
|
view_menu->addMenu(plat_menu);
|
||||||
platform_group->setExclusive(false);
|
platform_group->setExclusive(false);
|
||||||
|
|
||||||
for (const auto& key : platform_map.keys())
|
for (const auto& key : platform_map.keys())
|
||||||
|
@ -776,7 +780,8 @@ void MenuBar::AddShowRegionsMenu(QMenu* view_menu)
|
||||||
{tr("Show World"), &Config::MAIN_GAMELIST_LIST_WORLD},
|
{tr("Show World"), &Config::MAIN_GAMELIST_LIST_WORLD},
|
||||||
{tr("Show Unknown"), &Config::MAIN_GAMELIST_LIST_UNKNOWN}};
|
{tr("Show Unknown"), &Config::MAIN_GAMELIST_LIST_UNKNOWN}};
|
||||||
|
|
||||||
QMenu* const region_menu = view_menu->addMenu(tr("Show Regions"));
|
auto* const region_menu{new QtUtils::NonAutodismissibleMenu(tr("Show Regions"), view_menu)};
|
||||||
|
view_menu->addMenu(region_menu);
|
||||||
const QAction* const show_all_regions = region_menu->addAction(tr("Show All"));
|
const QAction* const show_all_regions = region_menu->addAction(tr("Show All"));
|
||||||
const QAction* const hide_all_regions = region_menu->addAction(tr("Hide All"));
|
const QAction* const hide_all_regions = region_menu->addAction(tr("Hide All"));
|
||||||
region_menu->addSeparator();
|
region_menu->addSeparator();
|
||||||
|
@ -804,7 +809,8 @@ void MenuBar::AddShowRegionsMenu(QMenu* view_menu)
|
||||||
|
|
||||||
void MenuBar::AddMovieMenu()
|
void MenuBar::AddMovieMenu()
|
||||||
{
|
{
|
||||||
auto* movie_menu = addMenu(tr("&Movie"));
|
auto* const movie_menu{new QtUtils::NonAutodismissibleMenu(tr("&Movie"), this)};
|
||||||
|
addMenu(movie_menu);
|
||||||
m_recording_start =
|
m_recording_start =
|
||||||
movie_menu->addAction(tr("Start Re&cording Input"), this, [this] { emit StartRecording(); });
|
movie_menu->addAction(tr("Start Re&cording Input"), this, [this] { emit StartRecording(); });
|
||||||
m_recording_play =
|
m_recording_play =
|
||||||
|
|
28
Source/Core/DolphinQt/QtUtils/NonAutodismissibleMenu.cpp
Normal file
28
Source/Core/DolphinQt/QtUtils/NonAutodismissibleMenu.cpp
Normal file
|
@ -0,0 +1,28 @@
|
||||||
|
// Copyright 2025 Dolphin Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#include "DolphinQt/QtUtils/NonAutodismissibleMenu.h"
|
||||||
|
|
||||||
|
#include <QAction>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
|
||||||
|
namespace QtUtils
|
||||||
|
{
|
||||||
|
|
||||||
|
void NonAutodismissibleMenu::mouseReleaseEvent(QMouseEvent* const event)
|
||||||
|
{
|
||||||
|
if (!event)
|
||||||
|
return;
|
||||||
|
|
||||||
|
QAction* const action{activeAction()};
|
||||||
|
if (action && action->isEnabled() && action->isCheckable())
|
||||||
|
{
|
||||||
|
action->trigger();
|
||||||
|
event->accept();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
QMenu::mouseReleaseEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
} // namespace QtUtils
|
22
Source/Core/DolphinQt/QtUtils/NonAutodismissibleMenu.h
Normal file
22
Source/Core/DolphinQt/QtUtils/NonAutodismissibleMenu.h
Normal file
|
@ -0,0 +1,22 @@
|
||||||
|
// Copyright 2025 Dolphin Emulator Project
|
||||||
|
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||||
|
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QMenu>
|
||||||
|
|
||||||
|
namespace QtUtils
|
||||||
|
{
|
||||||
|
|
||||||
|
/// A menu widget based on \c QMenu that will not be automatically dismissed when one of its
|
||||||
|
/// \em checkable actions are triggered.
|
||||||
|
class NonAutodismissibleMenu : public QMenu
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
using QMenu::QMenu;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void mouseReleaseEvent(QMouseEvent* event) override;
|
||||||
|
};
|
||||||
|
|
||||||
|
} // namespace QtUtils
|
Loading…
Add table
Reference in a new issue