]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
gtk+-3.0: make IconInfo a compact class instead of a GObject
authorEvan Nemerson <evan@coeus-group.com>
Wed, 27 Mar 2013 09:08:23 +0000 (02:08 -0700)
committerEvan Nemerson <evan@coeus-group.com>
Wed, 27 Mar 2013 09:34:49 +0000 (02:34 -0700)
Fixes bug 695831.

vapi/gtk+-3.0.vapi
vapi/packages/gtk+-3.0/gtk+-3.0.metadata
vapigen/valagidlparser.vala

index 7b10f268437821ba648f98462e58696b0270a8a7..0b19cc6128a3f56e59093d145e3449cee93ae7e6 100644 (file)
@@ -2298,8 +2298,9 @@ namespace Gtk {
                public static unowned Gtk.IconSet lookup_default (string stock_id);
                public void remove_default ();
        }
-       [CCode (cheader_filename = "gtk/gtk.h")]
-       public class IconInfo : GLib.Object {
+       [CCode (cheader_filename = "gtk/gtk.h", copy_function = "gtk_icon_info_copy", free_function = "gtk_icon_info_free")]
+       [Compact]
+       public class IconInfo {
                [CCode (has_construct_function = false)]
                protected IconInfo ();
                public Gtk.IconInfo copy ();
index 6bbc7f8cbf7913475075a0f08f18061bb97c241a..535061c9504fb81501efc90c65f0fc1df142cdbb 100644 (file)
@@ -328,6 +328,7 @@ gtk_hsv_get_*.* is_out="1"
 gtk_hsv_to_rgb.r is_out="1"
 gtk_hsv_to_rgb.g is_out="1"
 gtk_hsv_to_rgb.b is_out="1"
+GtkIconInfo compact="1" copy_function="gtk_icon_info_copy" free_function="gtk_icon_info_free"
 gtk_icon_info_copy transfer_ownership="1"
 gtk_icon_info_get_embedded_rect.rectangle is_out="1"
 gtk_icon_info_load_icon transfer_ownership="1"
index c707d9f07c72d7806a1b9bc33a86583cc05cc336..a5fc598c260e32f1a8885b84400d048881d8b727 100644 (file)
@@ -1524,6 +1524,18 @@ public class Vala.GIdlParser : CodeVisitor {
                                                if (eval (nv[1]) == "1") {
                                                        cl.set_attribute ("Experimental", true);
                                                }
+                                       } else if (nv[0] == "compact") {
+                                               if (eval (nv[1]) == "1") {
+                                                       cl.is_compact = true;
+                                               }
+                                       } else if (nv[0] == "ref_function") {
+                                               cl.set_attribute_string ("CCode", "ref_function", eval (nv[1]));
+                                       } else if (nv[0] == "unref_function") {
+                                               cl.set_attribute_string ("CCode", "unref_function", eval (nv[1]));
+                                       } else if (nv[0] == "copy_function") {
+                                               cl.set_attribute_string ("CCode", "copy_function", eval (nv[1]));
+                                       } else if (nv[0] == "free_function") {
+                                               cl.set_attribute_string ("CCode", "free_function", eval (nv[1]));
                                        }
                                }
                        }
@@ -1536,8 +1548,10 @@ public class Vala.GIdlParser : CodeVisitor {
                        var parent = parse_type_string (base_class);
                        cl.add_base_type (parent);
                } else if (node.parent != null) {
-                       var parent = parse_type_string (node.parent);
-                       cl.add_base_type (parent);
+                       if (!cl.is_compact) {
+                               var parent = parse_type_string (node.parent);
+                               cl.add_base_type (parent);
+                       }
                } else {
                        var gobject_symbol = new UnresolvedSymbol (new UnresolvedSymbol (null, "GLib"), "Object");
                        cl.add_base_type (new UnresolvedType.from_symbol (gobject_symbol));