summaryrefslogtreecommitdiff
path: root/vala/valasignal.vala
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2020-08-07 18:54:51 +0200
committerRico Tzschichholz <ricotz@ubuntu.com>2020-08-07 19:04:45 +0200
commit5da90d7c5bfe9a977720221717c774300c24484c (patch)
treed6e230318f55ecd5ac9ed06d9f75513d7c949c61 /vala/valasignal.vala
parent01914cd1303b34bb583044f49370e7d21a6d44e8 (diff)
downloadvala-5da90d7c5bfe9a977720221717c774300c24484c.tar.gz
codegen: Support non-virtual signals with default handler
Fixes https://gitlab.gnome.org/GNOME/vala/issues/1056
Diffstat (limited to 'vala/valasignal.vala')
-rw-r--r--vala/valasignal.vala13
1 files changed, 3 insertions, 10 deletions
diff --git a/vala/valasignal.vala b/vala/valasignal.vala
index 392b31489..df7d76199 100644
--- a/vala/valasignal.vala
+++ b/vala/valasignal.vala
@@ -222,24 +222,17 @@ public class Vala.Signal : Symbol, Callable {
}
}
- if (!is_virtual && body != null) {
- error = true;
- Report.error (source_reference, "Only virtual signals can have a default signal handler body");
- }
-
-
- if (is_virtual) {
+ if (body != null || (is_virtual && external_package)) {
default_handler = new Method (name, return_type, source_reference);
default_handler.owner = owner;
- default_handler.access = access;
+ default_handler.access = (is_virtual ? access : SymbolAccessibility.PRIVATE);
default_handler.external = external;
default_handler.hides = hides;
- default_handler.is_virtual = true;
+ default_handler.is_virtual = is_virtual;
default_handler.signal_reference = this;
default_handler.body = body;
-
foreach (Parameter param in parameters) {
default_handler.add_parameter (param);
}