ui/gtk/button.c

branch
newapi
changeset 298
c5e207d01ff2
parent 297
a73c60adf188
child 301
f9e7c57e1e2f
--- 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;

mercurial