X-Git-Url: https://ncurses.scripts.mit.edu/?p=ncurses.git;a=blobdiff_plain;f=ncurses%2Fbase%2Fresizeterm.c;h=03d52a448b0937fb7ab4900f8134400e995115f7;hp=3db35fadb1777cc0b76f9c524e5bd38ac71d1156;hb=cdbe3d3df7ca08989c4aaead5164309466e519eb;hpb=3a0d9d27e0cf115ff9dcc6163c251bccaa62bd7d;ds=inline diff --git a/ncurses/base/resizeterm.c b/ncurses/base/resizeterm.c index 3db35fad..03d52a44 100644 --- a/ncurses/base/resizeterm.c +++ b/ncurses/base/resizeterm.c @@ -1,5 +1,5 @@ /**************************************************************************** - * Copyright (c) 1998-2008,2009 Free Software Foundation, Inc. * + * Copyright (c) 1998-2009,2011 Free Software Foundation, Inc. * * * * Permission is hereby granted, free of charge, to any person obtaining a * * copy of this software and associated documentation files (the * @@ -45,7 +45,7 @@ #define CUR SP_TERMTYPE #endif -MODULE_ID("$Id: resizeterm.c,v 1.42 2009/10/24 20:38:43 tom Exp $") +MODULE_ID("$Id: resizeterm.c,v 1.45 2012/07/07 17:07:23 tom Exp $") /* * If we're trying to be reentrant, do not want any local statics. @@ -365,58 +365,71 @@ NCURSES_SP_NAME(resize_term) (NCURSES_SP_DCLx int ToLines, int ToCols) } #endif if (ToLines > screen_lines(SP_PARM)) { - increase_size(NCURSES_SP_ARGx - myLines = ToLines, myCols, was_stolen EXTRA_ARGS); + result = increase_size(NCURSES_SP_ARGx + myLines = ToLines, + myCols, + was_stolen EXTRA_ARGS); CurLines = myLines; CurCols = myCols; } - if (ToCols > screen_columns(SP_PARM)) { - increase_size(NCURSES_SP_ARGx - myLines, myCols = ToCols, was_stolen EXTRA_ARGS); + if ((result == OK) + && (ToCols > screen_columns(SP_PARM))) { + result = increase_size(NCURSES_SP_ARGx + myLines, + myCols = ToCols, + was_stolen EXTRA_ARGS); CurLines = myLines; CurCols = myCols; } - if (ToLines < myLines || - ToCols < myCols) { - decrease_size(NCURSES_SP_ARGx ToLines, ToCols, was_stolen EXTRA_ARGS); + if ((result == OK) + && (ToLines < myLines || + ToCols < myCols)) { + result = decrease_size(NCURSES_SP_ARGx + ToLines, + ToCols, + was_stolen EXTRA_ARGS); } - screen_lines(SP_PARM) = (NCURSES_SIZE_T) ToLines; - screen_columns(SP_PARM) = (NCURSES_SIZE_T) ToCols; + if (result == OK) { + screen_lines(SP_PARM) = (NCURSES_SIZE_T) ToLines; + screen_columns(SP_PARM) = (NCURSES_SIZE_T) ToCols; #ifdef USE_TERM_DRIVER - CallDriver_2(SP_PARM, setsize, ToLines, ToCols); + CallDriver_2(SP_PARM, setsize, ToLines, ToCols); #else - lines = (NCURSES_SIZE_T) ToLines; - columns = (NCURSES_SIZE_T) ToCols; + lines = (NCURSES_SIZE_T) ToLines; + columns = (NCURSES_SIZE_T) ToCols; #endif - SP_PARM->_lines_avail = (NCURSES_SIZE_T) (ToLines - was_stolen); + SP_PARM->_lines_avail = (NCURSES_SIZE_T) (ToLines - was_stolen); - if (SP_PARM->oldhash) { - FreeAndNull(SP_PARM->oldhash); - } - if (SP_PARM->newhash) { - FreeAndNull(SP_PARM->newhash); - } + if (SP_PARM->oldhash) { + FreeAndNull(SP_PARM->oldhash); + } + if (SP_PARM->newhash) { + FreeAndNull(SP_PARM->newhash); + } #ifdef TRACE - if (USE_TRACEF(TRACE_UPDATE)) { - SET_LINES(ToLines - was_stolen); - SET_COLS(ToCols); - show_window_sizes("after"); - _nc_unlock_global(tracef); - } + if (USE_TRACEF(TRACE_UPDATE)) { + SET_LINES(ToLines - was_stolen); + SET_COLS(ToCols); + show_window_sizes("after"); + _nc_unlock_global(tracef); + } #endif + } } - /* - * Always update LINES, to allow for call from lib_doupdate.c which - * needs to have the count adjusted by the stolen (ripped off) lines. - */ - SET_LINES(ToLines - was_stolen); - SET_COLS(ToCols); + if (result == OK) { + /* + * Always update LINES, to allow for call from lib_doupdate.c which + * needs to have the count adjusted by the stolen (ripped off) lines. + */ + SET_LINES(ToLines - was_stolen); + SET_COLS(ToCols); + } _nc_nonsp_unlock_global(curses); @@ -451,7 +464,7 @@ NCURSES_SP_NAME(resizeterm) (NCURSES_SP_DCLx int ToLines, int ToCols) T((T_CALLED("resizeterm(%p, %d,%d) old(%d,%d)"), (void *) SP_PARM, ToLines, ToCols, (SP_PARM == 0) ? -1 : screen_lines(SP_PARM), - screen_columns(SP_PARM))); + (SP_PARM == 0) ? -1 : screen_columns(SP_PARM))); if (SP_PARM != 0) { result = OK; @@ -471,7 +484,6 @@ NCURSES_SP_NAME(resizeterm) (NCURSES_SP_DCLx int ToLines, int ToCols) result = NCURSES_SP_NAME(resize_term) (NCURSES_SP_ARGx ToLines, ToCols); #if USE_SIGWINCH - safe_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */ clearok(CurScreen(SP_PARM), TRUE); /* screen contents are unknown */ /* ripped-off lines are a special case: if we did not lengthen @@ -501,6 +513,9 @@ NCURSES_SP_NAME(resizeterm) (NCURSES_SP_DCLx int ToLines, int ToCols) } #endif } +#if USE_SIGWINCH + safe_ungetch(SP_PARM, KEY_RESIZE); /* so application can know this */ +#endif } returnCode(result);