padOsd: Cache label coordinates/arrangements

This is actually static for a given PadDiagram, as it always represents
a single device.

Fixes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/2570

https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/1290
This commit is contained in:
Carlos Garnacho 2020-05-29 16:07:28 +02:00 committed by Florian Müllner
parent f58cb34065
commit 63abfc163d

View File

@ -444,14 +444,12 @@ var PadDiagram = GObject.registerClass({
this._updateDiagramScale(); this._updateDiagramScale();
for (let i = 0; i < this._labels.length; i++) { for (let i = 0; i < this._labels.length; i++) {
const { label, action, idx, dir } = this._labels[i]; const { label, x, y, arrangement } = this._labels[i];
let [found_, x, y, arrangement] = this._getLabelCoords(action, idx, dir);
this._allocateChild(label, x, y, arrangement); this._allocateChild(label, x, y, arrangement);
} }
if (this._editorActor && this._curEdited) { if (this._editorActor && this._curEdited) {
const { action, idx, dir } = this._curEdited; const { x, y, arrangement } = this._curEdited;
let [found_, x, y, arrangement] = this._getLabelCoords(action, idx, dir);
this._allocateChild(this._editorActor, x, y, arrangement); this._allocateChild(this._editorActor, x, y, arrangement);
} }
} }
@ -576,12 +574,12 @@ var PadDiagram = GObject.registerClass({
} }
_addLabel(action, idx, dir) { _addLabel(action, idx, dir) {
let [found] = this._getLabelCoords(action, idx, dir); let [found, x, y, arrangement] = this._getLabelCoords(action, idx, dir);
if (!found) if (!found)
return false; return false;
let label = new St.Label(); let label = new St.Label();
this._labels.push({ label, action, idx, dir }); this._labels.push({ label, action, idx, dir, x, y, arrangement });
this.add_actor(label); this.add_actor(label);
return true; return true;
} }