static void dirty_check(void) { if (!dirty || dummy) return; term_resize_dirty(); if (full_redraw) { full_redraw = FALSE; /* first clear the screen so curses will be forced to redraw the screen */ term_clear(); term_refresh(NULL); mainwindows_redraw(); statusbar_redraw(NULL, TRUE); } mainwindows_redraw_dirty(); statusbar_redraw_dirty(); term_refresh(NULL); dirty = FALSE; }
/* redraw activity, FIXME: if we didn't get enough size, this gets buggy. At least "Det:" isn't printed properly. also we should rearrange the act list so that the highest priority items comes first. */ static void item_act(SBAR_ITEM_REC *item, int get_size_only) { char *actlist; int max_size; if (get_size_only) { if (activity_list == NULL) item->min_size = item->max_size = 0; /* Skip activity calculation on regular trigger, only set dirty */ return; } actlist = get_activity_list(item->bar->parent_window, TRUE, TRUE); if (actlist == NULL) { return; } max_size = item->max_size; statusbar_item_default_handler(item, TRUE, NULL, actlist, FALSE); statusbar_item_default_handler(item, FALSE, NULL, actlist, FALSE); if (max_size != item->max_size) { /* Due to above hack of skipping the calculation, we need to manually trigger the redraw process now or we won't see the item */ item->bar->dirty = item->dirty = TRUE; statusbar_redraw(item->bar, TRUE); statusbar_redraw_dirty(); } g_free_not_null(actlist); }