grim/guifications1

Parents 333707788c68
Children 30a7f185687b
scaling leak be gone, also update to work with gaim 0.77
--- a/src/gf_pngs.c Thu Apr 22 12:37:23 2004 +0000
+++ b/src/gf_pngs.c Thu Apr 22 22:43:51 2004 +0000
@@ -41,153 +41,234 @@
GdkPixbuf *
get_def_background_image() {
GdkPixbuf *ret;
-
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "backgrounds", "background_default.png", NULL), NULL);
+ gchar *img_dir, *file;
+
+ img_dir = gf_get_image_dir();
+ file = g_build_filename(img_dir, "backgrounds", "background_default.png", NULL);
+ g_free(img_dir);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
+
return ret;
}
GdkPixbuf *
get_text_clipping_image(gf_text_clipping clipping) {
GdkPixbuf *ret;
-
+ gchar *img_dir, *file;
+
+ img_dir = gf_get_image_dir();
+
switch(clipping) {
case text_clipping_ellipsis_start:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "text_clipping_ellipsis_start.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "text_clipping_ellipsis_start.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case text_clipping_ellipsis_middle:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "text_clipping_ellipsis_middle.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "text_clipping_ellipsis_middle.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case text_clipping_ellipsis_end:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "text_clipping_ellipsis_end.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "text_clipping_ellipsis_end.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case text_clipping_truncate:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "text_clipping_truncate.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "text_clipping_truncate.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
default:
ret = NULL;
break;
}
+ g_free(img_dir);
+
return ret;
}
GdkPixbuf *
get_item_position_image(gf_item_position position) {
GdkPixbuf *ret;
-
+ gchar *img_dir, *file;
+
+ img_dir = gf_get_image_dir();
+
switch (position)
{
case item_position_nw:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "item_position_north_west.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "item_position_north_west.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case item_position_n:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "item_position_north.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "item_position_north.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case item_position_ne:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "item_position_north_east.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "item_position_north_east.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case item_position_w:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "item_position_west.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "item_position_west.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case item_position_c:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "item_position_center.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "item_position_center.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case item_position_e:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "item_position_east.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "item_position_east.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case item_position_sw:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "item_position_south_west.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "item_position_south_west.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case item_position_s:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "item_position_south.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "item_position_south.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case item_position_se:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "item_position_south_east.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "item_position_south_east.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
default:
ret = NULL;
break;
}
-
+
+ g_free(img_dir);
+
return ret;
}
GdkPixbuf *
get_icon_size_image(gf_icon_size size) {
GdkPixbuf *ret;
-
+ gchar *img_dir, *file;
+
+ img_dir = gf_get_image_dir();
+
switch(size) {
case icon_size_huge:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "icon_size_huge.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "icon_size_huge.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case icon_size_large:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "icon_size_large.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "icon_size_large.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case icon_size_normal:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "icon_size_normal.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "icon_size_normal.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case icon_size_small:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "icon_size_small.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "icon_size_small.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case icon_size_tiny:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "icon_size_tiny.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "icon_size_tiny.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
default:
ret = NULL;
break;
}
-
+
+ g_free(img_dir);
+
return ret;
}
GdkPixbuf *
get_window_position_image(gf_window_position position) {
GdkPixbuf *ret;
-
+ gchar *img_dir, *file;
+
+ img_dir = gf_get_image_dir();
+
switch(position) {
case window_position_nw:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "window_position_north_west.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "window_position_north_west.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case window_position_ne:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "window_position_north_east.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "window_position_north_east.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case window_position_sw:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "window_position_south_west.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "window_position_south_west.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case window_position_se:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "window_position_south_east.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "window_position_south_east.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
default:
ret = NULL;
break;
}
-
+
+ g_free(img_dir);
+
return ret;
}
GdkPixbuf *
get_window_zoom_image(gf_window_zoom zoom) {
GdkPixbuf *ret;
-
+ gchar *img_dir, *file;
+
+ img_dir = gf_get_image_dir();
+
switch(zoom) {
case window_zoom_200:
case window_zoom_175:
case window_zoom_150:
case window_zoom_125:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "window_zoom_in.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "window_zoom_in.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case window_zoom_100:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "window_zoom_normal.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "window_zoom_normal.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
case window_zoom_75:
case window_zoom_50:
case window_zoom_25:
- ret = gdk_pixbuf_new_from_file(g_build_filename(gf_get_image_dir(), "conf", "window_zoom_out.png", NULL), NULL);
+ file = g_build_filename(img_dir, "conf", "window_zoom_out.png", NULL);
+ ret = gdk_pixbuf_new_from_file(file, NULL);
+ g_free(file);
break;
default:
ret = NULL;
break;
}
-
+
+ g_free(img_dir);
+
return ret;
}
--- a/src/guifications.c Thu Apr 22 12:37:23 2004 +0000
+++ b/src/guifications.c Thu Apr 22 22:43:51 2004 +0000
@@ -163,7 +163,7 @@
gf_event_cb(GaimBuddy *buddy, gpointer data) {
gf_event gf_new_event = (gf_event)data;
GtkWidget *new_guification, *new_guification_box;
- GdkPixbuf *pb_guification;
+ GdkPixbuf *pb_guification, *scaled;
GdkPixmap *pm_guification;
gboolean vertical;
guint timeout_id = 0;
@@ -217,11 +217,11 @@
pb_guification = gdk_pixbuf_get_from_drawable(NULL, pm_guification, NULL, 0, 0, 0, 0, -1, -1);
g_object_unref(pm_guification);
- if (zoom.width != img_size.width || zoom.height != img_size.height)
- pb_guification = gdk_pixbuf_scale_simple(pb_guification, zoom.width, zoom.height, GDK_INTERP_BILINEAR);
-
- new_guification = gtk_image_new_from_pixbuf(pb_guification);
- g_object_unref(pb_guification);
+ scaled = gdk_pixbuf_scale_simple(pb_guification, zoom.width, zoom.height, GDK_INTERP_BILINEAR);
+ g_object_unref(G_OBJECT(pb_guification));
+
+ new_guification = gtk_image_new_from_pixbuf(scaled);
+ g_object_unref(G_OBJECT(scaled));
gtk_widget_set_size_request(new_guification, zoom.width, zoom.height);
@@ -293,8 +293,9 @@
gtk_widget_destroy(gf_window);
gf_window = NULL;
}
- else
+ else {
gf_resize(gf_window, gf_box);
+ }
g_list_free(gf_list);
}
}