summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorDaniel P. Berrange <berrange@redhat.com>2011-09-16 10:57:53 +0100
committerDaniel P. Berrange <berrange@redhat.com>2011-09-16 10:57:53 +0100
commit46cf6410c11dc8369dcf74283656f4bb0e14be8a (patch)
tree610de949bb1ee6efa0fcec00f470ec567b7e022b /src
parent8bd178c8a81073c70360ce6af6629ad6bf0e921a (diff)
Fix setting of window title with domain name
Diffstat (limited to 'src')
-rw-r--r--src/virt-viewer-app.c52
-rw-r--r--src/virt-viewer.c4
2 files changed, 53 insertions, 3 deletions
diff --git a/src/virt-viewer-app.c b/src/virt-viewer-app.c
index 594b3d8..6523cea 100644
--- a/src/virt-viewer-app.c
+++ b/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 *self,
}
}
+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(VirtViewerApp *self, gint nth, VirtViewerWindow *
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 *object, guint property_id,
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 *object, guint property_id,
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 (VirtViewerAppClass *klass)
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
diff --git a/src/virt-viewer.c b/src/virt-viewer.c
index 364f30b..f2f9ef6 100644
--- a/src/virt-viewer.c
+++ b/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(VirtViewerApp *app)
}
}
- 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) {