diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2020-12-22 17:12:38 +0100 |
---|---|---|
committer | cgzones <cgzones@googlemail.com> | 2020-12-23 12:47:04 +0100 |
commit | 86d293125565a15bbd94683080dbc755c5d7edee (patch) | |
tree | b0a2f530cc5f633bebdf22124d8ce2d91ecf765b /Panel.c | |
parent | 0672be7db1ed50fceff0619e1411b510aa11f0f7 (diff) |
Restore highlighted header of current sorted process column
Diffstat (limited to 'Panel.c')
-rw-r--r-- | Panel.c | 22 |
1 files changed, 10 insertions, 12 deletions
@@ -76,13 +76,6 @@ void Panel_setSelectionColor(Panel* this, ColorElements colorId) { this->selectionColorId = colorId; } -RichString* Panel_getHeader(Panel* this) { - assert (this != NULL); - - this->needsRedraw = true; - return &(this->header); -} - inline void Panel_setHeader(Panel* this, const char* header) { RichString_writeWide(&(this->header), CRT_colors[PANEL_HEADER_FOCUS], header); this->needsRedraw = true; @@ -228,15 +221,20 @@ void Panel_draw(Panel* this, bool force_redraw, bool focus, bool highlightSelect int x = this->x; int h = this->h; + const int header_attr = focus + ? CRT_colors[PANEL_HEADER_FOCUS] + : CRT_colors[PANEL_HEADER_UNFOCUS]; + if (force_redraw) { + if (Panel_printHeaderFn(this)) + Panel_printHeader(this); + else + RichString_setAttr(&this->header, header_attr); + } int headerLen = RichString_sizeVal(this->header); if (headerLen > 0) { - int attr = focus - ? CRT_colors[PANEL_HEADER_FOCUS] - : CRT_colors[PANEL_HEADER_UNFOCUS]; - attrset(attr); + attrset(header_attr); mvhline(y, x, ' ', this->w); if (scrollH < headerLen) { - RichString_setAttr(&this->header, attr); RichString_printoffnVal(this->header, y, x, scrollH, MINIMUM(headerLen - scrollH, this->w)); } |