shell/screenshot: Throw error on failure
Commit da537cda43
moved the Shell.Screenshot API to GIO's async pattern,
but we never set the GError passed to the *_finish() functions and only
indicate failure by returning FALSE.
The expected behavior is to throw an error in that situation, so make sure
we do that.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1123
This commit is contained in:

committed by
Carlos Garnacho

parent
1bccbe7f11
commit
35484151ce
@ -113,16 +113,14 @@ var ScreenshotService = class {
|
||||
return [null, null];
|
||||
}
|
||||
|
||||
_onScreenshotComplete(result, area, stream, file, flash, invocation) {
|
||||
if (result) {
|
||||
if (flash) {
|
||||
let flashspot = new Flashspot(area);
|
||||
flashspot.fire(() => {
|
||||
this._removeShooterForSender(invocation.get_sender());
|
||||
});
|
||||
} else {
|
||||
_onScreenshotComplete(area, stream, file, flash, invocation) {
|
||||
if (flash) {
|
||||
let flashspot = new Flashspot(area);
|
||||
flashspot.fire(() => {
|
||||
this._removeShooterForSender(invocation.get_sender());
|
||||
}
|
||||
});
|
||||
} else {
|
||||
this._removeShooterForSender(invocation.get_sender());
|
||||
}
|
||||
|
||||
stream.close(null);
|
||||
@ -136,7 +134,7 @@ var ScreenshotService = class {
|
||||
clipboard.set_content(St.ClipboardType.CLIPBOARD, 'image/png', bytes);
|
||||
}
|
||||
|
||||
let retval = GLib.Variant.new('(bs)', [result, filenameUsed]);
|
||||
let retval = GLib.Variant.new('(bs)', [true, filenameUsed]);
|
||||
invocation.return_value(retval);
|
||||
}
|
||||
|
||||
@ -178,12 +176,13 @@ var ScreenshotService = class {
|
||||
screenshot.screenshot_area(x, y, width, height, stream,
|
||||
(o, res) => {
|
||||
try {
|
||||
let [result, area] =
|
||||
let [success_, area] =
|
||||
screenshot.screenshot_area_finish(res);
|
||||
this._onScreenshotComplete(
|
||||
result, area, stream, file, flash, invocation);
|
||||
area, stream, file, flash, invocation);
|
||||
} catch (e) {
|
||||
invocation.return_gerror(e);
|
||||
this._removeShooterForSender(invocation.get_sender());
|
||||
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -201,12 +200,13 @@ var ScreenshotService = class {
|
||||
screenshot.screenshot_window(includeFrame, includeCursor, stream,
|
||||
(o, res) => {
|
||||
try {
|
||||
let [result, area] =
|
||||
let [success_, area] =
|
||||
screenshot.screenshot_window_finish(res);
|
||||
this._onScreenshotComplete(
|
||||
result, area, stream, file, flash, invocation);
|
||||
area, stream, file, flash, invocation);
|
||||
} catch (e) {
|
||||
invocation.return_gerror(e);
|
||||
this._removeShooterForSender(invocation.get_sender());
|
||||
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
|
||||
}
|
||||
});
|
||||
}
|
||||
@ -224,12 +224,13 @@ var ScreenshotService = class {
|
||||
screenshot.screenshot(includeCursor, stream,
|
||||
(o, res) => {
|
||||
try {
|
||||
let [result, area] =
|
||||
let [success_, area] =
|
||||
screenshot.screenshot_finish(res);
|
||||
this._onScreenshotComplete(
|
||||
result, area, stream, file, flash, invocation);
|
||||
area, stream, file, flash, invocation);
|
||||
} catch (e) {
|
||||
invocation.return_gerror(e);
|
||||
this._removeShooterForSender(invocation.get_sender());
|
||||
invocation.return_value(new GLib.Variant('(bs)', [false, '']));
|
||||
}
|
||||
});
|
||||
}
|
||||
|
Reference in New Issue
Block a user