summaryrefslogtreecommitdiff
path: root/Source/Core
diff options
context:
space:
mode:
authorChristian Aguilera <cristian64@gmail.com>2019-01-21 20:05:31 +0000
committerChristian Aguilera <cristian64@gmail.com>2019-01-21 21:06:04 +0000
commit9a1a98a9f63fee7a3bc4ee3cc97a7e47113e55f2 (patch)
treee701adcf01f3ec78fe6da27ac8d5453a6ead9b9f /Source/Core
parent2c2910c129b205fc2941c4f278b247d678953061 (diff)
Qt/MainWindow: Also display "List Columns" menu via right-click on table's header.
Diffstat (limited to 'Source/Core')
-rw-r--r--Source/Core/DolphinQt/GameList/GameList.cpp18
-rw-r--r--Source/Core/DolphinQt/GameList/GameList.h1
-rw-r--r--Source/Core/DolphinQt/MenuBar.cpp8
-rw-r--r--Source/Core/DolphinQt/MenuBar.h8
4 files changed, 33 insertions, 2 deletions
diff --git a/Source/Core/DolphinQt/GameList/GameList.cpp b/Source/Core/DolphinQt/GameList/GameList.cpp
index 3b51cefb89..b744130937 100644
--- a/Source/Core/DolphinQt/GameList/GameList.cpp
+++ b/Source/Core/DolphinQt/GameList/GameList.cpp
@@ -42,6 +42,7 @@
#include "DolphinQt/GameList/GameListModel.h"
#include "DolphinQt/GameList/GridProxyModel.h"
#include "DolphinQt/GameList/ListProxyModel.h"
+#include "DolphinQt/MenuBar.h"
#include "DolphinQt/QtUtils/DoubleClickEventFilter.h"
#include "DolphinQt/Resources.h"
#include "DolphinQt/Settings.h"
@@ -121,6 +122,9 @@ void GameList::MakeListView()
hor_header->restoreState(
Settings::GetQSettings().value(QStringLiteral("tableheader/state")).toByteArray());
+ hor_header->setContextMenuPolicy(Qt::CustomContextMenu);
+ connect(hor_header, &QWidget::customContextMenuRequested, this, &GameList::ShowHeaderContextMenu);
+
connect(hor_header, &QHeaderView::sortIndicatorChanged, this, &GameList::OnHeaderViewChanged);
connect(hor_header, &QHeaderView::sectionCountChanged, this, &GameList::OnHeaderViewChanged);
connect(hor_header, &QHeaderView::sectionMoved, this, &GameList::OnHeaderViewChanged);
@@ -223,6 +227,20 @@ void GameList::MakeGridView()
});
}
+void GameList::ShowHeaderContextMenu(const QPoint& pos)
+{
+ const MenuBar* const menu_bar = MenuBar::GetMenuBar();
+ if (!menu_bar)
+ return;
+
+ QMenu* const list_columns_menu = menu_bar->GetListColumnsMenu();
+ if (!list_columns_menu)
+ return;
+
+ const QWidget* const widget = qobject_cast<QWidget*>(sender());
+ list_columns_menu->exec(widget ? widget->mapToGlobal(pos) : pos);
+}
+
void GameList::ShowContextMenu(const QPoint&)
{
if (!GetSelectedGame())
diff --git a/Source/Core/DolphinQt/GameList/GameList.h b/Source/Core/DolphinQt/GameList/GameList.h
index e7782651be..95864a7eb2 100644
--- a/Source/Core/DolphinQt/GameList/GameList.h
+++ b/Source/Core/DolphinQt/GameList/GameList.h
@@ -52,6 +52,7 @@ signals:
void OpenGeneralSettings();
private:
+ void ShowHeaderContextMenu(const QPoint& pos);
void ShowContextMenu(const QPoint&);
void OpenContainingFolder();
void OpenProperties();
diff --git a/Source/Core/DolphinQt/MenuBar.cpp b/Source/Core/DolphinQt/MenuBar.cpp
index 2096339a5b..42dbf3c4fc 100644
--- a/Source/Core/DolphinQt/MenuBar.cpp
+++ b/Source/Core/DolphinQt/MenuBar.cpp
@@ -53,8 +53,12 @@
#include "UICommon/GameFile.h"
+QPointer<MenuBar> MenuBar::s_menu_bar;
+
MenuBar::MenuBar(QWidget* parent) : QMenuBar(parent)
{
+ s_menu_bar = this;
+
AddFileMenu();
AddEmulationMenu();
AddMovieMenu();
@@ -584,13 +588,13 @@ void MenuBar::AddListColumnsMenu(QMenu* view_menu)
{tr("Tags"), &SConfig::GetInstance().m_showTagsColumn}};
QActionGroup* column_group = new QActionGroup(this);
- QMenu* cols_menu = view_menu->addMenu(tr("List Columns"));
+ m_cols_menu = view_menu->addMenu(tr("List Columns"));
column_group->setExclusive(false);
for (const auto& key : columns.keys())
{
bool* config = columns[key];
- QAction* action = column_group->addAction(cols_menu->addAction(key));
+ QAction* action = column_group->addAction(m_cols_menu->addAction(key));
action->setCheckable(true);
action->setChecked(*config);
connect(action, &QAction::toggled, [this, config, key](bool value) {
diff --git a/Source/Core/DolphinQt/MenuBar.h b/Source/Core/DolphinQt/MenuBar.h
index 6b4a15e5aa..1d731d240a 100644
--- a/Source/Core/DolphinQt/MenuBar.h
+++ b/Source/Core/DolphinQt/MenuBar.h
@@ -10,6 +10,7 @@
#include <QMenu>
#include <QMenuBar>
+#include <QPointer>
namespace Core
{
@@ -31,11 +32,15 @@ class MenuBar final : public QMenuBar
Q_OBJECT
public:
+ static MenuBar* GetMenuBar() { return s_menu_bar; }
+
explicit MenuBar(QWidget* parent = nullptr);
void UpdateStateSlotMenu();
void UpdateToolsMenu(bool emulation_started);
+ QMenu* GetListColumnsMenu() const { return m_cols_menu; }
+
#ifdef _WIN32
void InstallUpdateManually();
#endif
@@ -169,6 +174,8 @@ private:
void OnReadOnlyModeChanged(bool read_only);
void OnDebugModeToggled(bool enabled);
+ static QPointer<MenuBar> s_menu_bar;
+
// File
QAction* m_open_action;
QAction* m_exit_action;
@@ -225,6 +232,7 @@ private:
QAction* m_show_breakpoints;
QAction* m_show_memory;
QAction* m_show_jit;
+ QMenu* m_cols_menu;
// JIT
QMenu* m_jit;