-/** @brief Create @c ql->menu if it does not already exist */
-static void ql_create_menu(struct queuelike *ql) {
- if(ql->menu)
- return;
- ql->menu = gtk_menu_new();
- g_signal_connect(ql->menu, "destroy",
- G_CALLBACK(gtk_widget_destroyed), &ql->menu);
- for(int n = 0; n < ql->nmenuitems; ++n) {
- ql->menuitems[n].w = gtk_menu_item_new_with_label(ql->menuitems[n].name);
- gtk_menu_attach(GTK_MENU(ql->menu), ql->menuitems[n].w, 0, 1, n, n + 1);
- }
- set_tool_colors(ql->menu);
-}
-
-/** @brief Configure @c ql->menu */
-static void ql_configure_menu(struct queuelike *ql) {
- /* Set the sensitivity of each menu item and (re-)establish the signal
- * handlers */
- for(int n = 0; n < ql->nmenuitems; ++n) {
- if(ql->menuitems[n].handlerid)
- g_signal_handler_disconnect(ql->menuitems[n].w,
- ql->menuitems[n].handlerid);
- gtk_widget_set_sensitive(ql->menuitems[n].w,
- ql->menuitems[n].sensitive(ql));
- ql->menuitems[n].handlerid = g_signal_connect
- (ql->menuitems[n].w, "activate",
- G_CALLBACK(ql->menuitems[n].activate), ql);
- }
-}
-