X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Flib_slkrefr.c;h=167da9cd57a2638f38070548e5758bf59eff1317;hp=d0b4c547ce5f106f9ac6d9c7f17c0bb0f0d89300;hb=d49a800c7f54c8d9e77f745423c821a8535ada59;hpb=78e49873c69dc0494bb34c62f897f8b446584a33 diff --git a/ncurses/base/lib_slkrefr.c b/ncurses/base/lib_slkrefr.c index d0b4c547..167da9cd 100644 --- a/ncurses/base/lib_slkrefr.c +++ b/ncurses/base/lib_slkrefr.c @@ -38,9 +38,18 @@ * Write SLK window to the (virtual) screen. */ #include -#include /* num_labels, label_*, plab_norm */ -MODULE_ID("$Id: lib_slkrefr.c,v 1.18 2009/02/15 00:33:48 tom Exp $") +#ifndef CUR +#define CUR SP_TERMTYPE +#endif + +MODULE_ID("$Id: lib_slkrefr.c,v 1.25 2009/10/24 22:12:21 tom Exp $") + +#ifdef USE_TERM_DRIVER +#define NumLabels InfoOf(SP_PARM).numlabels +#else +#define NumLabels num_labels +#endif /* * Paint the info line for the PC style SLK emulation. @@ -66,31 +75,47 @@ slk_paint_info(WINDOW *win) * Write the soft labels to the soft-key window. */ static void -slk_intern_refresh(SLK * slk) +slk_intern_refresh(SCREEN *sp) { int i; - int fmt = SP->slk_format; + int fmt; + SLK *slk; + int numlab; + + if (sp == 0) + return; + + slk = sp->_slk; + fmt = sp->slk_format; + numlab = NumLabels; + + if (slk->hidden) + return; for (i = 0; i < slk->labcnt; i++) { if (slk->dirty || slk->ent[i].dirty) { if (slk->ent[i].visible) { - if (num_labels > 0 && SLK_STDFMT(fmt)) { + if (numlab > 0 && SLK_STDFMT(fmt)) { +#ifdef USE_TERM_DRIVER + CallDriver_2(sp, hwlabel, i + 1, slk->ent[i].form_text); +#else if (i < num_labels) { TPUTS_TRACE("plab_norm"); putp(TPARM_2(plab_norm, i + 1, slk->ent[i].form_text)); } +#endif } else { if (fmt == 4) slk_paint_info(slk->win); wmove(slk->win, SLK_LINES(fmt) - 1, slk->ent[i].ent_x); - if (SP->_slk) { - wattrset(slk->win, AttrOf(SP->_slk->attr)); + if (sp->_slk) { + (void) wattrset(slk->win, AttrOf(sp->_slk->attr)); } waddstr(slk->win, slk->ent[i].form_text); /* if we simulate SLK's, it's looking much more natural to use the current ATTRIBUTE also for the label window */ - wattrset(slk->win, WINDOW_ATTRS(stdscr)); + (void) wattrset(slk->win, WINDOW_ATTRS(StdScreen(sp))); } } slk->ent[i].dirty = FALSE; @@ -98,7 +123,10 @@ slk_intern_refresh(SLK * slk) } slk->dirty = FALSE; - if (num_labels > 0) { + if (numlab > 0) { +#ifdef USE_TERM_DRIVER + CallDriver_1(sp, hwlabelOnOff, slk->hidden ? FALSE : TRUE); +#else if (slk->hidden) { TPUTS_TRACE("label_off"); putp(label_off); @@ -106,6 +134,7 @@ slk_intern_refresh(SLK * slk) TPUTS_TRACE("label_on"); putp(label_on); } +#endif } } @@ -115,13 +144,13 @@ slk_intern_refresh(SLK * slk) NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_noutrefresh) (NCURSES_SP_DCL0) { - T((T_CALLED("slk_noutrefresh()"))); + T((T_CALLED("slk_noutrefresh(%p)"), (void *) SP_PARM)); - if (SP_PARM == NULL || SP_PARM->_slk == NULL) + if (SP_PARM == 0 || SP_PARM->_slk == 0) returnCode(ERR); if (SP_PARM->_slk->hidden) returnCode(OK); - slk_intern_refresh(SP_PARM->_slk); + slk_intern_refresh(SP_PARM); returnCode(wnoutrefresh(SP_PARM->_slk->win)); } @@ -140,13 +169,13 @@ slk_noutrefresh(void) NCURSES_EXPORT(int) NCURSES_SP_NAME(slk_refresh) (NCURSES_SP_DCL0) { - T((T_CALLED("slk_refresh()"))); + T((T_CALLED("slk_refresh(%p)"), (void *) SP_PARM)); - if (SP_PARM == NULL || SP_PARM->_slk == NULL) + if (SP_PARM == 0 || SP_PARM->_slk == 0) returnCode(ERR); if (SP_PARM->_slk->hidden) returnCode(OK); - slk_intern_refresh(SP_PARM->_slk); + slk_intern_refresh(SP_PARM); returnCode(wrefresh(SP_PARM->_slk->win)); }