1
0

refactor: use class member menu instead of runtime created menu

This commit is contained in:
2026-07-13 15:47:17 +08:00
parent 04fa491cd8
commit 7e8fd4ea21
2 changed files with 49 additions and 46 deletions

View File

@@ -104,6 +104,52 @@ MainWindow::MainWindow(QWidget *parent)
m_am->actionToggleCheckerboard,
}, this);
m_menu = new QMenu(this);
{
m_menu->addAction(m_am->actionCopyPixmap);
m_menu->addAction(m_am->actionCopyFilePath);
m_menu->addSeparator();
m_menu->addAction(m_am->actionPrevPicture);
m_menu->addAction(m_am->actionNextPicture);
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->addSeparator();
m_menu->addAction(m_am->actionToggleAvoidResetTransform);
m_menu->addAction(m_am->actionToggleCheckerboard);
m_menu->addAction(m_am->actionTogglePauseAnimation);
m_menu->addAction(m_am->actionAnimationNextFrame);
m_menu->addSeparator();
m_menu->addAction(m_am->actionTrash);
m_menu->addAction(m_am->actionLocateInFileManager);
m_menu->addAction(m_am->actionProperties);
m_menu->addSeparator();
m_menu->addAction(m_am->actionSettings);
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));
@@ -341,52 +387,7 @@ void MainWindow::resizeEvent(QResizeEvent *event)
void MainWindow::contextMenuEvent(QContextMenuEvent *event)
{
QMenu * menu = new QMenu;
menu->addAction(m_am->actionCopyPixmap);
menu->addAction(m_am->actionCopyFilePath);
menu->addSeparator();
menu->addAction(m_am->actionPrevPicture);
menu->addAction(m_am->actionNextPicture);
menu->addSeparator();
menu->addAction(m_am->actionActualSize);
menu->addAction(m_am->actionFitToScreen);
menu->addAction(m_am->actionFitByWidth);
menu->addAction(m_am->actionFitByHeight);
menu->addAction(m_am->actionZoomIn);
menu->addAction(m_am->actionZoomOut);
menu->addSeparator();
menu->addAction(m_am->actionFlipHorizontal);
menu->addAction(m_am->actionFlipVertical);
menu->addAction(m_am->actionRotateClockwise);
menu->addAction(m_am->actionRotateCounterClockwise);
menu->addSeparator();
menu->addAction(m_am->actionToggleAvoidResetTransform);
menu->addAction(m_am->actionToggleCheckerboard);
menu->addAction(m_am->actionTogglePauseAnimation);
menu->addAction(m_am->actionAnimationNextFrame);
menu->addSeparator();
menu->addAction(m_am->actionTrash);
menu->addAction(m_am->actionLocateInFileManager);
menu->addAction(m_am->actionProperties);
menu->addSeparator();
menu->addAction(m_am->actionSettings);
menu->addAction(m_am->actionHelp);
menu->exec(mapToGlobal(event->pos()));
menu->deleteLater();
m_menu->exec(mapToGlobal(event->pos()));
return FramelessWindow::contextMenuEvent(event);
}

View File

@@ -12,6 +12,7 @@
#include <QPushButton>
QT_BEGIN_NAMESPACE
class QMenu;
class QGraphicsView;
class QFileSystemWatcher;
QT_END_NAMESPACE
@@ -105,6 +106,7 @@ private:
GraphicsView *m_gv;
NavigatorView *m_nav;
QMenu *m_menu;
QFileSystemWatcher *m_fileSystemWatcher;
BottomButtonGroup *m_bottomButtonGroup;
};