X-Git-Url: https://git.distorted.org.uk/~mdw/disorder/blobdiff_plain/6982880f199dda54b194408f5b4fb3c42c734e79..abf99697b4852dc7c29006d17b8fd35fe66b5cc3:/disobedience/menu.c diff --git a/disobedience/menu.c b/disobedience/menu.c index 7cf65c0..73773dd 100644 --- a/disobedience/menu.c +++ b/disobedience/menu.c @@ -115,19 +115,18 @@ static void settings(gpointer attribute((unused)) callback_data, } #endif -/** @brief Update menu state +/** @brief Called when edit menu is shown * * Determines option sensitivity according to the current tab and adjusts the * widgets accordingly. Knows about @ref DISORDER_CONNECTED so the callbacks * need not. - * - * TODO: base this on menu popup instead? */ -void menu_update(int page) { +static void edit_menu_show(GtkWidget attribute((unused)) *widget, + gpointer attribute((unused)) user_data) { if(tabs) { GtkWidget *tab = gtk_notebook_get_nth_page (GTK_NOTEBOOK(tabs), - page < 0 ? gtk_notebook_current_page(GTK_NOTEBOOK(tabs)) : page); + gtk_notebook_current_page(GTK_NOTEBOOK(tabs))); const struct tabtype *t = g_object_get_data(G_OBJECT(tab), "type"); assert(t != 0); @@ -166,7 +165,7 @@ static void manual_popup(gpointer attribute((unused)) callback_data, /** @brief Called when version arrives, displays about... popup */ static void about_popup_got_version(void attribute((unused)) *v, - const char attribute((unused)) *error, + const char attribute((unused)) *err, const char *value) { GtkWidget *w; char *server_version_string; @@ -301,7 +300,7 @@ GtkWidget *menubar(GtkWidget *w) { }, { (char *)"/Edit/Select all tracks", /* path */ - (char *)"A", /* accelerator */ + 0, /* accelerator */ select_all, /* callback */ 0, /* callback_action */ 0, /* item_type */ @@ -309,7 +308,7 @@ GtkWidget *menubar(GtkWidget *w) { }, { (char *)"/Edit/Deselect all tracks", /* path */ - (char *)"A", /* accelerator */ + 0, /* accelerator */ select_none, /* callback */ 0, /* callback_action */ 0, /* item_type */ @@ -411,6 +410,12 @@ GtkWidget *menubar(GtkWidget *w) { assert(selectall_widget != 0); assert(selectnone_widget != 0); assert(properties_widget != 0); + + + GtkWidget *edit_widget = gtk_item_factory_get_widget(mainmenufactory, + "/Edit"); + g_signal_connect(edit_widget, "show", G_CALLBACK(edit_menu_show), 0); + event_register("rights-changed", menu_rights_changed, 0); users_set_sensitive(0); m = gtk_item_factory_get_widget(mainmenufactory,