summaryrefslogtreecommitdiffstats
path: root/src/remote-viewer.c
diff options
context:
space:
mode:
authorPavel Grunt <pgrunt@redhat.com>2015-03-18 17:49:38 +0100
committerFabiano FidĂȘncio <fidencio@redhat.com>2015-03-23 19:32:02 +0100
commit1bcd8d0fe6df553f087d11b539a59e128a2a350b (patch)
tree6198cf3b2846ce059fd6a0e5a6434894e8d7a544 /src/remote-viewer.c
parentaec2248cf86cacfc8950f48ccf0fc8fcaa261908 (diff)
downloadvirt-viewer-1bcd8d0fe6df553f087d11b539a59e128a2a350b.tar.gz
virt-viewer-1bcd8d0fe6df553f087d11b539a59e128a2a350b.tar.xz
virt-viewer-1bcd8d0fe6df553f087d11b539a59e128a2a350b.zip
Exit normally when canceling dialog
This applies for: libvirt authentication dialog (e.g. virt-viewer --attach guest) 'recent connection' dialog (e.g. remote-viewer) 'vm choose' dialog when connecting without specifying the vm name This is done by using a new GError VIRT_VIEWER_ERROR_CANCELLED.
Diffstat (limited to 'src/remote-viewer.c')
-rw-r--r--src/remote-viewer.c23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/remote-viewer.c b/src/remote-viewer.c
index 4541515..5b67f51 100644
--- a/src/remote-viewer.c
+++ b/src/remote-viewer.c
@@ -82,7 +82,7 @@ static OvirtVm * choose_vm(GtkWindow *main_window,
GError **error);
#endif
-static gboolean remote_viewer_start(VirtViewerApp *self);
+static gboolean remote_viewer_start(VirtViewerApp *self, GError **error);
#ifdef HAVE_SPICE_GTK
static gboolean remote_viewer_activate(VirtViewerApp *self, GError **error);
static void remote_viewer_window_added(VirtViewerApp *self, VirtViewerWindow *win);
@@ -177,7 +177,7 @@ remote_viewer_deactivated(VirtViewerApp *app, gboolean connect_error)
RemoteViewerPrivate *priv = self->priv;
if (connect_error && priv->open_recent_dialog) {
- if (virt_viewer_app_start(app)) {
+ if (virt_viewer_app_start(app, NULL)) {
return;
}
}
@@ -1205,7 +1205,7 @@ choose_vm(GtkWindow *main_window,
#endif
static gboolean
-remote_viewer_start(VirtViewerApp *app)
+remote_viewer_start(VirtViewerApp *app, GError **err)
{
g_return_val_if_fail(REMOTE_VIEWER_IS(app), FALSE);
@@ -1244,8 +1244,13 @@ remote_viewer_start(VirtViewerApp *app)
retry_dialog:
main_window = virt_viewer_app_get_main_window(app);
if (priv->open_recent_dialog) {
- if (connect_dialog(virt_viewer_window_get_window(main_window), &guri) != 0)
+ if (connect_dialog(virt_viewer_window_get_window(main_window), &guri) != 0) {
+ g_set_error_literal(&error,
+ VIRT_VIEWER_ERROR, VIRT_VIEWER_ERROR_CANCELLED,
+ _("No connection was chosen"));
+ g_propagate_error(err, error);
return FALSE;
+ }
g_object_set(app, "guri", guri, NULL);
} else
g_object_get(app, "guri", &guri, NULL);
@@ -1262,7 +1267,6 @@ retry_dialog:
if (error) {
virt_viewer_app_simple_message_dialog(app, _("Invalid file %s"), guri);
g_warning("%s", error->message);
- g_clear_error(&error);
goto cleanup;
}
g_object_get(G_OBJECT(vvfile), "type", &type, NULL);
@@ -1273,12 +1277,11 @@ retry_dialog:
#ifdef HAVE_OVIRT
if (g_strcmp0(type, "ovirt") == 0) {
if (!create_ovirt_session(app, guri, &error)) {
- if (error) {
+ if (error && !g_error_matches(error, VIRT_VIEWER_ERROR, VIRT_VIEWER_ERROR_CANCELLED)) {
virt_viewer_app_simple_message_dialog(app,
_("Couldn't open oVirt session: %s"),
error->message);
}
- g_clear_error(&error);
goto cleanup;
}
} else
@@ -1306,14 +1309,13 @@ retry_dialog:
_("Failed to initiate connection");
virt_viewer_app_simple_message_dialog(app, msg);
- g_clear_error(&error);
goto cleanup;
}
#ifdef HAVE_SPICE_GTK
}
#endif
- ret = VIRT_VIEWER_APP_CLASS(remote_viewer_parent_class)->start(app);
+ ret = VIRT_VIEWER_APP_CLASS(remote_viewer_parent_class)->start(app, &error);
cleanup:
g_clear_object(&file);
@@ -1324,8 +1326,11 @@ cleanup:
type = NULL;
if (!ret && priv->open_recent_dialog) {
+ g_clear_error(&error);
goto retry_dialog;
}
+ if (error != NULL)
+ g_propagate_error(err, error);
return ret;
}