diff options
Diffstat (limited to 'domain.c')
-rw-r--r-- | domain.c | 44 |
1 files changed, 26 insertions, 18 deletions
@@ -22,6 +22,28 @@ static const char *domain_state_name(struct vconsole_domain *dom) /* ------------------------------------------------------------------ */ +static void domain_foreach(struct vconsole_window *win, + void (*func)(struct vconsole_domain *dom)) +{ + GtkTreeModel *model = GTK_TREE_MODEL(win->store); + GtkTreeIter host, guest; + struct vconsole_domain *dom; + int rc; + + rc = gtk_tree_model_get_iter_first(model, &host); + while (rc) { + rc = gtk_tree_model_iter_nth_child(model, &guest, &host, 0); + while (rc) { + gtk_tree_model_get(model, &guest, + DPTR_COL, &dom, + -1); + func(dom); + rc = gtk_tree_model_iter_next(model, &guest); + } + rc = gtk_tree_model_iter_next(model, &host); + } +} + static void domain_configure_vte(struct vconsole_domain *dom) { struct vconsole_window *win = dom->conn->win; @@ -31,6 +53,9 @@ static void domain_configure_vte(struct vconsole_domain *dom) GdkColor fg = {0,0,0,0}; GdkColor bg = {0,0,0,0}; + if (!dom->vte) + return; + gdk_color_parse(win->tty_fg, &fg); gdk_color_parse(win->tty_bg, &bg); @@ -42,24 +67,7 @@ static void domain_configure_vte(struct vconsole_domain *dom) void domain_configure_all_vtes(struct vconsole_window *win) { - GtkTreeModel *model = GTK_TREE_MODEL(win->store); - GtkTreeIter host, guest; - struct vconsole_domain *dom; - int rc; - - rc = gtk_tree_model_get_iter_first(model, &host); - while (rc) { - rc = gtk_tree_model_iter_nth_child(model, &guest, &host, 0); - while (rc) { - gtk_tree_model_get(model, &guest, - DPTR_COL, &dom, - -1); - if (dom->vte) - domain_configure_vte(dom); - rc = gtk_tree_model_iter_next(model, &guest); - } - rc = gtk_tree_model_iter_next(model, &host); - } + domain_foreach(win, domain_configure_vte); } static void domain_update_status(struct vconsole_domain *dom) |