summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRico Tzschichholz <ricotz@ubuntu.com>2019-03-10 18:14:09 +0100
committerRico Tzschichholz <ricotz@ubuntu.com>2019-03-10 18:14:09 +0100
commited72aa2876acdf2d54226d8763c5c319106f1407 (patch)
tree36e280ad8e9724d0eb5c0f9254bf760d0604c2f3
parentabbdfddde0809831f23b3951a8a90007411888dc (diff)
downloadvala-ed72aa2876acdf2d54226d8763c5c319106f1407.tar.gz
gsignal: Use guint to represent flags-enum in custom GMarshalFunc
-rw-r--r--codegen/valagsignalmodule.vala7
-rw-r--r--tests/Makefile.am1
-rw-r--r--tests/objects/signals-enum-marshal.vala21
3 files changed, 28 insertions, 1 deletions
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");
+}