From: Rico Tzschichholz Date: Sun, 10 Mar 2019 17:14:09 +0000 (+0100) Subject: gsignal: Use guint to represent flags-enum in custom GMarshalFunc X-Git-Tag: 0.42.7~30 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=26a4e28dc74fe3e02e3ed2a23f454b661a5bd1b8;p=thirdparty%2Fvala.git gsignal: Use guint to represent flags-enum in custom GMarshalFunc --- diff --git a/codegen/valagsignalmodule.vala b/codegen/valagsignalmodule.vala index fd1a1129d..e3a12f58f 100644 --- a/codegen/valagsignalmodule.vala +++ b/codegen/valagsignalmodule.vala @@ -68,7 +68,12 @@ public class Vala.GSignalModule : GObjectModule { return "gpointer"; } } else if (t.data_type is Enum) { - return "gint"; + var en = (Enum) t.data_type; + if (en.is_flags) { + return "guint"; + } else { + return "gint"; + } } else if (t is ArrayType) { return "gpointer"; } else if (t is ErrorType) { diff --git a/tests/Makefile.am b/tests/Makefile.am index caea87f06..9de376474 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -277,6 +277,7 @@ TESTS = \ objects/property-static.vala \ objects/regex.vala \ objects/signals.vala \ + objects/signals-enum-marshal.vala \ objects/signals-delegate.vala \ objects/signals-lambda-delegate.vala \ objects/test-025.vala \ diff --git a/tests/objects/signals-enum-marshal.vala b/tests/objects/signals-enum-marshal.vala new file mode 100644 index 000000000..412fa18b6 --- /dev/null +++ b/tests/objects/signals-enum-marshal.vala @@ -0,0 +1,21 @@ +enum Foo { + FOO +} + +[Flags] +enum Bar { + BAR +} + +class Manam : Object { + public signal void foo (Foo f, string s); + public signal void bar (Bar b, string s); +} + +void main () { + var manam = new Manam (); + manam.foo.connect (() => {}); + manam.foo (Foo.FOO, "foo"); + manam.bar.connect (() => {}); + manam.bar (Bar.BAR, "bar"); +}