[gnome-shell] switchMonitor: Only show 'mirror' and 'join' modes when not a laptop
- From: Marge Bot <marge-bot src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gnome-shell] switchMonitor: Only show 'mirror' and 'join' modes when not a laptop
- Date: Sat, 4 Dec 2021 16:25:45 +0000 (UTC)
commit 37271ffe709fc957a6c24a28050c279e01e7013a
Author: Jonas Ã…dahl <jadahl gmail com>
Date: Thu Dec 2 22:04:01 2021 +0100
switchMonitor: Only show 'mirror' and 'join' modes when not a laptop
The 'external only' and 'builtin only' options makes no sense if there
are only external monitors.
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/3276
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2056>
js/ui/switchMonitor.js | 63 +++++++++++++++++++++++++++++++++-----------------
1 file changed, 42 insertions(+), 21 deletions(-)
---
diff --git a/js/ui/switchMonitor.js b/js/ui/switchMonitor.js
index 5ac5825224..2d9b0deadf 100644
--- a/js/ui/switchMonitor.js
+++ b/js/ui/switchMonitor.js
@@ -10,26 +10,44 @@ var APP_ICON_SIZE = 96;
var SwitchMonitorPopup = GObject.registerClass(
class SwitchMonitorPopup extends SwitcherPopup.SwitcherPopup {
_init() {
- let items = [{ icon: 'view-mirror-symbolic',
- /* Translators: this is for display mirroring i.e. cloning.
- * Try to keep it under around 15 characters.
- */
- label: _('Mirror') },
- { icon: 'video-joined-displays-symbolic',
- /* Translators: this is for the desktop spanning displays.
- * Try to keep it under around 15 characters.
- */
- label: _('Join Displays') },
- { icon: 'video-single-display-symbolic',
- /* Translators: this is for using only an external display.
- * Try to keep it under around 15 characters.
- */
- label: _('External Only') },
- { icon: 'computer-symbolic',
- /* Translators: this is for using only the laptop display.
- * Try to keep it under around 15 characters.
- */
- label: _('Built-in Only') }];
+ let items = [];
+
+ items.push({
+ icon: 'view-mirror-symbolic',
+ /* Translators: this is for display mirroring i.e. cloning.
+ * Try to keep it under around 15 characters.
+ */
+ label: _('Mirror'),
+ switchMode: Meta.MonitorSwitchConfigType.ALL_MIRROR,
+ });
+
+ items.push({
+ icon: 'video-joined-displays-symbolic',
+ /* Translators: this is for the desktop spanning displays.
+ * Try to keep it under around 15 characters.
+ */
+ label: _('Join Displays'),
+ switchMode: Meta.MonitorSwitchConfigType.ALL_LINEAR,
+ });
+
+ if (global.backend.get_monitor_manager().has_builtin_panel) {
+ items.push({
+ icon: 'video-single-display-symbolic',
+ /* Translators: this is for using only an external display.
+ * Try to keep it under around 15 characters.
+ */
+ label: _('External Only'),
+ switchMode: Meta.MonitorSwitchConfigType.EXTERNAL,
+ });
+ items.push({
+ icon: 'computer-symbolic',
+ /* Translators: this is for using only the laptop display.
+ * Try to keep it under around 15 characters.
+ */
+ label: _('Built-in Only'),
+ switchMode: Meta.MonitorSwitchConfigType.BUILTIN,
+ });
+ }
super._init(items);
@@ -65,7 +83,10 @@ class SwitchMonitorPopup extends SwitcherPopup.SwitcherPopup {
_finish() {
super._finish();
- Meta.MonitorManager.get().switch_config(this._selectedIndex);
+ const monitorManager = global.backend.get_monitor_manager();
+ const item = this._items[this._selectedIndex];
+
+ monitorManager.switch_config(item.switchType);
}
});
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]