From: Evan Nemerson Date: Wed, 27 Mar 2013 09:08:23 +0000 (-0700) Subject: gtk+-3.0: make IconInfo a compact class instead of a GObject X-Git-Tag: 0.20.1~4 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=fd7ed30beaf863e011196edacef6e894712332f5;p=thirdparty%2Fvala.git gtk+-3.0: make IconInfo a compact class instead of a GObject Fixes bug 695831. --- diff --git a/vapi/gtk+-3.0.vapi b/vapi/gtk+-3.0.vapi index 7b10f2684..0b19cc612 100644 --- a/vapi/gtk+-3.0.vapi +++ b/vapi/gtk+-3.0.vapi @@ -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 (); diff --git a/vapi/packages/gtk+-3.0/gtk+-3.0.metadata b/vapi/packages/gtk+-3.0/gtk+-3.0.metadata index 6bbc7f8cb..535061c95 100644 --- a/vapi/packages/gtk+-3.0/gtk+-3.0.metadata +++ b/vapi/packages/gtk+-3.0/gtk+-3.0.metadata @@ -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" diff --git a/vapigen/valagidlparser.vala b/vapigen/valagidlparser.vala index c707d9f07..a5fc598c2 100644 --- a/vapigen/valagidlparser.vala +++ b/vapigen/valagidlparser.vala @@ -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));