[gnome-shell] screenshot: Disable screencasts when locked



commit aa7bc4cfa387735bb91247e644d950357c7af0b6
Author: Florian Müllner <fmuellner gnome org>
Date:   Sun Aug 21 20:59:25 2022 +0200

    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>

 data/theme/gnome-shell-sass/widgets/_screenshot.scss |  1 +
 js/ui/screenshot.js                                  | 11 +++++++++--
 2 files changed, 10 insertions(+), 2 deletions(-)
---
diff --git a/data/theme/gnome-shell-sass/widgets/_screenshot.scss 
b/data/theme/gnome-shell-sass/widgets/_screenshot.scss
index f7fa3da2be..150f273b42 100644
--- a/data/theme/gnome-shell-sass/widgets/_screenshot.scss
+++ b/data/theme/gnome-shell-sass/widgets/_screenshot.scss
@@ -98,6 +98,7 @@ $screenshot_ui_button_red: $error_color;
   &:hover, &:focus { background-color: lighten($osd_bg_color, 10%);}
   &:active { background-color: lighten($active_bg_color,5%);}
   &:checked { background-color: white;color: black;}
+  &:insensitive { color: transparentize($osd_fg_color, 0.5);}
 
   border-radius: $modal_radius - $screenshot_ui_shot_cast_spacing;
 
diff --git a/js/ui/screenshot.js b/js/ui/screenshot.js
index 931f958319..d82d7a7a62 100644
--- a/js/ui/screenshot.js
+++ b/js/ui/screenshot.js
@@ -1021,8 +1021,6 @@ var ScreenshotUI = GObject.registerClass({
 
         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
         // show it without the screenshot UI fade-in for a nicer animation.
         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() {


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]