如何在运行时重置PanelMenu.Button图标?

如何在运行时重置PanelMenu.Button图标?

我正在使用 gjs 开发 GNOME Shell 扩展。目前,我将 panelMenu.Button 图标设置为:

class MenuButton extends PanelMenu.Button {
...
...
setIcon() {
    const icon_class = ICON_CLASS[this._settings.get_enum("icon")];
    this.icon = new St.Icon({
      style_class: icon_class,
    });

    this.add_actor(this.icon);
  }
...
}

当设置信号触发变化时:

this._settingsC = this._settings.connect("changed", () => this.resetIcon());

和resetIcon()是:

resetIcon() {
    this.remove(this.icon)
    const icon_class = ICON_CLASS[this._settings.get_enum("icon")];
    this.icon = new St.Icon({
      style_class: icon_class,
    });
    this.add_actor(this.icon);
  }

但它不会在运行时更改/重新渲染图标,如果我重新加载扩展,则更改仅在那时可见。

如何在运行时更改图标?

相关内容