ui/gtk/button.c

branch
newapi
changeset 298
c5e207d01ff2
parent 297
a73c60adf188
child 301
f9e7c57e1e2f
equal deleted inserted replaced
297:a73c60adf188 298:c5e207d01ff2
178 #else 178 #else
179 return ui_checkbox_create(obj, args); 179 return ui_checkbox_create(obj, args);
180 #endif 180 #endif
181 } 181 }
182 182
183 183 #if GTK_MAJOR_VERSION >= 4
184 184 #define RADIO_GROUP GtkCheckButton
185 185 #define RADIOBUTTON_NEW(group, label) gtk_check_button_new_with_label(label)
186 186 #define RADIOBUTTON_SET_GROUP(button, group)
187 #define RADIOBUTTON_GET_GROUP(button) GTK_CHECK_BUTTON(button)
188 #else
189 #define RADIO_GROUP GSList
190 #define RADIOBUTTON_NEW(group, label) gtk_radio_button_new_with_label(group, label)
191 #define RADIOBUTTON_SET_GROUP(button, group) /* noop */
192 #define RADIOBUTTON_GET_GROUP(button) gtk_radio_button_get_group(GTK_RADIO_BUTTON(button))
193 #endif
187 194
188 UIWIDGET ui_radiobutton_create(UiObject *obj, UiToggleArgs args) { 195 UIWIDGET ui_radiobutton_create(UiObject *obj, UiToggleArgs args) {
189 UiObject* current = uic_current_obj(obj); 196 UiObject* current = uic_current_obj(obj);
190 197
191 GSList *rg = NULL; 198 RADIO_GROUP *rg = NULL;
192 UiInteger *rgroup; 199 UiInteger *rgroup;
193 200
194 UiVar* var = NULL; 201 UiVar* var = NULL;
195 if (args.value) { 202 if (args.value) {
196 var = uic_create_value_var(current->ctx, args.value); 203 var = uic_create_value_var(current->ctx, args.value);
205 if(!rg) { 212 if(!rg) {
206 first = TRUE; 213 first = TRUE;
207 } 214 }
208 } 215 }
209 216
210 GtkWidget *rbutton = gtk_radio_button_new_with_label(rg, args.label ? args.label : ""); 217 GtkWidget *rbutton = RADIOBUTTON_NEW(rg, args.label);
211 rg = gtk_radio_button_get_group(GTK_RADIO_BUTTON(rbutton)); 218 rg = RADIOBUTTON_GET_GROUP(rbutton);
212 219
213 if(rgroup) { 220 if(rgroup) {
214 rgroup->obj = rg; 221 rgroup->obj = rg;
215 rgroup->get = ui_radiobutton_get; 222 rgroup->get = ui_radiobutton_get;
216 rgroup->set = ui_radiobutton_set; 223 rgroup->set = ui_radiobutton_set;
242 ct->add(ct, rbutton, FALSE); 249 ct->add(ct, rbutton, FALSE);
243 250
244 return rbutton; 251 return rbutton;
245 } 252 }
246 253
247 void ui_radio_obs(GtkToggleToolButton *widget, UiVarEventData *event) { 254 void ui_radio_obs(GtkToggleButton *widget, UiVarEventData *event) {
248 UiInteger *i = event->var->value; 255 UiInteger *i = event->var->value;
249 256
250 UiEvent e; 257 UiEvent e;
251 e.obj = event->obj; 258 e.obj = event->obj;
252 e.window = event->obj->window; 259 e.window = event->obj->window;

mercurial