diff options
author | Pavel Grunt <pgrunt@redhat.com> | 2015-03-18 17:49:38 +0100 |
---|---|---|
committer | Fabiano FidĂȘncio <fidencio@redhat.com> | 2015-03-23 19:32:02 +0100 |
commit | 1bcd8d0fe6df553f087d11b539a59e128a2a350b (patch) | |
tree | 6198cf3b2846ce059fd6a0e5a6434894e8d7a544 /src/remote-viewer.c | |
parent | aec2248cf86cacfc8950f48ccf0fc8fcaa261908 (diff) | |
download | virt-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.c | 23 |
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; } |