With "detach-all=on" for display, all VCs are detached from the beginning. This is useful when there are multiple displays assigned to a guest OS.
v2: Move "detach-all" option to under DisplayGTK as it's GTK specific (Thomas Huth) Signed-off-by: Dongwon Kim <dongwon....@intel.com> Signed-off-by: Khairul Anuar Romli <khairul.anuar.ro...@intel.com> --- qapi/ui.json | 5 ++++- ui/gtk.c | 7 +++++++ 2 files changed, 11 insertions(+), 1 deletion(-) diff --git a/qapi/ui.json b/qapi/ui.json index 1052ca9c38..e37af91683 100644 --- a/qapi/ui.json +++ b/qapi/ui.json @@ -1035,13 +1035,16 @@ # assuming the guest will resize the display to match # the window size then. Otherwise it defaults to "off". # Since 3.1 +# @detach-all: Detach all VirtualConsoles when starting Qemu (default: off). +# Since 6.0 # # Since: 2.12 # ## { 'struct' : 'DisplayGTK', 'data' : { '*grab-on-hover' : 'bool', - '*zoom-to-fit' : 'bool' } } + '*zoom-to-fit' : 'bool', + '*detach-all' : 'bool' } } ## # @DisplayEGLHeadless: diff --git a/ui/gtk.c b/ui/gtk.c index 98046f577b..48c1fff54f 100644 --- a/ui/gtk.c +++ b/ui/gtk.c @@ -2189,6 +2189,7 @@ static void gtk_display_init(DisplayState *ds, DisplayOptions *opts) GdkDisplay *window_display; GtkIconTheme *theme; char *dir; + int i; if (!gtkinit) { fprintf(stderr, "gtk initialization failed\n"); @@ -2268,6 +2269,12 @@ static void gtk_display_init(DisplayState *ds, DisplayOptions *opts) gtk_menu_item_activate(GTK_MENU_ITEM(s->grab_on_hover_item)); } gd_clipboard_init(s); + + if (opts->u.gtk.detach_all) { + for (i = 0; i < s->nb_vcs - 1; i++) { + gtk_menu_item_activate(GTK_MENU_ITEM(s->untabify_item)); + } + } } static void early_gtk_display_init(DisplayOptions *opts) -- 2.17.1