diff --git a/data/dbus/org.flameshot.Flameshot.xml b/data/dbus/org.flameshot.Flameshot.xml
index 2a922026..619de8cd 100644
--- a/data/dbus/org.flameshot.Flameshot.xml
+++ b/data/dbus/org.flameshot.Flameshot.xml
@@ -5,6 +5,7 @@
+
diff --git a/src/core/controller.cpp b/src/core/controller.cpp
index 63e6a97f..28a4400f 100644
--- a/src/core/controller.cpp
+++ b/src/core/controller.cpp
@@ -140,6 +140,11 @@ void Controller::setCheckForUpdatesEnabled(const bool enabled)
}
}
+QMap& Controller::requests()
+{
+ return m_requestMap;
+}
+
void Controller::getLatestAvailableVersion()
{
// This features is required for MacOS and Windows user and for Linux users
diff --git a/src/core/controller.h b/src/core/controller.h
index d0c959a4..ca024686 100644
--- a/src/core/controller.h
+++ b/src/core/controller.h
@@ -42,6 +42,8 @@ public:
void setCheckForUpdatesEnabled(const bool enabled);
+ QMap& requests();
+
signals:
void captureTaken(uint id, QPixmap p, QRect selection);
void captureFailed(uint id);
diff --git a/src/core/flameshotdbusadapter.cpp b/src/core/flameshotdbusadapter.cpp
index a9509a4d..768c274e 100644
--- a/src/core/flameshotdbusadapter.cpp
+++ b/src/core/flameshotdbusadapter.cpp
@@ -28,12 +28,15 @@ FlameshotDBusAdapter::FlameshotDBusAdapter(QObject* parent)
FlameshotDBusAdapter::~FlameshotDBusAdapter() {}
-void FlameshotDBusAdapter::graphicCapture(QString path, int delay, uint id)
+void FlameshotDBusAdapter::graphicCapture(QString path,
+ bool toClipboard,
+ int delay,
+ uint id)
{
CaptureRequest req(CaptureRequest::GRAPHICAL_MODE, delay, path);
- // if (toClipboard) {
- // req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK);
- // }
+ if (toClipboard) {
+ req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK);
+ }
req.setStaticID(id);
Controller::getInstance()->requestCapture(req);
}
diff --git a/src/core/flameshotdbusadapter.h b/src/core/flameshotdbusadapter.h
index 81fefeca..a136c06e 100644
--- a/src/core/flameshotdbusadapter.h
+++ b/src/core/flameshotdbusadapter.h
@@ -21,7 +21,10 @@ signals:
void captureSaved(uint id, QString savePath);
public slots:
- Q_NOREPLY void graphicCapture(QString path, int delay, uint id);
+ Q_NOREPLY void graphicCapture(QString path,
+ bool toClipboard,
+ int delay,
+ uint id);
Q_NOREPLY void fullScreen(QString path,
bool toClipboard,
int delay,
diff --git a/src/main.cpp b/src/main.cpp
index 32000989..427ddbda 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -247,9 +247,12 @@ int main(int argc, char* argv[])
parser.AddArgument(configArgument);
auto helpOption = parser.addHelpOption();
auto versionOption = parser.addVersionOption();
- parser.AddOptions(
- { pathOption, delayOption, rawImageOption, selectionOption },
- guiArgument);
+ parser.AddOptions({ pathOption,
+ clipboardOption,
+ delayOption,
+ rawImageOption,
+ selectionOption },
+ guiArgument);
parser.AddOptions({ screenNumberOption,
clipboardOption,
pathOption,
@@ -289,10 +292,14 @@ int main(int argc, char* argv[])
} else if (parser.isSet(guiArgument)) { // GUI
QString pathValue = parser.value(pathOption);
int delay = parser.value(delayOption).toInt();
+ bool toClipboard = parser.isSet(clipboardOption);
bool isRaw = parser.isSet(rawImageOption);
bool isSelection = parser.isSet(selectionOption);
DBusUtils dbusUtils;
CaptureRequest req(CaptureRequest::GRAPHICAL_MODE, delay, pathValue);
+ if (toClipboard) {
+ req.addTask(CaptureRequest::CLIPBOARD_SAVE_TASK);
+ }
uint id = req.id();
// Send message
@@ -301,7 +308,7 @@ int main(int argc, char* argv[])
QStringLiteral("/"),
QLatin1String(""),
QStringLiteral("graphicCapture"));
- m << pathValue << delay << id;
+ m << pathValue << toClipboard << delay << id;
QDBusConnection sessionBus = QDBusConnection::sessionBus();
dbusUtils.checkDBusConnection(sessionBus);
sessionBus.call(m);
diff --git a/src/widgets/capture/capturewidget.cpp b/src/widgets/capture/capturewidget.cpp
index 7c8cdfe5..d36583a8 100644
--- a/src/widgets/capture/capturewidget.cpp
+++ b/src/widgets/capture/capturewidget.cpp
@@ -1574,7 +1574,9 @@ void CaptureWidget::copyScreenshot()
processPixmapWithTool(&m_context.screenshot, m_activeTool);
}
- ScreenshotSaver().saveToClipboard(pixmap());
+ auto req = Controller::getInstance()->requests().find(m_id);
+ req->addTask(CaptureRequest::CLIPBOARD_SAVE_TASK);
+
close();
}