+ struct cui_opt_data *cod = item->data;
+ bool found = false;
+ unsigned int dev;
+
+ /* Items array should already be disconnected */
+
+ for (dev = 0; dev < menu->item_count; dev++) {
+ if (!menu->items[dev])
+ continue;
+
+ struct pmenu_item *i = item_userptr(menu->items[dev]);
+ struct cui_opt_data *d = i->data;
+ /* Device header will have opt == NULL */
+ if (d && !d->opt) {
+ if (cod->dev == d->dev) {
+ found = true;
+ break;
+ }
+ }
+ }
+
+ if (found) {
+ assert(dev < insert_pt);
+ /* Shift down entries between header and insert_pt */
+ memmove(menu->items + dev + 2, menu->items + dev + 1,
+ ((menu->items + insert_pt) - (menu->items + dev + 1))
+ * sizeof(menu->items[0]));
+ memset(menu->items + dev + 1, 0, sizeof(menu->items[0]));
+ insert_pt = dev + 1;
+ }
+ /* If for some reason we didn't find the matching device,
+ * at least add it to a valid position */
+ pmenu_item_insert(menu, item, insert_pt);
+}