diff options
| author | Marc-André Lureau <marcandre.lureau@gmail.com> | 2012-07-05 18:38:38 +0200 |
|---|---|---|
| committer | Marc-André Lureau <marcandre.lureau@gmail.com> | 2012-07-23 16:27:33 +0200 |
| commit | 8006302fefe58ba5fdbde3ff0c99736a34e211c5 (patch) | |
| tree | f820d940d59405879c2040721bfd1ee1f86b51dd /src | |
| parent | 57bf1e9090dbd6ca0f3486763ba9284a710883ef (diff) | |
Make the display submenu insensitive if display can't be selected
Diffstat (limited to 'src')
| -rw-r--r-- | src/virt-viewer-app.c | 18 |
1 files changed, 17 insertions, 1 deletions
diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c index 3d7ff68..a88264b 100644 --- a/src/virt-viewer-app.c +++ b/src/virt-viewer-app.c @@ -1635,15 +1635,31 @@ window_update_menu_displays_cb(gpointer key G_GNUC_UNUSED, while (tmp) { int *nth = tmp->data; VirtViewerWindow *vwin = VIRT_VIEWER_WINDOW(g_hash_table_lookup(self->priv->windows, nth)); + VirtViewerDisplay *display = virt_viewer_window_get_display(vwin); GtkWidget *item; - gboolean visible; + gboolean visible, sensitive = FALSE; gchar *label; label = g_strdup_printf(_("Display %d"), *nth + 1); item = gtk_check_menu_item_new_with_label(label); g_free(label); + visible = gtk_widget_get_visible(GTK_WIDGET(virt_viewer_window_get_window(vwin))); gtk_check_menu_item_set_active(GTK_CHECK_MENU_ITEM(item), visible); + + if (display) { + guint hint = virt_viewer_display_get_show_hint(display); + + if (hint & VIRT_VIEWER_DISPLAY_SHOW_HINT_READY) + sensitive = TRUE; + + if ((hint & VIRT_VIEWER_DISPLAY_SHOW_HINT_DISABLED) && + virt_viewer_display_get_selectable(display)) + sensitive = TRUE; + } + + gtk_widget_set_sensitive(item, sensitive); + g_signal_connect(G_OBJECT(item), "toggled", G_CALLBACK(menu_display_visible_toggled_cb), vwin); gtk_menu_shell_append(submenu, item); |
