[gnome-shell] status/remote-access: Visualize recordings as screen recording
- From: Jonas Ådahl <jadahl src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] status/remote-access: Visualize recordings as screen recording
- Date: Fri, 31 Jul 2020 09:17:18 +0000 (UTC)
commit 20dcc8aa874f4503a52bbc4f3c96a26059b984b0
Author: Jonas Ådahl <jadahl gmail com>
Date: Tue Apr 21 18:06:06 2020 +0200
status/remote-access: Visualize recordings as screen recording
If a remote access is marked as a recording, visualize it the same way
as a built in recording. Also don't stop it if there is an actual screen
sharing going on, so that one can use a plain "recording" while still
disabling what is an actual screen sharing.
https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1372
js/ui/status/remoteAccess.js | 60 ++++++++++++++++++++++++++++----------------
1 file changed, 38 insertions(+), 22 deletions(-)
---
diff --git a/js/ui/status/remoteAccess.js b/js/ui/status/remoteAccess.js
index 09b8fd8c92..feafe61550 100644
--- a/js/ui/status/remoteAccess.js
+++ b/js/ui/status/remoteAccess.js
@@ -24,7 +24,8 @@ class RemoteAccessApplet extends PanelMenu.SystemIndicator {
return;
this._handles = new Set();
- this._indicator = null;
+ this._sharedIndicator = null;
+ this._recordingIndicator = null;
this._menuSection = null;
controller.connect('new-handle', (o, handle) => {
@@ -33,32 +34,49 @@ class RemoteAccessApplet extends PanelMenu.SystemIndicator {
}
_ensureControls() {
- if (this._indicator)
+ if (this._sharedIndicator && this._recordingIndicator)
return;
- this._indicator = this._addIndicator();
- this._indicator.icon_name = 'screen-shared-symbolic';
- this._indicator.add_style_class_name('remote-access-indicator');
- this._item =
+ this._sharedIndicator = this._addIndicator();
+ this._sharedIndicator.icon_name = 'screen-shared-symbolic';
+ this._sharedIndicator.add_style_class_name('remote-access-indicator');
+
+ this._sharedItem =
new PopupMenu.PopupSubMenuMenuItem(_("Screen is Being Shared"),
true);
- this._item.menu.addAction(_("Turn off"),
- () => {
- for (let handle of this._handles)
- handle.stop();
- });
- this._item.icon.icon_name = 'screen-shared-symbolic';
- this.menu.addMenuItem(this._item);
+ this._sharedItem.menu.addAction(_("Turn off"),
+ () => {
+ for (let handle of this._handles) {
+ if (!handle.is_recording)
+ handle.stop();
+ }
+ });
+ this._sharedItem.icon.icon_name = 'screen-shared-symbolic';
+ this.menu.addMenuItem(this._sharedItem);
+
+ this._recordingIndicator = this._addIndicator();
+ this._recordingIndicator.icon_name = 'media-record-symbolic';
+ this._recordingIndicator.add_style_class_name('screencast-indicator');
+ }
+
+ _isScreenShared() {
+ return [...this._handles].some(handle => !handle.is_recording);
+ }
+
+ _isRecording() {
+ return [...this._handles].some(handle => handle.is_recording);
}
_sync() {
- if (this._handles.size == 0) {
- this._indicator.visible = false;
- this._item.visible = false;
+ if (this._isScreenShared()) {
+ this._sharedIndicator.visible = true;
+ this._sharedItem.visible = true;
} else {
- this._indicator.visible = true;
- this._item.visible = true;
+ this._sharedIndicator.visible = false;
+ this._sharedItem.visible = false;
}
+
+ this._recordingIndicator.visible = this._isRecording();
}
_onStopped(handle) {
@@ -70,9 +88,7 @@ class RemoteAccessApplet extends PanelMenu.SystemIndicator {
this._handles.add(handle);
handle.connect('stopped', this._onStopped.bind(this));
- if (this._handles.size == 1) {
- this._ensureControls();
- this._sync();
- }
+ this._ensureControls();
+ this._sync();
}
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]