Mercurial > pidgin.yaz
comparison pidgin/gtkstatusbox.c @ 16563:fb633ba3fb1e
This is Sadrul's status-rescale.patch from ticket #314. Luke said it
solves the scaling bug.
author | Richard Laager <rlaager@wiktel.com> |
---|---|
date | Sat, 28 Apr 2007 03:19:52 +0000 |
parents | 5e47b3427b28 |
children | 2a12915d957a |
comparison
equal
deleted
inserted
replaced
16562:1f9cba8efdfb | 16563:fb633ba3fb1e |
---|---|
2012 status_box->connecting = connecting; | 2012 status_box->connecting = connecting; |
2013 pidgin_status_box_refresh(status_box); | 2013 pidgin_status_box_refresh(status_box); |
2014 } | 2014 } |
2015 | 2015 |
2016 static void | 2016 static void |
2017 pixbuf_size_prepared_cb(GdkPixbufLoader *loader, int width, int height, gpointer data) | |
2018 { | |
2019 #if GTK_CHECK_VERSION(2,2,0) | |
2020 int w, h; | |
2021 GtkIconSize icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_MEDIUM); | |
2022 gtk_icon_size_lookup(icon_size, &w, &h); | |
2023 gdk_pixbuf_loader_set_size(loader, w, h); | |
2024 #endif | |
2025 } | |
2026 | |
2027 static void | |
2017 pidgin_status_box_redisplay_buddy_icon(PidginStatusBox *status_box) | 2028 pidgin_status_box_redisplay_buddy_icon(PidginStatusBox *status_box) |
2018 { | 2029 { |
2019 | 2030 |
2020 /* This is sometimes called before the box is shown, and we will not have a size */ | 2031 /* This is sometimes called before the box is shown, and we will not have a size */ |
2021 if (status_box->icon_size <= 0) | 2032 if (status_box->icon_size <= 0) |
2029 status_box->buddy_icon_hover = NULL; | 2040 status_box->buddy_icon_hover = NULL; |
2030 | 2041 |
2031 if (status_box->buddy_icon_img != NULL) | 2042 if (status_box->buddy_icon_img != NULL) |
2032 { | 2043 { |
2033 GdkPixbufLoader *loader = gdk_pixbuf_loader_new(); | 2044 GdkPixbufLoader *loader = gdk_pixbuf_loader_new(); |
2045 g_signal_connect(G_OBJECT(loader), "size-prepared", G_CALLBACK(pixbuf_size_prepared_cb), NULL); | |
2034 gdk_pixbuf_loader_write(loader, purple_imgstore_get_data(status_box->buddy_icon_img), | 2046 gdk_pixbuf_loader_write(loader, purple_imgstore_get_data(status_box->buddy_icon_img), |
2035 purple_imgstore_get_size(status_box->buddy_icon_img), NULL); | 2047 purple_imgstore_get_size(status_box->buddy_icon_img), NULL); |
2036 gdk_pixbuf_loader_close(loader, NULL); | 2048 gdk_pixbuf_loader_close(loader, NULL); |
2037 status_box->buddy_icon = gdk_pixbuf_loader_get_pixbuf(loader); | 2049 status_box->buddy_icon = gdk_pixbuf_loader_get_pixbuf(loader); |
2038 } | 2050 } |
2045 PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, | 2057 PIDGIN_STOCK_TOOLBAR_SELECT_AVATAR, |
2046 icon_size, "PidginStatusBox"); | 2058 icon_size, "PidginStatusBox"); |
2047 } | 2059 } |
2048 | 2060 |
2049 if (status_box->buddy_icon != NULL) { | 2061 if (status_box->buddy_icon != NULL) { |
2050 status_box->icon_opaque = pidgin_gdk_pixbuf_is_opaque(status_box->buddy_icon); | 2062 status_box->icon_opaque = pidgin_gdk_pixbuf_is_opaque(status_box->buddy_icon); |
2051 gtk_image_set_from_pixbuf(GTK_IMAGE(status_box->icon), status_box->buddy_icon); | 2063 gtk_image_set_from_pixbuf(GTK_IMAGE(status_box->icon), status_box->buddy_icon); |
2052 status_box->buddy_icon_hover = gdk_pixbuf_copy(status_box->buddy_icon); | 2064 status_box->buddy_icon_hover = gdk_pixbuf_copy(status_box->buddy_icon); |
2053 do_colorshift(status_box->buddy_icon_hover, status_box->buddy_icon_hover, 32); | 2065 do_colorshift(status_box->buddy_icon_hover, status_box->buddy_icon_hover, 32); |
2054 gtk_widget_queue_resize(GTK_WIDGET(status_box)); | 2066 gtk_widget_queue_resize(GTK_WIDGET(status_box)); |
2055 } | 2067 } |