workspace-indicator: Split out WorkspacesMenu

The menu currently only contains the previews without any logic
on its own. This is about to change, so split the menu into a
separate class.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell-extensions/-/merge_requests/405>
This commit is contained in:
Florian Müllner
2025-05-22 16:27:57 +02:00
parent 53ba3ce620
commit c9678e89d2
@@ -421,6 +421,16 @@ class WorkspacePreviews extends Clutter.Actor {
}
}
class WorkspacesMenu extends PopupMenu.PopupMenu {
constructor(sourceActor) {
super(sourceActor, 0.5, St.Side.TOP);
const previews = new WorkspacePreviews({show_labels: true});
this.box.add_child(previews);
this.actor.add_style_class_name(`${baseStyleClassName}-menu`);
}
}
export class WorkspaceIndicator extends PanelMenu.Button {
static {
GObject.registerClass(this);
@@ -496,7 +506,7 @@ export class WorkspaceIndicator extends PanelMenu.Button {
this._thumbnails.visible = !useMenu;
this.setMenu(useMenu
? this._createPreviewMenu()
? new WorkspacesMenu(this)
: null);
this._updateTopBarRedirect();
@@ -523,13 +533,4 @@ export class WorkspaceIndicator extends PanelMenu.Button {
const current = this._currentWorkspace + 1;
return `${current} / ${nWorkspaces}`;
}
_createPreviewMenu() {
const menu = new PopupMenu.PopupMenu(this, 0.5, St.Side.TOP);
const previews = new WorkspacePreviews({show_labels: true});
menu.box.add_child(previews);
menu.actor.add_style_class_name(`${baseStyleClassName}-menu`);
return menu;
}
}