Adding upstream version 48.2.
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
This commit is contained in:
parent
0d8723e422
commit
1fcdbd5df9
1059 changed files with 623842 additions and 0 deletions
122
js/ui/switchMonitor.js
Normal file
122
js/ui/switchMonitor.js
Normal file
|
@ -0,0 +1,122 @@
|
|||
import Clutter from 'gi://Clutter';
|
||||
import GObject from 'gi://GObject';
|
||||
import Meta from 'gi://Meta';
|
||||
import St from 'gi://St';
|
||||
|
||||
import * as SwitcherPopup from './switcherPopup.js';
|
||||
|
||||
const APP_ICON_SIZE = 96;
|
||||
|
||||
export const SwitchMonitorPopup = GObject.registerClass(
|
||||
class SwitchMonitorPopup extends SwitcherPopup.SwitcherPopup {
|
||||
_init() {
|
||||
let items = [];
|
||||
|
||||
items.push({
|
||||
icon: 'shell-display-mirror-symbolic',
|
||||
/* Translators: this is for display mirroring i.e. cloning.
|
||||
* Try to keep it under around 15 characters.
|
||||
*/
|
||||
label: _('Mirror'),
|
||||
configType: Meta.MonitorSwitchConfigType.ALL_MIRROR,
|
||||
});
|
||||
|
||||
items.push({
|
||||
icon: 'shell-display-extend-all-symbolic',
|
||||
/* Translators: this is for the desktop spanning displays.
|
||||
* Try to keep it under around 15 characters.
|
||||
*/
|
||||
label: _('Join Displays'),
|
||||
configType: Meta.MonitorSwitchConfigType.ALL_LINEAR,
|
||||
});
|
||||
|
||||
if (global.backend.get_monitor_manager().has_builtin_panel) {
|
||||
items.push({
|
||||
icon: 'shell-display-external-only-symbolic',
|
||||
/* Translators: this is for using only external displays.
|
||||
* Try to keep it under around 15 characters.
|
||||
*/
|
||||
label: _('External Only'),
|
||||
configType: Meta.MonitorSwitchConfigType.EXTERNAL,
|
||||
});
|
||||
items.push({
|
||||
icon: 'shell-display-built-in-only-symbolic',
|
||||
/* Translators: this is for using only the laptop display.
|
||||
* Try to keep it under around 15 characters.
|
||||
*/
|
||||
label: _('Built-in Only'),
|
||||
configType: Meta.MonitorSwitchConfigType.BUILTIN,
|
||||
});
|
||||
}
|
||||
|
||||
super._init(items);
|
||||
|
||||
this._switcherList = new SwitchMonitorSwitcher(items);
|
||||
}
|
||||
|
||||
show(backward, binding, mask) {
|
||||
if (!global.backend.get_monitor_manager().can_switch_config())
|
||||
return false;
|
||||
|
||||
return super.show(backward, binding, mask);
|
||||
}
|
||||
|
||||
_initialSelection() {
|
||||
let currentConfig = global.backend.get_monitor_manager().get_switch_config();
|
||||
let selectConfig = (currentConfig + 1) % this._items.length;
|
||||
this._select(selectConfig);
|
||||
}
|
||||
|
||||
_keyPressHandler(keysym, action) {
|
||||
if (action === Meta.KeyBindingAction.SWITCH_MONITOR)
|
||||
this._select(this._next());
|
||||
else if (keysym === Clutter.KEY_Left)
|
||||
this._select(this._previous());
|
||||
else if (keysym === Clutter.KEY_Right)
|
||||
this._select(this._next());
|
||||
else
|
||||
return Clutter.EVENT_PROPAGATE;
|
||||
|
||||
return Clutter.EVENT_STOP;
|
||||
}
|
||||
|
||||
_finish() {
|
||||
super._finish();
|
||||
|
||||
const monitorManager = global.backend.get_monitor_manager();
|
||||
const item = this._items[this._selectedIndex];
|
||||
|
||||
monitorManager.switch_config(item.configType);
|
||||
}
|
||||
});
|
||||
|
||||
const SwitchMonitorSwitcher = GObject.registerClass(
|
||||
class SwitchMonitorSwitcher extends SwitcherPopup.SwitcherList {
|
||||
_init(items) {
|
||||
super._init(true);
|
||||
|
||||
for (let i = 0; i < items.length; i++)
|
||||
this._addIcon(items[i]);
|
||||
}
|
||||
|
||||
_addIcon(item) {
|
||||
const box = new St.BoxLayout({
|
||||
style_class: 'alt-tab-app',
|
||||
orientation: Clutter.Orientation.VERTICAL,
|
||||
});
|
||||
|
||||
const icon = new St.Icon({
|
||||
icon_name: item.icon,
|
||||
icon_size: APP_ICON_SIZE,
|
||||
});
|
||||
box.add_child(icon);
|
||||
|
||||
let text = new St.Label({
|
||||
text: item.label,
|
||||
x_align: Clutter.ActorAlign.CENTER,
|
||||
});
|
||||
box.add_child(text);
|
||||
|
||||
this.addItem(box, text);
|
||||
}
|
||||
});
|
Loading…
Add table
Add a link
Reference in a new issue