455 evt.eventdata = NULL; |
455 evt.eventdata = NULL; |
456 evt.intval = gtk_check_menu_item_get_active(ci); |
456 evt.intval = gtk_check_menu_item_get_active(ci); |
457 event->callback(&evt, event->userdata); |
457 event->callback(&evt, event->userdata); |
458 } |
458 } |
459 |
459 |
460 int ui_checkitem_get(UiInteger *i) { |
460 int64_t ui_checkitem_get(UiInteger *i) { |
461 int state = gtk_check_menu_item_get_active(i->obj); |
461 int state = gtk_check_menu_item_get_active(i->obj); |
462 i->value = state; |
462 i->value = state; |
463 return state; |
463 return state; |
464 } |
464 } |
465 |
465 |
466 void ui_checkitem_set(UiInteger *i, int value) { |
466 void ui_checkitem_set(UiInteger *i, int64_t value) { |
467 i->value = value; |
467 i->value = value; |
468 gtk_check_menu_item_set_active(i->obj, value); |
468 gtk_check_menu_item_set_active(i->obj, value); |
469 } |
469 } |
470 |
470 |
471 |
471 |
476 static gboolean ui_button_press_event(GtkWidget *widget, GdkEvent *event, GtkMenu *menu) { |
476 static gboolean ui_button_press_event(GtkWidget *widget, GdkEvent *event, GtkMenu *menu) { |
477 if(event->type == GDK_BUTTON_PRESS) { |
477 if(event->type == GDK_BUTTON_PRESS) { |
478 GdkEventButton *e = (GdkEventButton*)event; |
478 GdkEventButton *e = (GdkEventButton*)event; |
479 if(e->button == 3) { |
479 if(e->button == 3) { |
480 gtk_widget_show_all(GTK_WIDGET(menu)); |
480 gtk_widget_show_all(GTK_WIDGET(menu)); |
481 gtk_menu_popup(menu, NULL, NULL, NULL, NULL, e->button, e->time); |
481 ui_contextmenu_popup(menu); |
482 return TRUE; |
482 return TRUE; |
483 } |
483 } |
484 } |
484 } |
485 return FALSE; |
485 return FALSE; |
486 } |
486 } |
499 ct->menu = menu; |
499 ct->menu = menu; |
500 return menu; |
500 return menu; |
501 } |
501 } |
502 |
502 |
503 void ui_contextmenu_popup(UIMENU menu) { |
503 void ui_contextmenu_popup(UIMENU menu) { |
|
504 #if GTK_MAJOR_VERSION >= 3 && GTK_MINOR_VERSION >= 16 |
|
505 gtk_menu_popup_at_pointer(menu, NULL); |
|
506 #else |
504 gtk_menu_popup(menu, NULL, NULL, 0, 0, 0, gtk_get_current_event_time()); |
507 gtk_menu_popup(menu, NULL, NULL, 0, 0, 0, gtk_get_current_event_time()); |
|
508 #endif |
505 } |
509 } |
506 |
510 |
507 void ui_widget_menuitem(UiObject *obj, char *label, ui_callback f, void *userdata) { |
511 void ui_widget_menuitem(UiObject *obj, char *label, ui_callback f, void *userdata) { |
508 ui_widget_menuitem_gr(obj, label, f, userdata, -1); |
512 ui_widget_menuitem_gr(obj, label, f, userdata, -1); |
509 } |
513 } |