static void panel_properties_dialog_image_changed (PanelPropertiesDialog *dialog) { char *image; image = gtk_file_chooser_get_filename (GTK_FILE_CHOOSER (dialog->image_chooser)); /* FIXME: This is an ugly workaround for GTK+ bug #327243. * FIXME: Note that GTK+ 2.12 and file-set signal might help. */ if (!dialog->selection_emitted < 2 && !image) { dialog->selection_emitted++; return; } panel_profile_set_background_image (dialog->toplevel, image); g_free (image); }
static gboolean set_background_image_from_uri (PanelToplevel *toplevel, const char *uri) { char *image; if ( ! panel_profile_background_key_is_writable (toplevel, "type") || ! panel_profile_background_key_is_writable (toplevel, "image")) return FALSE; if (!(image = g_filename_from_uri (uri, NULL, NULL))) return FALSE; panel_profile_set_background_image (toplevel, image); panel_profile_set_background_type (toplevel, PANEL_BACK_IMAGE); g_free (image); return FALSE; }