gnome シェルの拡張機能を開発しています。私の拡張機能では、ステータス領域のインジケーターにスライダー バーが必要です。私はそれを設定するのにいくつか問題がありました。私はこの少し古い参照でコードを書いていました。主な問題は、ソース コードに 'PopupSliderMenuItem' がないことでした。それで調べてみたら、削除されていることがわかりました。このコミットにはより多くの情報があります。
だから私はコミットでこの(更新された)コードに従おうとしました:
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 });
このコードをプロジェクトにリファクタリングしたところ、次のようになりました。
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);
最初のブロックは gnome-shell ソース コードにあります (ボリューム スライダーを設定します)。私のコード (2 番目のブロック) は、「addActor」行でこの例外をスローしています。
Gjs-Message: JS LOG: Extension ****censored**** had error: TypeError: sliderContainer.addActor is not a function
このエラーが発生する理由は誰にも分かりますか? 最も奇妙なことは、 PopupBaseMenuItem クラスのソース コードに、私が呼び出している関数があることです。
他に情報が必要な場合は、喜んで提供いたします。