]> git.ipfire.org Git - thirdparty/vala.git/commitdiff
gtkmodule: Respect "alias" attribute in gresource
authorDaiki Ueno <dueno@src.gnome.org>
Fri, 19 Dec 2014 06:49:53 +0000 (15:49 +0900)
committerDaiki Ueno <ueno@unixuser.org>
Thu, 25 Dec 2014 02:13:03 +0000 (11:13 +0900)
Though undocumented, glib-compile-resources looks at "alias" attribute
of "file" element and maps the physical file name to a logical path
name.

https://bugzilla.gnome.org/show_bug.cgi?id=741743

codegen/valagtkmodule.vala

index deb0704552f25e5e6f713a2e94e7de59db282d8b..ecc709f646ec0ea6a54e4000886ee33d521d16ee 100644 (file)
@@ -70,16 +70,22 @@ public class Vala.GtkModule : GSignalModule {
 
                        int state = 0;
                        string prefix = null;
+                       string alias = null;
 
                        MarkupTokenType current_token = reader.read_token (null, null);
                        while (current_token != MarkupTokenType.EOF) {
                                if (current_token == MarkupTokenType.START_ELEMENT && reader.name == "gresource") {
                                        prefix = reader.get_attribute ("prefix");
                                } else if (current_token == MarkupTokenType.START_ELEMENT && reader.name == "file") {
+                                       alias = reader.get_attribute ("alias");
                                        state = 1;
                                } else if (state == 1 && current_token == MarkupTokenType.TEXT) {
                                        var name = reader.content;
-                                       gresource_to_file_map.set (Path.build_filename (prefix, name), Path.build_filename (gresource_dir, name));
+                                       var filename = Path.build_filename (gresource_dir, name);
+                                       if (alias != null) {
+                                               gresource_to_file_map.set (Path.build_filename (prefix, alias), filename);
+                                       }
+                                       gresource_to_file_map.set (Path.build_filename (prefix, name), filename);
                                        state = 0;
                                }
                                current_token = reader.read_token (null, null);