aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorGerd Hoffmann <kraxel@redhat.com>2014-10-21 10:37:06 +0200
committerGerd Hoffmann <kraxel@redhat.com>2014-10-21 10:37:06 +0200
commitb7a0989f31d94cbaa51931b381baec653422a2f3 (patch)
tree99bcf27f050f09d7a2b4216c8cac6c4a957c1772
parent8c7eac0fbf18273ff4a8036ad412da25a4e11382 (diff)
downloadvconsole-b7a0989f31d94cbaa51931b381baec653422a2f3.tar.gz
factor out tab_label_with_close_button
-rw-r--r--domain.c38
1 files changed, 24 insertions, 14 deletions
diff --git a/domain.c b/domain.c
index a0da485..194bfd3 100644
--- a/domain.c
+++ b/domain.c
@@ -379,7 +379,6 @@ static void domain_vte_geometry_hints(struct vconsole_domain *dom, GtkWindow *wi
gtk_window_set_geometry_hints(win, dom->vte, &geo, mask);
}
-
static gboolean domain_window_close(GtkWidget *widget, GdkEvent *event,
void *opaque)
{
@@ -686,11 +685,31 @@ static void domain_close_tab_btn(GtkWidget *btn, gpointer opaque)
domain_close_tab(dom, d);
}
+static GtkWidget *tab_label_with_close_button(const char *labeltext,
+ GCallback callback,
+ gpointer opaque)
+{
+ GtkWidget *label, *lclose, *limg, *lhbox;
+
+ label = gtk_label_new(labeltext);
+ lclose = gtk_button_new();
+ g_signal_connect(lclose, "clicked", callback, opaque);
+ 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);
+
+ return lhbox;
+}
+
void domain_activate(struct vconsole_domain *dom)
{
virDomainPtr d = virDomainLookupByUUIDString(dom->conn->ptr, dom->uuid);
struct vconsole_window *win = dom->conn->win;
- GtkWidget *label, *lclose, *limg, *lhbox, *fstatus;
+ GtkWidget *lhbox, *fstatus;
gint page;
if (dom->vte) {
@@ -717,18 +736,9 @@ void domain_activate(struct vconsole_domain *dom)
gtk_box_pack_end(GTK_BOX(dom->vbox), fstatus, FALSE, TRUE, 0);
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);
-
+ lhbox = tab_label_with_close_button(dom->name,
+ G_CALLBACK(domain_close_tab_btn),
+ dom);
page = gtk_notebook_insert_page(GTK_NOTEBOOK(win->notebook),
dom->vbox, lhbox, -1);
gtk_notebook_set_tab_reorderable(GTK_NOTEBOOK(win->notebook),