From 7d528dcd6ffbd4276d55c15a67397cb91e1245b8 Mon Sep 17 00:00:00 2001 From: nick black Date: Tue, 13 Oct 2020 22:35:50 -0400 Subject: [PATCH] ncmenu: add disabled flag to ncmenu_items, draw them grey #1057 --- src/lib/internal.h | 9 +++++---- src/lib/menu.c | 5 +++++ 2 files changed, 10 insertions(+), 4 deletions(-) diff --git a/src/lib/internal.h b/src/lib/internal.h index 0aae6cb06..4cd402121 100644 --- a/src/lib/internal.h +++ b/src/lib/internal.h @@ -158,6 +158,7 @@ typedef struct ncmenu_int_item { int shortcut_offset; // column offset with desc of shortcut EGC char* shortdesc; // description of shortcut, can be NULL int shortdesccols; // columns occupied by shortcut description + bool disabled; // disabled? } ncmenu_int_item; typedef struct ncmenu_int_section { @@ -251,10 +252,10 @@ typedef struct tinfo { char* smkx; // enter keypad transmit mode (keypad_xmit) char* rmkx; // leave keypad transmit mode (keypad_local) char* getm; // get mouse events - bool RGBflag; // ti-reported "RGB" flag for 24bpc truecolor - bool CCCflag; // ti-reported "CCC" flag for palette set capability - bool BCEflag; // ti-reported "BCE" flag for erases with background color - bool AMflag; // ti-reported "AM" flag for automatic movement to next line + bool RGBflag; // "RGB" flag for 24bpc truecolor + bool CCCflag; // "CCC" flag for palette set capability + bool BCEflag; // "BCE" flag for erases with background color + bool AMflag; // "AM" flag for automatic movement to next line char* smcup; // enter alternate mode char* rmcup; // restore primary mode } tinfo; diff --git a/src/lib/menu.c b/src/lib/menu.c index a1f4fa502..34f968ea7 100644 --- a/src/lib/menu.c +++ b/src/lib/menu.c @@ -22,6 +22,7 @@ static int dup_menu_item(ncmenu_int_item* dst, const struct ncmenu_item* src){ #define ALTMOD "Alt+" #define CTLMOD "Ctrl+" + dst->disabled = false; if((dst->desc = strdup(src->desc)) == NULL){ return -1; } @@ -376,6 +377,10 @@ int ncmenu_unroll(ncmenu* n, int sectionidx){ ++ypos; if(sec->items[i].desc){ n->ncp->channels = n->sectionchannels; + // FIXME the user ought be able to configure the disabled channel + if(sec->items[i].disabled){ + ncplane_set_fg_rgb(n->ncp, 0xdddddd); + } if(i == sec->itemselected){ ncplane_set_styles(n->ncp, NCSTYLE_REVERSE); }else{