diff --git a/blueprintcompiler/language/gobject_signal.py b/blueprintcompiler/language/gobject_signal.py index 063b2e8..9348321 100644 --- a/blueprintcompiler/language/gobject_signal.py +++ b/blueprintcompiler/language/gobject_signal.py @@ -166,11 +166,18 @@ class Signal(AstNode): @decompiler("signal") -def decompile_signal(ctx, gir, name, handler, swapped="false", object=None): +def decompile_signal( + ctx, gir, name, handler, swapped="false", after="false", object=None +): object_name = object or "" name = name.replace("_", "-") + line = f"{name} => ${handler}({object_name})" + if decompile.truthy(swapped): - ctx.print(f"{name} => ${handler}({object_name}) swapped;") - else: - ctx.print(f"{name} => ${handler}({object_name});") + line += " swapped" + if decompile.truthy(after): + line += " after" + + line += ";" + ctx.print(line) return gir diff --git a/blueprintcompiler/outputs/xml/__init__.py b/blueprintcompiler/outputs/xml/__init__.py index 862df14..22ca9e4 100644 --- a/blueprintcompiler/outputs/xml/__init__.py +++ b/blueprintcompiler/outputs/xml/__init__.py @@ -161,6 +161,7 @@ class XmlOutput(OutputFormat): name=name, handler=signal.handler, swapped=signal.is_swapped or None, + after=signal.is_after or None, object=( self._object_id(signal, signal.object_id) if signal.object_id else None ), diff --git a/tests/samples/signal.blp b/tests/samples/signal.blp index 5f3aa7f..c299825 100644 --- a/tests/samples/signal.blp +++ b/tests/samples/signal.blp @@ -5,6 +5,6 @@ Entry { } Button button { - clicked => $on_button_clicked() swapped; + clicked => $on_button_clicked() swapped after; notify::visible => $on_button_notify_visible(); } diff --git a/tests/samples/signal.ui b/tests/samples/signal.ui index 8163ca3..6ffa0e7 100644 --- a/tests/samples/signal.ui +++ b/tests/samples/signal.ui @@ -10,7 +10,7 @@ corresponding .blp file and regenerate this file with blueprint-compiler. - +