--- a/ui/gtk/button.c Sun Sep 15 20:59:48 2024 +0200 +++ b/ui/gtk/button.c Mon Sep 16 22:09:32 2024 +0200 @@ -180,15 +180,22 @@ #endif } - - - - +#if GTK_MAJOR_VERSION >= 4 +#define RADIO_GROUP GtkCheckButton +#define RADIOBUTTON_NEW(group, label) gtk_check_button_new_with_label(label) +#define RADIOBUTTON_SET_GROUP(button, group) +#define RADIOBUTTON_GET_GROUP(button) GTK_CHECK_BUTTON(button) +#else +#define RADIO_GROUP GSList +#define RADIOBUTTON_NEW(group, label) gtk_radio_button_new_with_label(group, label) +#define RADIOBUTTON_SET_GROUP(button, group) /* noop */ +#define RADIOBUTTON_GET_GROUP(button) gtk_radio_button_get_group(GTK_RADIO_BUTTON(button)) +#endif UIWIDGET ui_radiobutton_create(UiObject *obj, UiToggleArgs args) { UiObject* current = uic_current_obj(obj); - GSList *rg = NULL; + RADIO_GROUP *rg = NULL; UiInteger *rgroup; UiVar* var = NULL; @@ -207,8 +214,8 @@ } } - GtkWidget *rbutton = gtk_radio_button_new_with_label(rg, args.label ? args.label : ""); - rg = gtk_radio_button_get_group(GTK_RADIO_BUTTON(rbutton)); + GtkWidget *rbutton = RADIOBUTTON_NEW(rg, args.label); + rg = RADIOBUTTON_GET_GROUP(rbutton); if(rgroup) { rgroup->obj = rg; @@ -244,7 +251,7 @@ return rbutton; } -void ui_radio_obs(GtkToggleToolButton *widget, UiVarEventData *event) { +void ui_radio_obs(GtkToggleButton *widget, UiVarEventData *event) { UiInteger *i = event->var->value; UiEvent e;