diff -r 909fe96e5659 -r 102fc0b8fe3e ui/gtk/menu.c --- a/ui/gtk/menu.c Sun Jan 24 22:20:47 2016 +0100 +++ b/ui/gtk/menu.c Mon Jan 25 16:36:31 2016 +0100 @@ -485,18 +485,23 @@ return FALSE; } -void ui_contextmenu(UiObject *obj) { +UIMENU ui_contextmenu(UiObject *obj) { UiContainer *ct = uic_get_current_container(obj); - ui_contextmenu_w(obj, ct->current); + return ui_contextmenu_w(obj, ct->current); } -void ui_contextmenu_w(UiObject *obj, UIWIDGET widget) { +UIMENU ui_contextmenu_w(UiObject *obj, UIWIDGET widget) { UiContainer *ct = uic_get_current_container(obj); GtkMenu *menu = GTK_MENU(gtk_menu_new()); g_signal_connect(widget, "button-press-event", (GCallback) ui_button_press_event, menu); ct->menu = menu; + return menu; +} + +void ui_contextmenu_popup(UIMENU menu) { + gtk_menu_popup(menu, NULL, NULL, 0, 0, 0, gtk_get_current_event_time()); } void ui_widget_menuitem(UiObject *obj, char *label, ui_callback f, void *userdata) { @@ -521,6 +526,7 @@ // create menuitem GtkWidget *widget = gtk_menu_item_new_with_mnemonic(label); + gtk_widget_show(widget); if(f) { UiEventData *event = malloc(sizeof(UiEventData)); @@ -570,6 +576,7 @@ // create menuitem GtkWidget *widget = gtk_image_menu_item_new_from_stock(stockid, obj->ctx->accel_group); + gtk_widget_show(widget); if(f) { UiEventData *event = malloc(sizeof(UiEventData));