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.