From db5f8a762cdbdebd1d3bbd8132817fa5c39fd30f Mon Sep 17 00:00:00 2001 From: Dean Date: Thu, 7 Apr 2022 09:53:25 +0800 Subject: [PATCH] pinwidget: allow copying to clipboard and saving to file (#2519) Co-authored-by: zhangfuwen --- src/tools/pin/pinwidget.cpp | 36 ++++++++++++++++++++++++++++++++++++ src/tools/pin/pinwidget.h | 5 +++++ 2 files changed, 41 insertions(+) diff --git a/src/tools/pin/pinwidget.cpp b/src/tools/pin/pinwidget.cpp index ca0efeed..807e4bb4 100644 --- a/src/tools/pin/pinwidget.cpp +++ b/src/tools/pin/pinwidget.cpp @@ -6,10 +6,12 @@ #include "pinwidget.h" #include "qguiappcurrentscreen.h" +#include "screenshotsaver.h" #include "src/utils/confighandler.h" #include "src/utils/globalvalues.h" #include +#include #include #include #include @@ -83,6 +85,13 @@ PinWidget::PinWidget(const QPixmap& pixmap, } #endif grabGesture(Qt::PinchGesture); + + this->setContextMenuPolicy(Qt::CustomContextMenu); + + connect(this, + SIGNAL(customContextMenuRequested(const QPoint&)), + this, + SLOT(showContextMenu(const QPoint&))); } bool PinWidget::scrollEvent(QWheelEvent* event) @@ -209,3 +218,30 @@ void PinWidget::pinchTriggered(QPinchGesture* gesture) m_sizeChanged = true; update(); } + +void PinWidget::showContextMenu(const QPoint& pos) +{ + QMenu contextMenu(tr("Context menu"), this); + + QAction copy2ClipboardAction("Copy to clipboard", this); + connect(©2ClipboardAction, + SIGNAL(triggered()), + this, + SLOT(copyToClipboard())); + contextMenu.addAction(©2ClipboardAction); + + QAction saveToFileAction("Save to file", this); + connect(&saveToFileAction, SIGNAL(triggered()), this, SLOT(saveToFile())); + contextMenu.addAction(&saveToFileAction); + + contextMenu.exec(mapToGlobal(pos)); +} + +void PinWidget::copyToClipboard() +{ + saveToClipboard(m_pixmap); +} +void PinWidget::saveToFile() +{ + saveToFilesystemGUI(m_pixmap); +} diff --git a/src/tools/pin/pinwidget.h b/src/tools/pin/pinwidget.h index 0e17ebaf..99dbbc79 100644 --- a/src/tools/pin/pinwidget.h +++ b/src/tools/pin/pinwidget.h @@ -46,4 +46,9 @@ private: qreal m_scaleFactor{ 1 }; qreal m_currentStepScaleFactor{ 1 }; bool m_sizeChanged{ false }; + +private slots: + void showContextMenu(const QPoint& pos); + void copyToClipboard(); + void saveToFile(); };