diff --git a/src/MainWindow.h b/src/MainWindow.h
index 41870d46..a169b096 100644
--- a/src/MainWindow.h
+++ b/src/MainWindow.h
@@ -196,6 +196,7 @@ private slots:
void actionExportSVG();
void actionExportCSG();
void actionExportImage();
+ void actionExportToClipboard();
void actionFlushCaches();
public:
diff --git a/src/MainWindow.ui b/src/MainWindow.ui
index 422b3b2c..1dabbd86 100644
--- a/src/MainWindow.ui
+++ b/src/MainWindow.ui
@@ -274,6 +274,7 @@
+
@@ -1261,6 +1262,11 @@
&Cheat Sheet
+
+
+ Export to Clipboard
+
+
diff --git a/src/QGLView.cc b/src/QGLView.cc
index 0803ffe8..bef57441 100644
--- a/src/QGLView.cc
+++ b/src/QGLView.cc
@@ -294,11 +294,12 @@ void QGLView::mouseReleaseEvent(QMouseEvent*)
releaseMouse();
}
-void QGLView::grabFrame()
+const QImage & QGLView::grabFrame()
{
// Force reading from front buffer. Some configurations will read from the back buffer here.
glReadBuffer(GL_FRONT);
this->frame = grabFrameBuffer();
+ return this->frame;
}
bool QGLView::save(const char *filename)
diff --git a/src/QGLView.h b/src/QGLView.h
index ca5fccb0..697d3b57 100644
--- a/src/QGLView.h
+++ b/src/QGLView.h
@@ -43,7 +43,7 @@ public:
float getDPI() { return this->devicePixelRatio(); }
#endif
- void grabFrame();
+ const QImage & grabFrame();
bool save(const char *filename);
void resetView();
void viewAll();
diff --git a/src/mainwin.cc b/src/mainwin.cc
index 55490590..76da5735 100644
--- a/src/mainwin.cc
+++ b/src/mainwin.cc
@@ -362,6 +362,7 @@ MainWindow::MainWindow(const QString &filename)
connect(this->fileActionExportSVG, SIGNAL(triggered()), this, SLOT(actionExportSVG()));
connect(this->fileActionExportCSG, SIGNAL(triggered()), this, SLOT(actionExportCSG()));
connect(this->fileActionExportImage, SIGNAL(triggered()), this, SLOT(actionExportImage()));
+ connect(this->fileActionExportClipboard, SIGNAL(triggered()), this, SLOT(actionExportToClipboard()));
connect(this->designActionFlushCaches, SIGNAL(triggered()), this, SLOT(actionFlushCaches()));
// View menu
@@ -2184,6 +2185,13 @@ void MainWindow::actionExportImage()
return;
}
+void MainWindow::actionExportToClipboard()
+{
+ const QImage & image = qglview->grabFrame();
+ QClipboard *clipboard = QApplication::clipboard();
+ clipboard->setImage(image);
+}
+
void MainWindow::actionFlushCaches()
{
GeometryCache::instance()->clear();