[virt-tools-list] [virt-viewer 4/4] Hide all windows on disconnection

Marc-André Lureau mlureau at redhat.com
Tue Oct 29 14:09:21 UTC 2013



----- Original Message -----
> When starting remote-viewer without argument, we are showing a
> window where the user can enter connection details. We then
> go on to try and connect to the URI the user specified, and if
> the connection fails, we disconnect from the remote server, and then
> we show again the connection window so that the user can correct the
> URI if he entered it wrong.
> However, when this happens, the window for the previous connection
> will still be visible even if connection failed. To avoid this,
> this commit makes sure we hide all windows when we get a disconnection
> event.
> 
> Fixes https://bugzilla.redhat.com/show_bug.cgi?id=1024309
> ---
>  src/virt-viewer-app.c | 13 +++++++++++++
>  1 file changed, 13 insertions(+)
> 
> diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
> index 978c322..3f0debc 100644
> --- a/src/virt-viewer-app.c
> +++ b/src/virt-viewer-app.c
> @@ -365,6 +365,18 @@ virt_viewer_app_window_set_visible(VirtViewerApp *self,
>      return FALSE;
>  }
>  
> +static void
> +virt_viewer_app_hide_all_windows(VirtViewerApp *app)
> +{
> +    GList *it;
> +    virt_viewer_window_hide(app->priv->main_window);
> +    for (it = g_hash_table_get_values(app->priv->windows);
> +         it != NULL;
> +         it = it->next) {
> +        virt_viewer_window_hide(VIRT_VIEWER_WINDOW(it->data));
> +    }
> +}

>From glib doc:
The content of the list is owned by the hash table and should not be modified or freed. Use g_list_free() when done using the list.

Using g_hash_table_iter_* () is probably better.

> +
>  G_MODULE_EXPORT void
>  virt_viewer_app_about_close(GtkWidget *dialog,
>                              VirtViewerApp *self G_GNUC_UNUSED)
> @@ -1216,6 +1228,7 @@ virt_viewer_app_disconnected(VirtViewerSession *session
> G_GNUC_UNUSED,
>      VirtViewerAppPrivate *priv = self->priv;
>      gboolean connect_error = !priv->connected && !priv->cancelled;
>  
> +    virt_viewer_app_hide_all_windows(self);
>      if (priv->quitting)
>          gtk_main_quit();
>  
> --
> 1.8.3.1
> 
> _______________________________________________
> virt-tools-list mailing list
> virt-tools-list at redhat.com
> https://www.redhat.com/mailman/listinfo/virt-tools-list
> 




More information about the virt-tools-list mailing list