]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
Extend metadata support for delegates
authorJürg Billeter <j@bitron.ch>
Tue, 16 Dec 2008 18:43:55 +0000 (18:43 +0000)
committerJürg Billeter <juergbi@src.gnome.org>
Tue, 16 Dec 2008 18:43:55 +0000 (18:43 +0000)
2008-12-16  Jürg Billeter  <j@bitron.ch>

* vapigen/valagidlparser.vala:

Extend metadata support for delegates

* vapi/packages/libnotify/:

Fix NotifyActionCallback and notify_notification_add_action
bindings, fixes bug 562726

* vapi/libnotify.vapi: regenerated

svn path=/trunk/; revision=2183

ChangeLog
vapi/libnotify.vapi
vapi/packages/libnotify/libnotify.metadata
vapigen/valagidlparser.vala

index 8613325f3504bee37ab48ff833ba2cce5cad7a11..5b1b5745789300189156d430040c5d8ef2ee5032 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,16 @@
+2008-12-16  Jürg Billeter  <j@bitron.ch>
+
+       * vapigen/valagidlparser.vala:
+
+       Extend metadata support for delegates
+
+       * vapi/packages/libnotify/:
+
+       Fix NotifyActionCallback and notify_notification_add_action
+       bindings, fixes bug 562726
+
+       * vapi/libnotify.vapi: regenerated
+
 2008-12-16  Jürg Billeter  <j@bitron.ch>
 
        * vapigen/valagirparser.vala:
index 5e0918194d98eeee27cd96ef9540a44096507fba..6e567f49d23eda393564e15eec813aaa3a5c093b 100644 (file)
@@ -4,7 +4,7 @@
 namespace Notify {
        [CCode (cheader_filename = "libnotify/notify.h")]
        public class Notification : GLib.Object {
-               public void add_action (string action, string label, Notify.ActionCallback callback, GLib.FreeFunc free_func);
+               public void add_action (string action, string label, Notify.ActionCallback# callback);
                public void attach_to_status_icon (Gtk.StatusIcon status_icon);
                public void attach_to_widget (Gtk.Widget attach);
                public void clear_actions ();
@@ -15,7 +15,7 @@ namespace Notify {
                public void set_category (string category);
                public void set_geometry_hints (Gdk.Screen screen, int x, int y);
                public void set_hint_byte (string key, uchar value);
-               public void set_hint_byte_array (string key, uchar[] value, ulong len);
+               public void set_hint_byte_array (string key, uchar[] value, size_t len);
                public void set_hint_double (string key, double value);
                public void set_hint_int32 (string key, int value);
                public void set_hint_string (string key, string value);
@@ -45,7 +45,7 @@ namespace Notify {
                CRITICAL
        }
        [CCode (cheader_filename = "libnotify/notify.h")]
-       public static delegate void ActionCallback (Notify.Notification p1, string p2, void* p3);
+       public delegate void ActionCallback (Notify.Notification p1, string p2);
        [CCode (cheader_filename = "libnotify/notify.h")]
        public const int EXPIRES_DEFAULT;
        [CCode (cheader_filename = "libnotify/notify.h")]
index 4408d78a2c47bfb7012a64d363bd40307468f16c..a36d130c4ff2236bfb29942922b1011f91fc2d8f 100644 (file)
@@ -1,2 +1,7 @@
 Notify cheader_filename="libnotify/notify.h"
 
+NotifyActionCallback has_target="1"
+NotifyActionCallback.p3 hidden="1"
+notify_notification_add_action.callback transfer_ownership="1"
+notify_notification_add_action.free_func hidden="1"
+
index 096c74c910b71e49a40d199649b2bfa7e1381191..a41da99eb2ed97dcd1b725c16945dc4f676a9a05 100644 (file)
@@ -309,6 +309,8 @@ public class Vala.GIdlParser : CodeVisitor {
                                } else if (nv[0] == "has_target") {
                                        if (eval (nv[1]) == "0") {
                                                check_has_target = false;
+                                       } else if (eval (nv[1]) == "1") {
+                                               cb.has_target = true;
                                        }
                                }
                        }
@@ -334,7 +336,26 @@ public class Vala.GIdlParser : CodeVisitor {
                                ParameterDirection direction;
                                var p = new FormalParameter (param_name, parse_param (param, out direction));
                                p.direction = direction;
-                               cb.add_parameter (p);
+
+                               bool hide_param = false;
+                               bool show_param = false;
+                               attributes = get_attributes ("%s.%s".printf (node.name, param_node.name));
+                               if (attributes != null) {
+                                       foreach (string attr in attributes) {
+                                               var nv = attr.split ("=", 2);
+                                               if (nv[0] == "hidden") {
+                                                       if (eval (nv[1]) == "1") {
+                                                               hide_param = true;
+                                                       } else if (eval (nv[1]) == "0") {
+                                                               show_param = true;
+                                                       }
+                                               }
+                                       }
+                               }
+
+                               if (show_param || !hide_param) {
+                                       cb.add_parameter (p);
+                               }
                        }
 
                        remaining_params--;