--- ../gnome-launch-box.orig/src/Makefile.am 2005-07-20 19:43:53.000000000 +0100 +++ src/Makefile.am 2005-07-20 19:58:58.000000000 +0100 @@ -1,6 +1,6 @@ AM_CPPFLAGS = \ -DMENU_I_KNOW_THIS_IS_UNSTABLE \ - -DIMAGEDIR=\"$(datadir)/lb/images\" \ + -DDATADIR=\"$(datadir)\" \ @LB_CFLAGS@ bin_PROGRAMS = gnome-launch-box @@ -53,7 +53,8 @@ lb-xml-parser.c \ lb-xml-parser.h \ bacon-message-connection.c \ - bacon-message-connection.h + bacon-message-connection.h \ + binreloc.c gnome_launch_box_LDADD = @LB_LIBS@ --- ../gnome-launch-box.orig/src/lb-window.c 2005-07-20 19:43:51.000000000 +0100 +++ src/lb-window.c 2005-07-20 20:10:20.000000000 +0100 @@ -36,6 +36,8 @@ #include "lb-utils.h" #include "lb-action.h" +#include "binreloc.h" + #define FRAME_SIZE 30 #define SEARCH_TIMEOUT 150 #define SEARCH_RESET_TIMEOUT 2000 @@ -873,6 +875,18 @@ } } +static gchar *imagedir; + +/* will be called automatically before main() */ +static void __attribute__((constructor)) +locate_image_dir () +{ + if (gbr_init (NULL)) + imagedir = g_build_filename (gbr_find_data_dir (DATADIR), "lb", "images", NULL); + else + imagedir = DATADIR "/lb/images"; +} + /* * Hack to get a transparent rounded window. */ @@ -883,15 +897,18 @@ { gint frame_width, frame_height; GdkPixbuf *piece; - gint width, height; - + gint width, height; + gchar *filename; + frame_width = gdk_pixbuf_get_width (pixbuf); frame_height = gdk_pixbuf_get_height (pixbuf); width = frame_width - 2 * FRAME_SIZE; height = FRAME_SIZE; - piece = gdk_pixbuf_new_from_file_at_scale (IMAGEDIR "/lb-middle.png", + filename = g_build_filename (imagedir, "lb-middle.png", NULL); + + piece = gdk_pixbuf_new_from_file_at_scale (filename, width, height, FALSE, NULL); @@ -914,7 +931,7 @@ width = FRAME_SIZE; height = frame_height - 2 * FRAME_SIZE; - piece = gdk_pixbuf_new_from_file_at_scale (IMAGEDIR "/lb-middle.png", + piece = gdk_pixbuf_new_from_file_at_scale (filename, width, height, FALSE, NULL); @@ -937,7 +954,7 @@ width = frame_width - 2 * FRAME_SIZE; height = frame_height - 2 * FRAME_SIZE; - piece = gdk_pixbuf_new_from_file_at_scale (IMAGEDIR "/lb-middle.png", + piece = gdk_pixbuf_new_from_file_at_scale (filename, width, height, FALSE, NULL); @@ -950,6 +967,8 @@ FRAME_SIZE, FRAME_SIZE); g_object_unref (piece); + + g_free (filename); } static void @@ -960,7 +979,7 @@ gint frame_width, frame_height; GdkPixbuf *piece; gint width, height; - const gchar *filename; + gchar *filename; gint x, y; frame_width = gdk_pixbuf_get_width (pixbuf); @@ -968,16 +987,16 @@ switch (corner) { case LB_WINDOW_CORNER_TOP_LEFT: - filename = IMAGEDIR "/lb-top-left.png"; + filename = g_build_filename (imagedir, "lb-top-left.png", NULL); break; case LB_WINDOW_CORNER_TOP_RIGHT: - filename = IMAGEDIR "/lb-top-right.png"; + filename = g_build_filename (imagedir, "lb-top-right.png", NULL); break; case LB_WINDOW_CORNER_BOTTOM_LEFT: - filename = IMAGEDIR "/lb-bottom-left.png"; + filename = g_build_filename (imagedir, "lb-bottom-left.png", NULL); break; case LB_WINDOW_CORNER_BOTTOM_RIGHT: - filename = IMAGEDIR "/lb-bottom-right.png"; + filename = g_build_filename (imagedir, "lb-bottom-right.png", NULL); break; default: @@ -986,6 +1005,7 @@ } piece = gdk_pixbuf_new_from_file (filename, NULL); + g_free (filename); g_return_if_fail (piece != NULL); width = gdk_pixbuf_get_width (piece);