File virtview-git-window-title.patch of Package virt-viewer
Subject: Fix setting of window title with domain name
From: Daniel P. Berrange berrange@redhat.com Fri Sep 16 10:57:53 2011 +0100
Date: Fri Sep 16 10:57:53 2011 +0100:
Git: 46cf6410c11dc8369dcf74283656f4bb0e14be8a
Index: virt-viewer-0.4.1/src/virt-viewer-app.c
===================================================================
--- virt-viewer-0.4.1.orig/src/virt-viewer-app.c
+++ virt-viewer-0.4.1/src/virt-viewer-app.c
@@ -121,6 +121,7 @@ struct _VirtViewerAppPrivate {
char *pretty_address;
gchar *guest_name;
gboolean grabbed;
+ char *title;
};
@@ -135,6 +136,7 @@ enum {
PROP_SESSION,
PROP_GUEST_NAME,
PROP_FULLSCREEN,
+ PROP_TITLE,
};
void
@@ -386,6 +388,34 @@ virt_viewer_app_trace(VirtViewerApp *sel
}
}
+static void
+virt_viewer_app_set_window_subtitle(VirtViewerApp *app,
+ VirtViewerWindow *window,
+ int nth)
+{
+ gchar *subtitle = app->priv->title ? g_strdup_printf("%s (%d)", app->priv->title, nth + 1) : NULL;
+ g_object_set(window, "subtitle", subtitle, NULL);
+ g_free(subtitle);
+}
+
+static void
+set_title(gpointer key,
+ gpointer value,
+ gpointer user_data)
+{
+ gint *nth = key;
+ VirtViewerApp *app = user_data;
+ VirtViewerWindow *window = value;
+ virt_viewer_app_set_window_subtitle(app, window, *nth);
+}
+
+static void
+virt_viewer_app_set_all_window_subtitles(VirtViewerApp *app)
+{
+ virt_viewer_app_set_window_subtitle(app, app->priv->main_window, 0);
+ g_hash_table_foreach(app->priv->windows, set_title, app);
+}
+
static void update_title(gpointer key G_GNUC_UNUSED,
gpointer value,
gpointer user_data G_GNUC_UNUSED)
@@ -426,6 +456,7 @@ virt_viewer_app_set_nth_window(VirtViewe
key = g_malloc(sizeof(gint));
*key = nth;
g_hash_table_insert(self->priv->windows, key, win);
+ virt_viewer_app_set_window_subtitle(self, win, nth);
}
static void
@@ -949,6 +980,10 @@ virt_viewer_app_get_property (GObject *o
g_value_set_boolean(value, priv->fullscreen);
break;
+ case PROP_TITLE:
+ g_value_set_string(value, priv->title);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -981,6 +1016,12 @@ virt_viewer_app_set_property (GObject *o
virt_viewer_app_set_fullscreen(self, g_value_get_boolean(value));
break;
+ case PROP_TITLE:
+ g_free(priv->title);
+ priv->title = g_value_dup_string(value);
+ virt_viewer_app_set_all_window_subtitles(self);
+ break;
+
default:
G_OBJECT_WARN_INVALID_PROPERTY_ID (object, property_id, pspec);
}
@@ -1006,6 +1047,7 @@ virt_viewer_app_dispose (GObject *object
g_object_unref(priv->container);
priv->container = NULL;
}
+ g_free(priv->title);
virt_viewer_app_free_connect_info(self);
@@ -1134,6 +1176,16 @@ virt_viewer_app_class_init (VirtViewerAp
G_PARAM_READABLE |
G_PARAM_WRITABLE |
G_PARAM_STATIC_STRINGS));
+ g_object_class_install_property(object_class,
+ PROP_TITLE,
+ g_param_spec_string("title",
+ "Title",
+ "Title",
+ "",
+ G_PARAM_READABLE |
+ G_PARAM_WRITABLE |
+ G_PARAM_STATIC_STRINGS));
+
}
void
Index: virt-viewer-0.4.1/src/virt-viewer.c
===================================================================
--- virt-viewer-0.4.1.orig/src/virt-viewer.c
+++ virt-viewer-0.4.1/src/virt-viewer.c
@@ -49,7 +49,6 @@ struct _VirtViewerPrivate {
char *uri;
virConnectPtr conn;
char *domkey;
- char *domtitle;
gboolean withEvents;
gboolean waitvm;
gboolean reconnect;
@@ -414,8 +413,7 @@ virt_viewer_initial_connect(VirtViewerAp
}
}
- free(priv->domtitle);
- priv->domtitle = g_strdup(virDomainGetName(dom));
+ g_object_set(app, "title", virDomainGetName(dom), NULL);
virt_viewer_app_show_status(app, _("Checking guest domain status"));
if (virDomainGetInfo(dom, &info) < 0) {