Currently, the user gets no feedback if the screenshot fails (e.g. if they don't have permission to write in the chosen directory, etc). This patch adds a simple dialog showing the error message when a screenshot fails. --- src/virt-viewer-window.c | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) diff --git a/src/virt-viewer-window.c b/src/virt-viewer-window.c index 9a6a738..95a760f 100644 --- a/src/virt-viewer-window.c +++ b/src/virt-viewer-window.c @@ -938,34 +938,37 @@ static GdkPixbufFormat *get_image_format(const char *filename) return g_hash_table_lookup(image_formats_once.retval, ext); } -static void +static gboolean virt_viewer_window_save_screenshot(VirtViewerWindow *self, - const char *file) + const char *file, + GError **error) { VirtViewerWindowPrivate *priv = self->priv; GdkPixbuf *pix = virt_viewer_display_get_pixbuf(VIRT_VIEWER_DISPLAY(priv->display)); GdkPixbufFormat *format = get_image_format(file); + gboolean result; if (format == NULL) { g_debug("unknown file extension, falling back to png"); if (!g_str_has_suffix(file, ".png")) { char *png_filename; png_filename = g_strconcat(file, ".png", NULL); - gdk_pixbuf_save(pix, png_filename, "png", NULL, - "tEXt::Generator App", PACKAGE, NULL); + result = gdk_pixbuf_save(pix, png_filename, "png", error, + "tEXt::Generator App", PACKAGE, NULL); g_free(png_filename); } else { - gdk_pixbuf_save(pix, file, "png", NULL, - "tEXt::Generator App", PACKAGE, NULL); + result = gdk_pixbuf_save(pix, file, "png", error, + "tEXt::Generator App", PACKAGE, NULL); } } else { char *type = gdk_pixbuf_format_get_name(format); g_debug("saving to %s", type); - gdk_pixbuf_save(pix, file, type, NULL, NULL); + result = gdk_pixbuf_save(pix, file, type, error, NULL); g_free(type); } g_object_unref(pix); + return result; } G_MODULE_EXPORT void @@ -994,9 +997,14 @@ virt_viewer_window_menu_file_screenshot(GtkWidget *menu G_GNUC_UNUSED, if (gtk_dialog_run(GTK_DIALOG (dialog)) == GTK_RESPONSE_ACCEPT) { char *filename; + GError *error = NULL; filename = gtk_file_chooser_get_filename(GTK_FILE_CHOOSER (dialog)); - virt_viewer_window_save_screenshot(self, filename); + if (!virt_viewer_window_save_screenshot(self, filename, &error)) { + virt_viewer_app_simple_message_dialog(self->priv->app, + error->message); + g_error_free(error); + } g_free(filename); } -- 2.9.4 _______________________________________________ virt-tools-list mailing list virt-tools-list@xxxxxxxxxx https://www.redhat.com/mailman/listinfo/virt-tools-list