Ich entwickle eine Erweiterung der Gnome-Shell. Meine Erweiterung benötigt einen Schieberegler für eine Anzeige im Statusbereich. Ich hatte einige Probleme, es zu setzen, ich schrieb meinen Code auf diesem slightly outdated reference, das Hauptproblem war, dass das 'PopupSliderMenuItem' im Quellcode fehlte. Also habe ich etwas recherchiert und herausgefunden, dass es gelöscht wurde. Diese commit enthält weitere Informationen.addActor ist keine Funktion
Also habe ich versucht, auf die diese (aktualisiert) Code zu folgen begehen:
this._slider = new Slider.Slider(0);
this._slider.connect('value-changed', Lang.bind(this, this._sliderChanged));
this._slider.connect('drag-end', Lang.bind(this, this._notifyVolumeChange));
this.item = new PopupMenu.PopupBaseMenuItem({ activate: false });
this.item.addActor(this._slider.actor, { expand: true });
ich diesen Code zu meinem Projekt Refactoring, und es sieht wie folgt aus:
this.slider = new Slider.Slider(0.5);
this.slider.connect('value-changed', Lang.bind(this, this._sliderChanged));
this.slider.connect('drag-end', Lang.bind(this, this._setNewColorTemperature));
this.sliderContainer = new PopupMenu.PopupBaseMenuItem();
this.sliderContainer.addActor(this.slider.actor, { expand: true });
this.menu.addMenuItem(this.sliderContainer);
Der erste Block ist auf dem Gnome-Shell-Quellcode (es setzt den Lautstärkeregler). Mein Code (der zweite Block) wirft diese Ausnahme auf der ‚addActor‘ line:
Gjs-Message: JS LOG: Extension ****censored**** had error: TypeError: sliderContainer.addActor is not a function
Wer hat eine Ahnung, warum dieser Fehler passiert ist? Das Seltsamste ist, dass der Quellcode für die PopupBaseMenuItem class die Funktion hat, die ich anrufe.
Wenn Sie weitere Informationen benötigen, bin ich gerne bereit zu stellen.
Können Sie ein einfaches allumfassenden Beispiel erzeugen – mplungjan
von dem, was ich sagen kann, nennt PopupBaseMenuItem addActor durch „grabHelper“ [Zeile 1191] (https://git.gnome.org/browse/gnome-shell/tree/js/ui/popupMenu.js#n1191) this._grabHelper.addActor (source); – scottjustin5000
Der GrabHelper ist für die PopupMenuManager-Klasse, ich brauchte etwas für das PopupBaseMenuItem. Aber vergiss es, ich fand die Lösung, nachdem ich geschlafen habe, hehe, ich werde es hier posten –