diff --git a/src/prefs-box-order-item-row.ui b/src/prefs-box-order-item-row.ui
index a82e225..2c8e424 100644
--- a/src/prefs-box-order-item-row.ui
+++ b/src/prefs-box-order-item-row.ui
@@ -32,7 +32,15 @@
-
+
+
+
+
diff --git a/src/prefsModules/PrefsBoxOrderItemRow.js b/src/prefsModules/PrefsBoxOrderItemRow.js
index b3fda58..b62ab5c 100644
--- a/src/prefsModules/PrefsBoxOrderItemRow.js
+++ b/src/prefsModules/PrefsBoxOrderItemRow.js
@@ -21,6 +21,7 @@
const Gtk = imports.gi.Gtk;
const Gdk = imports.gi.Gdk;
+const Gio = imports.gi.Gio;
const GObject = imports.gi.GObject;
const ExtensionUtils = imports.misc.extensionUtils;
@@ -29,12 +30,16 @@ const Me = ExtensionUtils.getCurrentExtension();
var PrefsBoxOrderItemRow = GObject.registerClass({
GTypeName: "PrefsBoxOrderItemRow",
Template: Me.dir.get_child("prefs-box-order-item-row.ui").get_uri(),
- InternalChildren: ["item-name-display-label"]
+ InternalChildren: [
+ "item-name-display-label",
+ "menu-button"
+ ]
}, class PrefsBoxOrderItemRow extends Gtk.ListBoxRow {
_init(params = {}, scrollManager, item) {
super._init(params);
this._associateItem(item);
+ this._configureMenu();
// Make `this` draggable by creating a drag source and adding it to
// `this`.
@@ -124,4 +129,24 @@ var PrefsBoxOrderItemRow = GObject.registerClass({
// Otherwise just set it to `item`.
else this._item_name_display_label.set_label(item);
}
+
+ /**
+ * Configure the menu.
+ */
+ _configureMenu() {
+ let menu = new Gio.Menu();
+ menu.append("Forget", `prefsBoxOrderItemRow-${this.item}.forget`);
+ this._menu_button.set_menu_model(menu);
+
+ const forgetAction = new Gio.SimpleAction({ name: "forget" });
+ forgetAction.connect("activate", () => {
+ const parentListBox = this.get_parent();
+ parentListBox.remove(this);
+ parentListBox.saveBoxOrderToSettings();
+ });
+
+ const actionGroup = new Gio.SimpleActionGroup();
+ actionGroup.add_action(forgetAction);
+ this.insert_action_group(`prefsBoxOrderItemRow-${this.item}`, actionGroup);
+ }
});