screenshot: Allow saving to clipboard
If no target file is specified (i.e. filename is an empty string), the screenshot will be stored on the clipboard instead. https://gitlab.gnome.org/GNOME/mutter/issues/789 https://gitlab.gnome.org/GNOME/gnome-shell/merge_requests/810
This commit is contained in:
parent
be5f5ec9d4
commit
cf6beee9e2
@ -86,6 +86,9 @@ var ScreenshotService = class {
|
|||||||
}
|
}
|
||||||
|
|
||||||
_createStream(filename) {
|
_createStream(filename) {
|
||||||
|
if (filename == '')
|
||||||
|
return [Gio.MemoryOutputStream.new_resizable(), null];
|
||||||
|
|
||||||
if (GLib.path_is_absolute(filename)) {
|
if (GLib.path_is_absolute(filename)) {
|
||||||
try {
|
try {
|
||||||
let file = Gio.File.new_for_path(filename);
|
let file = Gio.File.new_for_path(filename);
|
||||||
@ -123,7 +126,15 @@ var ScreenshotService = class {
|
|||||||
|
|
||||||
stream.close(null);
|
stream.close(null);
|
||||||
|
|
||||||
let filenameUsed = file.get_path();
|
let filenameUsed = '';
|
||||||
|
if (file) {
|
||||||
|
filenameUsed = file.get_path();
|
||||||
|
} else {
|
||||||
|
let bytes = stream.steal_as_bytes();
|
||||||
|
let clipboard = St.Clipboard.get_default();
|
||||||
|
clipboard.set_content(St.ClipboardType.CLIPBOARD, 'image/png', bytes);
|
||||||
|
}
|
||||||
|
|
||||||
let retval = GLib.Variant.new('(bs)', [result, filenameUsed]);
|
let retval = GLib.Variant.new('(bs)', [result, filenameUsed]);
|
||||||
invocation.return_value(retval);
|
invocation.return_value(retval);
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user