void statusbar_item_remove(SBAR_ITEM_REC *item) { g_return_if_fail(item != NULL); statusbar_item_destroy(item); if (!quitting) statusbar_redraw_all(); }
void statusbar_destroy(STATUSBAR_REC *bar) { int top; g_return_if_fail(bar != NULL); bar->group->bars = g_slist_remove(bar->group->bars, bar); if (bar->parent_window != NULL) { bar->parent_window->statusbars = g_slist_remove(bar->parent_window->statusbars, bar); } signal_emit("statusbar destroyed", 1, bar); while (bar->items != NULL) statusbar_item_destroy(bar->items->data); g_free(bar->color); if (bar->config->type != STATUSBAR_TYPE_WINDOW || bar->parent_window != NULL) statusbars_recalc_ypos(bar); top = bar->config->placement == STATUSBAR_TOP; if (bar->config->type == STATUSBAR_TYPE_ROOT) { /* top/bottom of the screen */ mainwindows_reserve_lines(top ? -1 : 0, !top ? -1 : 0); } else if (bar->parent_window != NULL) { /* top/bottom of the window */ mainwindow_set_statusbar_lines(bar->parent_window, top ? -1 : 0, !top ? -1 : 0); } g_free(bar); }
void statusbar_recreate_items(STATUSBAR_REC *bar) { GSList *tmp; /* destroy */ while (bar->items != NULL) statusbar_item_destroy(bar->items->data); /* create */ for (tmp = bar->config->items; tmp != NULL; tmp = tmp->next) { SBAR_ITEM_CONFIG_REC *rec = tmp->data; statusbar_item_create(bar, rec); } statusbar_redraw(bar, TRUE); }
void statusbar_destroy(STATUSBAR_REC *bar) { g_return_if_fail(bar != NULL); if (bar->pos != STATUSBAR_POS_MIDDLE) mainwindows_reserve_lines(-1, bar->pos == STATUSBAR_POS_UP); if (bar->pos == STATUSBAR_POS_UP) sbars_up--; if (bar->pos == STATUSBAR_POS_DOWN) sbars_down--; statusbars = g_slist_remove(statusbars, bar); while (bar->items != NULL) statusbar_item_destroy(bar->items->data); if (bar->pos != STATUSBAR_POS_MIDDLE) statusbars_pack(bar->pos, bar->pos); g_free(bar); if (!quitting) statusbar_redraw_all(); }