[gtk/builder-tool-fixes: 1/2] builder-tool: Handle GtkWidget::visible properly
- From: Matthias Clasen <matthiasc src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [gtk/builder-tool-fixes: 1/2] builder-tool: Handle GtkWidget::visible properly
- Date: Sun, 5 May 2019 06:26:21 +0000 (UTC)
commit 40fe3d94ac2e502c2d5697d8dc7b3faedce5d93e
Author: Matthias Clasen <mclasen redhat com>
Date: Sat May 4 15:58:11 2019 +0000
builder-tool: Handle GtkWidget::visible properly
This property has a 'smart' default that depends
on the class of the object we're creating. Take
that into account when deciding whether to omit
properties that are set to their default value.
gtk/tools/gtk-builder-tool-simplify.c | 27 ++++++++++++++++++++++++---
1 file changed, 24 insertions(+), 3 deletions(-)
---
diff --git a/gtk/tools/gtk-builder-tool-simplify.c b/gtk/tools/gtk-builder-tool-simplify.c
index 4ef7373bd3..93c19e0a8c 100644
--- a/gtk/tools/gtk-builder-tool-simplify.c
+++ b/gtk/tools/gtk-builder-tool-simplify.c
@@ -358,8 +358,11 @@ get_property_pspec (MyParserData *data,
return pspec;
}
+static const char *get_class_name (Element *element);
+
static gboolean
-value_is_default (MyParserData *data,
+value_is_default (Element *element,
+ MyParserData *data,
GParamSpec *pspec,
const gchar *value_string)
{
@@ -377,7 +380,25 @@ value_is_default (MyParserData *data,
ret = FALSE;
}
else
- ret = g_param_value_defaults (pspec, &value);
+ {
+ /* GtkWidget::visible has a 'smart' default */
+ if (pspec->owner_type == GTK_TYPE_WIDGET &&
+ g_str_equal (pspec->name, "visible"))
+ {
+ const char *class_name = get_class_name (element);
+ GType type = g_type_from_name (class_name);
+ gboolean default_value;
+
+ if (g_type_is_a (type, GTK_TYPE_NATIVE))
+ default_value = FALSE;
+ else
+ default_value = TRUE;
+
+ ret = g_value_get_boolean (&value) == default_value;
+ }
+ else
+ ret = g_param_value_defaults (pspec, &value);
+ }
g_value_reset (&value);
@@ -556,7 +577,7 @@ property_can_be_omitted (Element *element,
if (needs_explicit_setting (pspec, kind))
return FALSE;
- return value_is_default (data, pspec, value_string);
+ return value_is_default (element, data, pspec, value_string);
}
static gboolean
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]