aboutsummaryrefslogtreecommitdiffstats
path: root/domain.c
diff options
context:
space:
mode:
Diffstat (limited to 'domain.c')
-rw-r--r--domain.c25
1 files changed, 23 insertions, 2 deletions
diff --git a/domain.c b/domain.c
index 1bdb10e..a0da485 100644
--- a/domain.c
+++ b/domain.c
@@ -678,11 +678,19 @@ void domain_update_all(struct vconsole_window *win)
}
}
+static void domain_close_tab_btn(GtkWidget *btn, gpointer opaque)
+{
+ struct vconsole_domain *dom = opaque;
+ virDomainPtr d = virDomainLookupByUUIDString(dom->conn->ptr, dom->uuid);
+
+ domain_close_tab(dom, d);
+}
+
void domain_activate(struct vconsole_domain *dom)
{
virDomainPtr d = virDomainLookupByUUIDString(dom->conn->ptr, dom->uuid);
struct vconsole_window *win = dom->conn->win;
- GtkWidget *label, *fstatus;
+ GtkWidget *label, *lclose, *limg, *lhbox, *fstatus;
gint page;
if (dom->vte) {
@@ -710,8 +718,21 @@ void domain_activate(struct vconsole_domain *dom)
gtk_container_add(GTK_CONTAINER(fstatus), dom->status);
label = gtk_label_new(dom->name);
+ lclose = gtk_button_new();
+ g_signal_connect(lclose, "clicked",
+ G_CALLBACK(domain_close_tab_btn), dom);
+ limg = gtk_image_new_from_stock(GTK_STOCK_CLOSE, GTK_ICON_SIZE_MENU);
+ gtk_button_set_image(GTK_BUTTON(lclose), limg);
+ gtk_button_set_always_show_image(GTK_BUTTON(lclose), TRUE);
+ lhbox = gtk_hbox_new(FALSE, 1);
+ gtk_box_pack_start(GTK_BOX(lhbox), label, TRUE, TRUE, 0);
+ gtk_box_pack_start(GTK_BOX(lhbox), lclose, FALSE, TRUE, 0);
+ gtk_widget_show_all(lhbox);
+
page = gtk_notebook_insert_page(GTK_NOTEBOOK(win->notebook),
- dom->vbox, label, -1);
+ dom->vbox, lhbox, -1);
+ gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(win->notebook),
+ dom->vbox, TRUE);
gtk_widget_show_all(dom->vbox);
gtk_notebook_set_current_page(GTK_NOTEBOOK(win->notebook), page);
domain_configure_vte(dom);