quickSettings: Add SystemIndicator
This serves the exact same purpose as the existing SystemIndicator class from PanelMenu, except that it exposes a quickSettingsItems array instead of a menu. Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2392>
This commit is contained in:
parent
e5d4984c1b
commit
f18d103f83
@ -1,4 +1,4 @@
|
|||||||
/* exported QuickToggle, QuickSettingsMenu */
|
/* exported QuickToggle, QuickSettingsMenu, SystemIndicator */
|
||||||
const {Atk, Clutter, Gio, GLib, GObject, Pango, St} = imports.gi;
|
const {Atk, Clutter, Gio, GLib, GObject, Pango, St} = imports.gi;
|
||||||
|
|
||||||
const Main = imports.ui.main;
|
const Main = imports.ui.main;
|
||||||
@ -268,3 +268,28 @@ var QuickSettingsMenu = class extends PopupMenu.PopupMenu {
|
|||||||
this._grid, item, 'column-span', colSpan);
|
this._grid, item, 'column-span', colSpan);
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var SystemIndicator = GObject.registerClass(
|
||||||
|
class SystemIndicator extends St.BoxLayout {
|
||||||
|
_init() {
|
||||||
|
super._init({
|
||||||
|
style_class: 'panel-status-indicators-box',
|
||||||
|
reactive: true,
|
||||||
|
visible: false,
|
||||||
|
});
|
||||||
|
|
||||||
|
this.quickSettingsItems = [];
|
||||||
|
}
|
||||||
|
|
||||||
|
_syncIndicatorsVisible() {
|
||||||
|
this.visible = this.get_children().some(a => a.visible);
|
||||||
|
}
|
||||||
|
|
||||||
|
_addIndicator() {
|
||||||
|
const icon = new St.Icon({style_class: 'system-status-icon'});
|
||||||
|
this.add_actor(icon);
|
||||||
|
icon.connect('notify::visible', () => this._syncIndicatorsVisible());
|
||||||
|
this._syncIndicatorsVisible();
|
||||||
|
return icon;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user