From: dongwon.kim@intel.com
To: qemu-devel@nongnu.org
Subject: [RFC PATCH v2 1/2] ui/gtk: Factor out tab window creation into a separate
Date: Fri, 31 May 2024 11:58:03 -0700 [thread overview]
Message-ID: <20240531185804.119557-2-dongwon.kim@intel.com> (raw)
In-Reply-To: <20240531185804.119557-1-dongwon.kim@intel.com>
From: Vivek Kasireddy <vivek.kasireddy@intel.com>
Pull the code that creates a new window associated with a notebook
tab into a separate function. This new function can be useful not
just when user wants to detach a tab but also in the future when
a new window creation is needed in other scenarios.
Cc: Gerd Hoffmann <kraxel@redhat.com>
Cc: Marc-André Lureau <marcandre.lureau@redhat.com>
Cc: Daniel P. Berrangé <berrange@redhat.com>
Cc: Markus Armbruster <armbru@redhat.com>
Signed-off-by: Vivek Kasireddy <vivek.kasireddy@intel.com>
Signed-off-by: Dongwon Kim <dongwon.kim@intel.com>
---
ui/gtk.c | 65 +++++++++++++++++++++++++++++++-------------------------
1 file changed, 36 insertions(+), 29 deletions(-)
diff --git a/ui/gtk.c b/ui/gtk.c
index 93b13b7a30..3bc84090c8 100644
--- a/ui/gtk.c
+++ b/ui/gtk.c
@@ -1396,6 +1396,41 @@ static gboolean gd_win_grab(void *opaque)
return TRUE;
}
+static void gd_tab_window_create(VirtualConsole *vc)
+{
+ GtkDisplayState *s = vc->s;
+
+ gtk_widget_set_sensitive(vc->menu_item, false);
+ vc->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
+#if defined(CONFIG_OPENGL)
+ if (vc->gfx.esurface) {
+ eglDestroySurface(qemu_egl_display, vc->gfx.esurface);
+ vc->gfx.esurface = NULL;
+ }
+ if (vc->gfx.ectx) {
+ eglDestroyContext(qemu_egl_display, vc->gfx.ectx);
+ vc->gfx.ectx = NULL;
+ }
+#endif
+ gd_widget_reparent(s->notebook, vc->window, vc->tab_item);
+
+ g_signal_connect(vc->window, "delete-event",
+ G_CALLBACK(gd_tab_window_close), vc);
+ gtk_widget_show_all(vc->window);
+
+ if (qemu_console_is_graphic(vc->gfx.dcl.con)) {
+ GtkAccelGroup *ag = gtk_accel_group_new();
+ gtk_window_add_accel_group(GTK_WINDOW(vc->window), ag);
+
+ GClosure *cb = g_cclosure_new_swap(G_CALLBACK(gd_win_grab),
+ vc, NULL);
+ gtk_accel_group_connect(ag, GDK_KEY_g, HOTKEY_MODIFIERS, 0, cb);
+ }
+
+ gd_update_geometry_hints(vc);
+ gd_update_caption(s);
+}
+
static void gd_menu_untabify(GtkMenuItem *item, void *opaque)
{
GtkDisplayState *s = opaque;
@@ -1407,35 +1442,7 @@ static void gd_menu_untabify(GtkMenuItem *item, void *opaque)
FALSE);
}
if (!vc->window) {
- gtk_widget_set_sensitive(vc->menu_item, false);
- vc->window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
-#if defined(CONFIG_OPENGL)
- if (vc->gfx.esurface) {
- eglDestroySurface(qemu_egl_display, vc->gfx.esurface);
- vc->gfx.esurface = NULL;
- }
- if (vc->gfx.ectx) {
- eglDestroyContext(qemu_egl_display, vc->gfx.ectx);
- vc->gfx.ectx = NULL;
- }
-#endif
- gd_widget_reparent(s->notebook, vc->window, vc->tab_item);
-
- g_signal_connect(vc->window, "delete-event",
- G_CALLBACK(gd_tab_window_close), vc);
- gtk_widget_show_all(vc->window);
-
- if (qemu_console_is_graphic(vc->gfx.dcl.con)) {
- GtkAccelGroup *ag = gtk_accel_group_new();
- gtk_window_add_accel_group(GTK_WINDOW(vc->window), ag);
-
- GClosure *cb = g_cclosure_new_swap(G_CALLBACK(gd_win_grab),
- vc, NULL);
- gtk_accel_group_connect(ag, GDK_KEY_g, HOTKEY_MODIFIERS, 0, cb);
- }
-
- gd_update_geometry_hints(vc);
- gd_update_caption(s);
+ gd_tab_window_create(vc);
}
}
--
2.34.1
next prev parent reply other threads:[~2024-05-31 18:59 UTC|newest]
Thread overview: 13+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-05-31 18:58 [RFC PATCH v2 0/2] ui/gtk: Introduce new param - Connectors dongwon.kim
2024-05-31 18:58 ` dongwon.kim [this message]
2024-05-31 18:58 ` [PATCH RFC v2 2/2] ui/gtk: Add a new parameter to assign connectors/monitors dongwon.kim
2024-06-04 10:37 ` [RFC PATCH v2 0/2] ui/gtk: Introduce new param - Connectors Marc-André Lureau
2024-06-04 17:59 ` Kim, Dongwon
2024-06-05 7:26 ` Marc-André Lureau
2024-06-11 18:28 ` Kim, Dongwon
2024-06-12 6:42 ` Marc-André Lureau
2024-06-12 23:33 ` Kim, Dongwon
2024-06-13 6:56 ` Marc-André Lureau
2024-06-13 17:08 ` Kim, Dongwon
2024-06-14 8:41 ` Marc-André Lureau
2024-06-14 17:40 ` Kim, Dongwon
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240531185804.119557-2-dongwon.kim@intel.com \
--to=dongwon.kim@intel.com \
--cc=qemu-devel@nongnu.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).