X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Flib_slk.c;h=39343d1546c4bc6dc839c53c712a1654002f6f58;hp=127c2990560dd7f2789672c28ce1ba0ccd6a832f;hb=c04d54322f7835ed42e597967d8fa5471025fcac;hpb=5b7f4de105080e2a715b0564ede4bb7eb6767659;ds=sidebyside diff --git a/ncurses/base/lib_slk.c b/ncurses/base/lib_slk.c index 127c2990..39343d15 100644 --- a/ncurses/base/lib_slk.c +++ b/ncurses/base/lib_slk.c @@ -47,7 +47,19 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: lib_slk.c,v 1.39 2009/07/04 18:37:57 tom Exp $") +MODULE_ID("$Id: lib_slk.c,v 1.44 2009/10/31 19:51:40 tom Exp $") + +#ifdef USE_TERM_DRIVER +#define NumLabels InfoOf(SP_PARM).numlabels +#define NoColorVideo InfoOf(SP_PARM).nocolorvideo +#define LabelWidth InfoOf(SP_PARM).labelwidth +#define LabelHeight InfoOf(SP_PARM).labelheight +#else +#define NumLabels num_labels +#define NoColorVideo no_color_video +#define LabelWidth label_width +#define LabelHeight label_height +#endif /* * Free any memory related to soft labels, return an error. @@ -67,11 +79,12 @@ NCURSES_EXPORT(int) _nc_format_slks(NCURSES_SP_DCLx int cols) { int gap, i, x; - unsigned max_length = SP_PARM->_slk->maxlen; + unsigned max_length; - if (!SP_PARM) + if (!SP_PARM || !SP_PARM->_slk) return ERR; + max_length = SP_PARM->_slk->maxlen; if (SP_PARM->slk_format >= 3) { /* PC style */ gap = (cols - 3 * (3 + 4 * max_length)) / 2; @@ -106,8 +119,9 @@ _nc_format_slks(NCURSES_SP_DCLx int cols) x += max_length; x += (i == 2 || i == 4) ? gap : 1; } - } else - returnCode(slk_failed(NCURSES_SP_ARG)); + } else { + return slk_failed(NCURSES_SP_ARG); + } } } SP_PARM->_slk->dirty = TRUE; @@ -140,15 +154,13 @@ _nc_slk_initialize(WINDOW *stwin, int cols) term = TerminalOf(SP_PARM); assert(term); - numlab = InfoOf(SP_PARM).numlabels; + numlab = NumLabels; if (SP_PARM->_slk) { /* we did this already, so simply return */ returnCode(OK); } else if ((SP_PARM->_slk = typeCalloc(SLK, 1)) == 0) returnCode(ERR); - SP_PARM->_slk->hidden = TRUE; - SP_PARM->_slk->ent = NULL; if (!SP_PARM->slk_format) SP_PARM->slk_format = _nc_globals.slk_format; @@ -157,7 +169,7 @@ _nc_slk_initialize(WINDOW *stwin, int cols) * with colors. In that case, we're still guaranteed that "reverse" would * work. */ - if ((InfoOf(SP_PARM).nocolorvideo & 1) == 0) + if ((NoColorVideo & 1) == 0) SetAttr(SP_PARM->_slk->attr, A_STANDOUT); else SetAttr(SP_PARM->_slk->attr, A_REVERSE); @@ -166,7 +178,7 @@ _nc_slk_initialize(WINDOW *stwin, int cols) ? numlab : MAX_SKEY(SP_PARM->slk_format)); SP_PARM->_slk->maxlen = ((numlab > 0) - ? InfoOf(SP_PARM).labelwidth * InfoOf(SP_PARM).labelheight + ? LabelWidth * LabelHeight : MAX_SKEY_LEN(SP_PARM->slk_format)); SP_PARM->_slk->labcnt = ((SP_PARM->_slk->maxlab < MAX_SKEY(SP_PARM->slk_format)) ? MAX_SKEY(SP_PARM->slk_format) @@ -217,7 +229,7 @@ _nc_slk_initialize(WINDOW *stwin, int cols) NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_restore) (NCURSES_SP_DCL0) { - T((T_CALLED("slk_restore(%p)"), SP_PARM)); + T((T_CALLED("slk_restore(%p)"), (void *) SP_PARM)); if (0 == SP_PARM) returnCode(ERR);