.\"***************************************************************************
.\" Copyright 2018-2019,2020 Thomas E. Dickey                                *
.\" Copyright 1998-2015,2017 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            *
.\" "Software"), to deal in the Software without restriction, including      *
.\" without limitation the rights to use, copy, modify, merge, publish,      *
.\" distribute, distribute with modifications, sublicense, and/or sell       *
.\" copies of the Software, and to permit persons to whom the Software is    *
.\" furnished to do so, subject to the following conditions:                 *
.\"                                                                          *
.\" The above copyright notice and this permission notice shall be included  *
.\" in all copies or substantial portions of the Software.                   *
.\"                                                                          *
.\" THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS  *
.\" OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF               *
.\" MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.   *
.\" IN NO EVENT SHALL THE ABOVE COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM,   *
.\" DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR    *
.\" OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR    *
.\" THE USE OR OTHER DEALINGS IN THE SOFTWARE.                               *
.\"                                                                          *
.\" Except as contained in this notice, the name(s) of the above copyright   *
.\" holders shall not be used in advertising or otherwise to promote the     *
.\" sale, use or other dealings in this Software without prior written       *
.\" authorization.                                                           *
.\"***************************************************************************
.\"
.\" Author: Thomas E. Dickey 1996-on
.\"
.\" $Id: resizeterm.3x,v 1.28 2020/10/17 23:55:41 tom Exp $
.TH resizeterm 3X ""
.de bP
.ie n  .IP \(bu 4
.el    .IP \(bu 2
..
.SH NAME
\fBis_term_resized\fR,
\fBresize_term\fR,
\fBresizeterm\fR \- change the curses terminal size
.SH SYNOPSIS
\fB#include <curses.h>\fR
.sp
\fBbool is_term_resized(int \fP\fIlines\fP\fB, int \fP\fIcolumns\fP\fB);\fR
.br
\fBint resize_term(int \fP\fIlines\fP\fB, int \fP\fIcolumns\fP\fB);\fR
.br
\fBint resizeterm(int \fP\fIlines\fP\fB, int \fP\fIcolumns\fP\fB);\fR
.SH DESCRIPTION
.PP
This is an extension to the curses library.
It provides callers with a hook into the \fBncurses\fR data to resize windows,
primarily for use by programs running in an X Window terminal (e.g., xterm).
.SS resizeterm
.PP
The function \fBresizeterm\fR resizes the standard and current windows
to the specified dimensions, and adjusts other bookkeeping data used by
the \fBncurses\fR library that record the window dimensions
such as the \fBLINES\fP and \fBCOLS\fP variables.
.SS resize_term
.PP
Most of the work is done by the inner function \fBresize_term\fR.
The outer function \fBresizeterm\fR adds bookkeeping
for the \fBSIGWINCH\fP handler,
as well as repainting the soft-key area (see \fBslk_touch\fP(3X)).
.PP
When resizing the windows,
\fBresize_term\fR blank-fills the areas that are extended.
The calling application should fill in these areas with appropriate data.
.PP
The \fBresize_term\fR function attempts to resize all windows.
However, due to the calling convention of pads,
it is not possible to resize these
without additional interaction with the application.
.PP
When resizing windows, \fBresize_term\fR recursively adjusts subwindows,
keeping them within the updated parent window's limits.
If a top-level window happens to extend to the screen's limits,
then on resizing the window, \fBresize_term\fR will keep the window
extending to the corresponding limit, regardless of whether the
screen has shrunk or grown.
.SS is_term_resized
.PP
A support function \fBis_term_resized\fR is provided so that applications
can check if the \fBresize_term\fR function would modify the window structures.
It returns \fBTRUE\fP if the windows would be modified,
and \fBFALSE\fP otherwise.
.SH RETURN VALUE
Except as noted, these functions return
the integer \fBERR\fR upon failure and \fBOK\fR on success.
They will fail if either of the dimensions are less than or equal to zero,
or if an error occurs while (re)allocating memory for the windows.
.SH NOTES
While these functions are intended to be used to support a signal handler
(i.e., for \fBSIGWINCH\fP), care should be taken to avoid invoking them in a
context where \fBmalloc\fR or \fBrealloc\fR may have been interrupted,
since it uses those functions.
.PP
If ncurses is configured to supply its own \fBSIGWINCH\fP handler,
.bP
on receipt of a \fBSIGWINCH\fP, the handler sets a flag
.bP
which is tested in \fBwgetch\fP(3X) and \fBdoupdate\fP,
.bP
in turn, calling the \fBresizeterm\fR function,
.bP
which \fBungetch\fP's a \fBKEY_RESIZE\fR which
will be read on the next call to \fBwgetch\fR.
.IP
The \fBKEY_RESIZE\fP alerts an application that the screen size has changed,
and that it should repaint special features such as pads that cannot
be done automatically.
.IP
Calling \fBresizeterm\fP or \fBresize_term\fP
directly from a signal handler is unsafe.
This indirect method is used to provide a safe way to resize the ncurses
data structures.
.PP
If the environment variables \fBLINES\fP or \fBCOLUMNS\fP are set,
this overrides the library's use of the window size obtained from
the operating system.
Thus, even if a \fBSIGWINCH\fP is received,
no screen size change may be recorded.
.SH PORTABILITY
.PP
It is possible to resize the screen with SVr4 curses,
by
.bP
exiting curses with \fBendwin\fP(3X) and
.bP
resuming using \fBrefresh\fP(3X).
.PP
Doing that clears the screen and is visually distracting.
.PP
This extension of ncurses was introduced in mid-1995.
It was adopted in NetBSD curses (2001) and PDCurses (2003).
.SH SEE ALSO
\fBcurs_getch\fR(3X),
\fBcurs_variables\fR(3X),
\fBwresize\fR(3X).
.SH AUTHOR
Thomas Dickey (from an equivalent function written in 1988 for BSD curses).
