Blob Blame History Raw
From 9411e11af06fbb24a68d2dca7dcb55267606d09d Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Marc-Andr=C3=A9=20Lureau?= <marcandre.lureau@gmail.com>
Date: Thu, 3 Jul 2014 18:41:08 +0200
Subject: [PATCH] app: add virt_viewer_app_make_dialog()

Add a function to create an application dialog. In the following
commit, we will add more details for connection failures.

Resolves: rhbz#1115986
(cherry picked from commit df28177c679e8ba0a7cf069c5f816167a0a96904)
---
 src/virt-viewer-app.c | 37 +++++++++++++++++++++++++++----------
 1 file changed, 27 insertions(+), 10 deletions(-)

diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
index b8b5c9c..0110a9f 100644
--- a/src/virt-viewer-app.c
+++ b/src/virt-viewer-app.c
@@ -199,20 +199,18 @@ virt_viewer_app_set_debug(gboolean debug)
     doDebug = debug;
 }
 
-void
-virt_viewer_app_simple_message_dialog(VirtViewerApp *self,
-                                      const char *fmt, ...)
+static GtkWidget*
+virt_viewer_app_make_message_dialog(VirtViewerApp *self,
+                                    const char *fmt, ...)
 {
-    g_return_if_fail(VIRT_VIEWER_IS_APP(self));
+    g_return_val_if_fail(VIRT_VIEWER_IS_APP(self), NULL);
     GtkWindow *window = GTK_WINDOW(virt_viewer_window_get_window(self->priv->main_window));
     GtkWidget *dialog;
     char *msg;
     va_list vargs;
 
     va_start(vargs, fmt);
-
     msg = g_strdup_vprintf(fmt, vargs);
-
     va_end(vargs);
 
     dialog = gtk_message_dialog_new(window,
@@ -223,8 +221,25 @@ virt_viewer_app_simple_message_dialog(VirtViewerApp *self,
                                     "%s",
                                     msg);
 
+    g_free(msg);
+
+    return dialog;
+}
+
+void
+virt_viewer_app_simple_message_dialog(VirtViewerApp *self,
+                                      const char *fmt, ...)
+{
+    GtkWidget *dialog;
+    char *msg;
+    va_list vargs;
+
+    va_start(vargs, fmt);
+    msg = g_strdup_vprintf(fmt, vargs);
+    va_end(vargs);
+
+    dialog = virt_viewer_app_make_message_dialog(self, msg);
     gtk_dialog_run(GTK_DIALOG(dialog));
-
     gtk_widget_destroy(dialog);
 
     g_free(msg);
@@ -1392,9 +1407,11 @@ virt_viewer_app_disconnected(VirtViewerSession *session G_GNUC_UNUSED,
         gtk_main_quit();
 
     if (connect_error) {
-        virt_viewer_app_simple_message_dialog(self,
-                                              _("Unable to connect to the graphic server %s"),
-                                              priv->pretty_address);
+        GtkWidget *dialog = virt_viewer_app_make_message_dialog(self,
+            _("Unable to connect to the graphic server %s"), priv->pretty_address);
+
+        gtk_dialog_run(GTK_DIALOG(dialog));
+        gtk_widget_destroy(dialog);
     }
     virt_viewer_app_set_usb_options_sensitive(self, FALSE);
     virt_viewer_app_deactivate(self, connect_error);