diff options
author | Christian Göttsche <cgzones@googlemail.com> | 2020-12-16 21:46:11 +0100 |
---|---|---|
committer | Christian Göttsche <cgzones@googlemail.com> | 2020-12-20 17:01:50 +0100 |
commit | e3862aa67e37ecef0eb8f82ba1f4a710ffac9c02 (patch) | |
tree | aa906dac3ffca307c01b9dc78ed75082aecf238c /ColorsPanel.c | |
parent | 7e7a53c415b82cceee6173922987b772b1d51c10 (diff) |
Rework drawing of FunctionBar
Draw the FunctionBar within Panel_draw instead of manually throughout
the code.
Add an optional PanelClass function drawFunctionBar, to allow specific
panels to override the default FunctionBar_draw call.
Rework the code on color change, to really change all colors (selection
markers and panel headers).
Closes: #402
Diffstat (limited to 'ColorsPanel.c')
-rw-r--r-- | ColorsPanel.c | 19 |
1 files changed, 8 insertions, 11 deletions
diff --git a/ColorsPanel.c b/ColorsPanel.c index 2fb1c92f..c076adc0 100644 --- a/ColorsPanel.c +++ b/ColorsPanel.c @@ -60,26 +60,21 @@ static HandlerResult ColorsPanel_eventHandler(Panel* super, int ch) { case KEY_MOUSE: case KEY_RECLICK: case ' ': + assert(mark >= 0); + assert(mark < LAST_COLORSCHEME); for (int i = 0; ColorSchemeNames[i] != NULL; i++) CheckItem_set((CheckItem*)Panel_get(super, i), false); CheckItem_set((CheckItem*)Panel_get(super, mark), true); this->settings->colorScheme = mark; - result = HANDLED; - } - - if (result == HANDLED) { this->settings->changed = true; - const Header* header = this->scr->header; + CRT_setColors(mark); clear(); - Panel* menu = (Panel*) Vector_get(this->scr->panels, 0); - Header_draw(header); - FunctionBar_draw(super->currentBar); - RichString_setAttr(&(super->header), CRT_colors[PANEL_HEADER_FOCUS]); - RichString_setAttr(&(menu->header), CRT_colors[PANEL_HEADER_UNFOCUS]); - ScreenManager_resize(this->scr, this->scr->x1, header->height, this->scr->x2, this->scr->y2); + + result = HANDLED | REDRAW; } + return result; } @@ -100,6 +95,8 @@ ColorsPanel* ColorsPanel_new(Settings* settings, ScreenManager* scr) { this->settings = settings; this->scr = scr; + assert(ARRAYSIZE(ColorSchemeNames) == LAST_COLORSCHEME + 1); + Panel_setHeader(super, "Colors"); for (int i = 0; ColorSchemeNames[i] != NULL; i++) { Panel_add(super, (Object*) CheckItem_newByVal(ColorSchemeNames[i], false)); |