File virtview-git-ui-lookup.patch of Package virt-viewer

Subject: Lookup UI file correctly, to fix Windows support
From: Marc-André Lureau marcandre.lureau@redhat.com Tue Jul 19 19:18:50 2011 +0200
Date: Thu Aug 4 13:32:17 2011 +0100:
Git: 1002a220a4e6b7083d0a9bc7dbef64799ae5b496


Index: virt-viewer-0.4.1/src/Makefile.am
===================================================================
--- virt-viewer-0.4.1.orig/src/Makefile.am
+++ virt-viewer-0.4.1/src/Makefile.am
@@ -52,5 +52,4 @@ virt_viewer_CFLAGS = \
 	@LIBXML2_CFLAGS@ \
 	@LIBVIRT_CFLAGS@ \
 	@WARN_CFLAGS@ \
-	-DBUILDER_XML_DIR="\"$(builderxmldir)\"" \
 	-DLOCALE_DIR=\""$(datadir)/locale"\"
Index: virt-viewer-0.4.1/src/virt-viewer-util.c
===================================================================
--- virt-viewer-0.4.1.orig/src/virt-viewer-util.c
+++ virt-viewer-0.4.1/src/virt-viewer-util.c
@@ -42,16 +42,34 @@ GtkBuilder *virt_viewer_util_load_ui(con
 	if (stat(name, &sb) >= 0) {
 		gtk_builder_add_from_file(builder, name, &error);
 	} else {
-		gchar *path = g_strdup_printf("%s/%s", BUILDER_XML_DIR, name);
-		gtk_builder_add_from_file(builder, path, &error);
-		g_free(path);
+                const gchar * const * dirs = g_get_system_data_dirs();
+                g_return_val_if_fail(dirs != NULL, NULL);
+
+                while (dirs[0] != NULL) {
+                        gchar *path = g_build_filename(dirs[0], PACKAGE, "ui", name, NULL);
+                        if (gtk_builder_add_from_file(builder, path, NULL) != 0) {
+                                g_free(path);
+                                break;
+                        }
+                        g_free(path);
+                        dirs++;
+                }
+                if (dirs[0] == NULL)
+                        goto failed;
 	}
 
-	if (error)
+	if (error) {
 		g_error("Cannot load UI description %s: %s", name,
 			error->message);
+                g_clear_error(&error);
+                goto failed;
+        }
 
 	return builder;
+failed:
+        g_error("failed to find UI description file");
+        g_object_unref(builder);
+        return NULL;
 }
 
 int
openSUSE Build Service is sponsored by