static void xfce_panel_image_size_allocate (GtkWidget *widget, GtkAllocation *allocation) { XfcePanelImagePrivate *priv = XFCE_PANEL_IMAGE (widget)->priv; gtk_widget_set_allocation (widget, allocation); /* check if the available size changed */ if ((priv->pixbuf != NULL || priv->source != NULL) && allocation->width > 0 && allocation->height > 0 && (allocation->width != priv->width || allocation->height != priv->height)) { /* store the new size */ priv->width = allocation->width; priv->height = allocation->height; /* free cache */ xfce_panel_image_unref_null (priv->cache); if (priv->pixbuf == NULL) { /* delay icon loading */ priv->idle_load_id = gdk_threads_add_idle_full (G_PRIORITY_DEFAULT_IDLE, xfce_panel_image_load, widget, xfce_panel_image_load_destroy); } else { /* directly render pixbufs */ xfce_panel_image_load (widget); } } }
/** * xfce_panel_image_clear: * @image : an #XfcePanelImage. * * Resets the image to be empty. * * Since: 4.8 **/ void xfce_panel_image_clear (XfcePanelImage *image) { XfcePanelImagePrivate *priv = XFCE_PANEL_IMAGE (image)->priv; g_return_if_fail (XFCE_IS_PANEL_IMAGE (image)); if (priv->idle_load_id != 0) g_source_remove (priv->idle_load_id); if (priv->source != NULL) { g_free (priv->source); priv->source = NULL; } xfce_panel_image_unref_null (priv->pixbuf); xfce_panel_image_unref_null (priv->cache); /* reset values */ priv->width = -1; priv->height = -1; }