From ed72aa2876acdf2d54226d8763c5c319106f1407 Mon Sep 17 00:00:00 2001 From: Rico Tzschichholz Date: Sun, 10 Mar 2019 18:14:09 +0100 Subject: gsignal: Use guint to represent flags-enum in custom GMarshalFunc --- codegen/valagsignalmodule.vala | 7 ++++++- tests/Makefile.am | 1 + tests/objects/signals-enum-marshal.vala | 21 +++++++++++++++++++++ 3 files changed, 28 insertions(+), 1 deletion(-) create mode 100644 tests/objects/signals-enum-marshal.vala diff --git a/codegen/valagsignalmodule.vala b/codegen/valagsignalmodule.vala index bcda9d96f..c4c046a17 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 DelegateType) { diff --git a/tests/Makefile.am b/tests/Makefile.am index 865228871..e54e87227 100644 --- a/tests/Makefile.am +++ b/tests/Makefile.am @@ -298,6 +298,7 @@ TESTS = \ objects/property-static.vala \ objects/regex.vala \ objects/signals.vala \ + objects/signals-enum-marshal.vala \ objects/signals-delegate.vala \ objects/signals-delegate-parameter.vala \ objects/signals-lambda-delegate.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"); +} -- cgit v1.2.1