screenshot: Handle screencast errors properly

Send a notification and remove the screencast inidicator when we hear about
a screencast error from the dbus service.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2752>
This commit is contained in:
Jonas Dreßler 2023-04-26 12:34:17 +02:00
parent c494597a91
commit 99923ac612

View File

@ -1037,6 +1037,9 @@ var ScreenshotUI = GObject.registerClass({
this._castButton.visible = this._screencastSupported; this._castButton.visible = this._screencastSupported;
}); });
this._screencastProxy.connectSignal('Error',
() => this._screencastFailed());
this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' }); this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' });
// The full-screen screenshot has a separate container so that we can // The full-screen screenshot has a separate container so that we can
@ -1913,6 +1916,18 @@ var ScreenshotUI = GObject.registerClass({
return; return;
} }
// Translators: notification title.
this._showNotification(_('Screencast recorded'));
}
_screencastFailed() {
this._setScreencastInProgress(false);
// Translators: notification title.
this._showNotification(_('Screencast ended unexpectedly'));
}
_showNotification(title) {
// Show a notification. // Show a notification.
const file = Gio.file_new_for_path(this._screencastPath); const file = Gio.file_new_for_path(this._screencastPath);
@ -1923,8 +1938,7 @@ var ScreenshotUI = GObject.registerClass({
); );
const notification = new MessageTray.Notification( const notification = new MessageTray.Notification(
source, source,
// Translators: notification title. title,
_('Screencast recorded'),
// Translators: notification body when a screencast was recorded. // Translators: notification body when a screencast was recorded.
_('Click here to view the video.') _('Click here to view the video.')
); );