summaryrefslogtreecommitdiff
path: root/gtk/gtkbuilderparser.c
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2021-09-28 13:47:15 -0400
committerMatthias Clasen <mclasen@redhat.com>2021-09-28 15:09:49 -0400
commitc4069fdcee22cdd481c5f71955447a151c8158e0 (patch)
tree77ab72b723666ea04cfe83bee79f981afdf187a0 /gtk/gtkbuilderparser.c
parentb17005ddabd1d4a2feff3dd03e1794839e4d2764 (diff)
downloadgtk+-c4069fdcee22cdd481c5f71955447a151c8158e0.tar.gz
builder: Fix handling of <binding>
We were only applying <binding> elements when the object is constructed, which can be triggered by various things (e.g. a <style> element). Defer this until we reach </object>, so we can be sure that we pick up all the bindings. Testcase included. Fixes: #4147
Diffstat (limited to 'gtk/gtkbuilderparser.c')
-rw-r--r--gtk/gtkbuilderparser.c6
1 files changed, 6 insertions, 0 deletions
diff --git a/gtk/gtkbuilderparser.c b/gtk/gtkbuilderparser.c
index f91523d598..ccfb1cbc56 100644
--- a/gtk/gtkbuilderparser.c
+++ b/gtk/gtkbuilderparser.c
@@ -1962,6 +1962,12 @@ end_element (GtkBuildableParseContext *context,
object_info->signals = NULL;
}
+ if (object_info->bindings)
+ {
+ gtk_builder_take_bindings (data->builder, object_info->object, object_info->bindings);
+ object_info->bindings = NULL;
+ }
+
free_object_info (object_info);
}
else if (strcmp (element_name, "child") == 0)