screenshot: Disable screencasts when locked

It is currently not possible to bring up the screenshot UI while
locked, but that is about to change.

We still don't want screencasts in that case, because they are
much easier to abuse for filling up someone else's disk.

That restriction is enforced by inhibiting remote access in the
backend, so trying to create a screencast session will fail anyway.
Still, not offering an action that is unavailable is better than
having it fail silently, so do exactly that.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2439>
This commit is contained in:
Florian Müllner 2022-08-21 20:59:25 +02:00 committed by Marge Bot
parent 6050229aa1
commit aa7bc4cfa3
2 changed files with 10 additions and 2 deletions

View File

@ -98,6 +98,7 @@ $screenshot_ui_button_red: $error_color;
&:hover, &:focus { background-color: lighten($osd_bg_color, 10%);} &:hover, &:focus { background-color: lighten($osd_bg_color, 10%);}
&:active { background-color: lighten($active_bg_color,5%);} &:active { background-color: lighten($active_bg_color,5%);}
&:checked { background-color: white;color: black;} &:checked { background-color: white;color: black;}
&:insensitive { color: transparentize($osd_fg_color, 0.5);}
border-radius: $modal_radius - $screenshot_ui_shot_cast_spacing; border-radius: $modal_radius - $screenshot_ui_shot_cast_spacing;

View File

@ -1021,8 +1021,6 @@ var ScreenshotUI = GObject.registerClass({
this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' }); this._lockdownSettings = new Gio.Settings({ schema_id: 'org.gnome.desktop.lockdown' });
Main.sessionMode.connect('updated', () => this.close(true));
// The full-screen screenshot has a separate container so that we can // The full-screen screenshot has a separate container so that we can
// show it without the screenshot UI fade-in for a nicer animation. // show it without the screenshot UI fade-in for a nicer animation.
this._stageScreenshotContainer = new St.Widget({ visible: false }); this._stageScreenshotContainer = new St.Widget({ visible: false });
@ -1343,6 +1341,15 @@ var ScreenshotUI = GObject.registerClass({
} }
} }
); );
Main.sessionMode.connect('updated',
() => this._sessionUpdated());
this._sessionUpdated();
}
_sessionUpdated() {
this.close(true);
this._castButton.reactive = Main.sessionMode.allowScreencast;
} }
_refreshButtonLayout() { _refreshButtonLayout() {