From bd35a8c3e02dd9f7e8860b6d30b3ee20267afb4d Mon Sep 17 00:00:00 2001 From: yyc12345 Date: Wed, 15 Jul 2026 21:59:30 +0800 Subject: [PATCH] feat: use submenu in right click menu to reduce the height of menu panel --- app/mainwindow.cpp | 47 +++++++++++++++++++++++++++++----------------- app/mainwindow.h | 2 ++ 2 files changed, 32 insertions(+), 17 deletions(-) diff --git a/app/mainwindow.cpp b/app/mainwindow.cpp index fdc0d22..cc1d55e 100644 --- a/app/mainwindow.cpp +++ b/app/mainwindow.cpp @@ -111,11 +111,35 @@ MainWindow::MainWindow(QWidget *parent) m_am->actionToggleCheckerboard, }, this); - m_menu = new QMenu(this); - + m_subMenuCopy = new QMenu(this); + m_subMenuCopy->setTitle(tr("&Copy")); + m_subMenuCopy->setIcon(QIcon::fromTheme(QLatin1String("edit-copy"))); { - m_menu->addAction(m_am->actionCopyPixmap); - m_menu->addAction(m_am->actionCopyFilePath); + m_subMenuCopy->addAction(m_am->actionCopyPixmap); + m_subMenuCopy->addAction(m_am->actionCopyFilePath); + } + + m_subMenuTransform = new QMenu(this); + m_subMenuTransform->setTitle(tr("&Transform")); + { + m_subMenuTransform->addAction(m_am->actionActualSize); + m_subMenuTransform->addAction(m_am->actionFitToScreen); + m_subMenuTransform->addAction(m_am->actionFitByWidth); + m_subMenuTransform->addAction(m_am->actionFitByHeight); + m_subMenuTransform->addAction(m_am->actionZoomIn); + m_subMenuTransform->addAction(m_am->actionZoomOut); + + m_subMenuTransform->addSeparator(); + + m_subMenuTransform->addAction(m_am->actionFlipHorizontal); + m_subMenuTransform->addAction(m_am->actionFlipVertical); + m_subMenuTransform->addAction(m_am->actionRotateClockwise); + m_subMenuTransform->addAction(m_am->actionRotateCounterClockwise); + } + + m_menu = new QMenu(this); + { + m_menu->addMenu(m_subMenuCopy); m_menu->addSeparator(); @@ -124,19 +148,7 @@ MainWindow::MainWindow(QWidget *parent) m_menu->addSeparator(); - m_menu->addAction(m_am->actionActualSize); - m_menu->addAction(m_am->actionFitToScreen); - m_menu->addAction(m_am->actionFitByWidth); - m_menu->addAction(m_am->actionFitByHeight); - m_menu->addAction(m_am->actionZoomIn); - m_menu->addAction(m_am->actionZoomOut); - - m_menu->addSeparator(); - - m_menu->addAction(m_am->actionFlipHorizontal); - m_menu->addAction(m_am->actionFlipVertical); - m_menu->addAction(m_am->actionRotateClockwise); - m_menu->addAction(m_am->actionRotateCounterClockwise); + m_menu->addMenu(m_subMenuTransform); m_menu->addSeparator(); @@ -157,6 +169,7 @@ MainWindow::MainWindow(QWidget *parent) m_menu->addAction(m_am->actionHelp); } + connect(m_pm, &PlaylistManager::playlistChanged, this, std::bind(&MainWindow::updateActionState, this)); connect(m_pm, &PlaylistManager::playlistChanged, this, std::bind(&MainWindow::galleryCurrent, this, false)); diff --git a/app/mainwindow.h b/app/mainwindow.h index 1efc72c..6051707 100644 --- a/app/mainwindow.h +++ b/app/mainwindow.h @@ -103,6 +103,8 @@ private: NavigatorView *m_nav; QMenu *m_menu; + QMenu *m_subMenuCopy; + QMenu *m_subMenuTransform; QVBoxLayout * m_centralLayout = nullptr; QFileSystemWatcher *m_fileSystemWatcher; BottomButtonGroup *m_bottomButtonGroup;