diff options
Diffstat (limited to 'domain.c')
-rw-r--r-- | domain.c | 25 |
1 files changed, 23 insertions, 2 deletions
@@ -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); |