X-Git-Url: https://ncurses.scripts.mit.edu/?a=blobdiff_plain;f=ncurses%2Fbase%2Flib_getch.c;h=e3e4075f742ed40950812362c61f47f10fe04cc4;hb=d49a800c7f54c8d9e77f745423c821a8535ada59;hp=cdc965fec5e0b4518e9a477ebd0094c86c51c2c0;hpb=bbb7fd37298f7d81386a4cf868417b9e084d7d90;p=ncurses.git diff --git a/ncurses/base/lib_getch.c b/ncurses/base/lib_getch.c index cdc965fe..e3e4075f 100644 --- a/ncurses/base/lib_getch.c +++ b/ncurses/base/lib_getch.c @@ -42,7 +42,7 @@ #include -MODULE_ID("$Id: lib_getch.c,v 1.107 2009/08/15 20:41:24 Clemens.Ladisch Exp $") +MODULE_ID("$Id: lib_getch.c,v 1.110 2010/02/06 18:39:16 tom Exp $") #include @@ -256,6 +256,14 @@ fifo_push(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl)) ch = KEY_MOUSE; n = 1; } else +#endif +#ifdef USE_TERM_DRIVER + if ((sp->_mouse_type == M_TERM_DRIVER) + && (sp->_drv_mouse_head < sp->_drv_mouse_tail)) { + sp->_mouse_event(sp); + ch = KEY_MOUSE; + n = 1; + } else #endif { /* Can block... */ #ifdef USE_TERM_DRIVER @@ -380,7 +388,7 @@ _nc_wgetch(WINDOW *win, long event_delay = -1; #endif - T((T_CALLED("_nc_wgetch(%p)"), win)); + T((T_CALLED("_nc_wgetch(%p)"), (void *) win)); *result = 0; @@ -536,6 +544,12 @@ _nc_wgetch(WINDOW *win, /* resizeterm can push KEY_RESIZE */ if (cooked_key_in_fifo()) { *result = fifo_pull(sp); + /* + * Get the ERR from queue -- it is from WINCH, + * so we should take it out, the "error" is handled. + */ + if (fifo_peek(sp) == -1) + fifo_pull(sp); returnCode(*result >= KEY_MIN ? KEY_CODE_YES : OK); } } @@ -612,7 +626,7 @@ wgetch(WINDOW *win) int code; unsigned long value; - T((T_CALLED("wgetch(%p)"), win)); + T((T_CALLED("wgetch(%p)"), (void *) win)); code = _nc_wgetch(win, &value, _nc_use_meta(win) @@ -686,7 +700,7 @@ kgetch(SCREEN *sp EVENTLIST_2nd(_nc_eventlist * evl)) break; } TR(TRACE_IEVENT, ("ptr=%p, ch=%d, value=%d", - ptr, ptr->ch, ptr->value)); + (void *) ptr, ptr->ch, ptr->value)); if (ptr->value != 0) { /* sequence terminated */ TR(TRACE_IEVENT, ("end of sequence"));