Fix positioning and blank spaces

This commit is contained in:
Grégory Soutadé 2020-11-04 14:52:43 +01:00
parent 5458908603
commit 8c709d38d5

View File

@ -22,6 +22,7 @@
// https://gjs-docs.gnome.org/st10~1.0_api/st.widget
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/master/js/ui/panelMenu.js
// https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/master/js/ui/popupMenu.js
//https://gitlab.gnome.org/GNOME/gnome-shell/-/blob/master/js/ui/panel.js
const St = imports.gi.St;
const Gio = imports.gi.Gio;
const Lang = imports.lang;
@ -66,11 +67,13 @@ var MonitorWidget = GObject.registerClass({
},
class MonitorWidget extends PanelMenu.Button {
_init(item, group, lastWidget) {
_init(item, group, position) {
super._init(0.0);
this.name = item['name'];
this.group = group;
this.fullname = this.name + '@' + this.group;
if (item.hasOwnProperty('icon'))
{
@ -105,8 +108,15 @@ class MonitorWidget extends PanelMenu.Button {
this.connect('enter-event', this._onEnter.bind(this));
this.connect('leave-event', this._onLeave.bind(this));
this.connect('style-changed', this._onStyleChanged.bind(this));
Main.panel.addToStatusArea(group, this, (lastWidget>0)?lastWidget:-1, box);
Main.panel.addToStatusArea(this.fullname, this, position, box);
}
_onStyleChanged(actor) {
// Force these values to avoid big spaces between each widgets
this._minHPadding = 1;
this._natHPadding = 1;
}
_onEnter() {
@ -473,8 +483,22 @@ class GenericMonitorDBUS {
// New widget
if (monitorWidget === null) {
let lastWidget = group.length - 1;
monitorWidget = new MonitorWidget(item, groupName, lastWidget);
let position = group.length - 1;
// Find real position
if (position != -1) {
let lastWidget = group[position].container;
let childrens = lastWidget.get_parent().get_children();
for(;position < childrens.length; position++)
{
if (childrens[position] == lastWidget) {
position++;
break;
}
}
if (position >= childrens.length)
position = -1;
}
monitorWidget = new MonitorWidget(item, groupName, position);
group.push(monitorWidget);
// Connect signals
// if (onClick !== '') {