diff --git a/gtk/tools/gtk-builder-tool-simplify.c b/gtk/tools/gtk-builder-tool-simplify.c index fdac7a93c0..0650f54941 100644 --- a/gtk/tools/gtk-builder-tool-simplify.c +++ b/gtk/tools/gtk-builder-tool-simplify.c @@ -1718,6 +1718,58 @@ rewrite_bin_child (Element *element, } } +static gboolean +remove_boolean_prop (Element *element, + MyParserData *data, + const char *prop_name, + gboolean *value) +{ + GList *l; + + for (l = element->children; l; l = l->next) + { + Element *child = l->data; + + if (g_str_equal (child->element_name, "property") && + has_attribute (child, "name", prop_name)) + { + *value = strcmp (canonical_boolean_value (data, child->data), "1") == 0; + element->children = g_list_remove (element->children, child); + free_element (child); + return TRUE; + } + } + + return FALSE; +} + +static void +rewrite_radio_button (Element *element, + MyParserData *data) +{ + int i; + gboolean draw_indicator = TRUE; + const char *new_class; + + if (!remove_boolean_prop (element, data, "draw-indicator", &draw_indicator)) + remove_boolean_prop (element, data, "draw_indicator", &draw_indicator); + + if (draw_indicator) + new_class = "GtkCheckButton"; + else + new_class = "GtkToggleButton"; + + for (i = 0; element->attribute_names[i]; i++) + { + if (strcmp (element->attribute_names[i], "class") == 0) + { + g_free (element->attribute_values[i]); + element->attribute_values[i] = g_strdup (new_class); + break; + } + } +} + /* returns TRUE to remove the element from the parent */ static gboolean simplify_element (Element *element, @@ -1863,6 +1915,10 @@ rewrite_element (Element *element, g_str_equal (get_class_name (element), "GtkWindow"))) rewrite_bin_child (element, data); + if (element_is_object_or_template (element) && + g_str_equal (get_class_name (element), "GtkRadioButton")) + rewrite_radio_button (element, data); + if (g_str_equal (element->element_name, "property")) maybe_rename_property (element, data); diff --git a/testsuite/tools/simplify-data-3to4/grid.expected b/testsuite/tools/simplify-data-3to4/grid.expected index b832c4ba31..517dcd0f1d 100644 --- a/testsuite/tools/simplify-data-3to4/grid.expected +++ b/testsuite/tools/simplify-data-3to4/grid.expected @@ -31,7 +31,7 @@ - + Hello World! 1 @@ -41,7 +41,7 @@ - + Hello World! 1 button3 @@ -52,6 +52,17 @@ + + + Hello World! + button4 + 1 + + 3 + 0 + + + 1 diff --git a/testsuite/tools/simplify-data-3to4/grid.ui b/testsuite/tools/simplify-data-3to4/grid.ui index 30c0314937..a853331dc5 100644 --- a/testsuite/tools/simplify-data-3to4/grid.ui +++ b/testsuite/tools/simplify-data-3to4/grid.ui @@ -57,6 +57,19 @@ 0 + + + Hello World! + True + button4 + False + True + + + 3 + 0 + + True