# HG changeset patch # User Sean Egan # Date 1173139618 0 # Node ID f3ebd1c17c7bb8aaa7d8cc209b939a4f853db5af # Parent 037c51958cc6089c60183bd0a689c66387ef50e1 change icon on resize diff -r 037c51958cc6 -r f3ebd1c17c7b pidgin/gtkdocklet-x11.c --- a/pidgin/gtkdocklet-x11.c Mon Mar 05 21:39:55 2007 +0000 +++ b/pidgin/gtkdocklet-x11.c Tue Mar 06 00:06:58 2007 +0000 @@ -40,6 +40,8 @@ static GtkTooltips *tooltips = NULL; static GdkPixbuf *blank_icon = NULL; static int embed_timeout = 0; +static DockletStatus icon_status = 0; +static int docklet_height = 0; /* protos */ static void docklet_x11_create(void); @@ -117,13 +119,23 @@ if(icon_name) { int icon_size; - GtkAllocation alloc = GTK_WIDGET(docklet)->allocation; - if (alloc.height < 22) + if (docklet_height < 22) icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_EXTRA_SMALL); else icon_size = gtk_icon_size_from_name(PIDGIN_ICON_SIZE_TANGO_SMALL); + gtk_image_set_from_stock(GTK_IMAGE(image), icon_name, icon_size); } + icon_status = icon; +} + +static void +docklet_x11_resize_icon(GtkWidget *widget) +{ + if (docklet_height == widget->allocation.height) + return; + docklet_height = widget->allocation.height; + docklet_x11_update_icon(icon_status); } static void @@ -241,8 +253,8 @@ g_signal_connect(G_OBJECT(docklet), "embedded", G_CALLBACK(docklet_x11_embedded_cb), NULL); g_signal_connect(G_OBJECT(docklet), "destroy", G_CALLBACK(docklet_x11_destroyed_cb), NULL); + g_signal_connect(G_OBJECT(docklet), "size-allocate", G_CALLBACK(docklet_x11_resize_icon), NULL); g_signal_connect(G_OBJECT(box), "button-release-event", G_CALLBACK(docklet_x11_clicked_cb), NULL); - gtk_container_add(GTK_CONTAINER(box), image); gtk_container_add(GTK_CONTAINER(docklet), box);