static void bacon_volume_button_update_icon (BaconVolumeButton *button) { GtkRange *range = GTK_RANGE (button->scale); float val = gtk_range_get_value (range); GtkAdjustment *adj; GdkPixbuf *pixbuf; float step; adj = gtk_range_get_adjustment (range); step = (adj->upper - adj->lower) / 4; if (val == adj->lower) pixbuf = button->icon[0]; else if (val > adj->lower && val <= adj->lower + step) pixbuf = button->icon[1]; else if (val > adj->lower + step && val <= adj->lower + step * 2) pixbuf = button->icon[2]; else pixbuf = button->icon[3]; gtk_image_set_from_pixbuf (GTK_IMAGE (button->image), pixbuf); }