]> ncurses.scripts.mit.edu Git - ncurses.git/blobdiff - doc/html/man/curs_window.3x.html
ncurses 6.5 - patch 20240519
[ncurses.git] / doc / html / man / curs_window.3x.html
index 786ca4f93fe95c8e32df62d7a9471de7ce52fc8b..ea99659ecf629fbed9dd7690d1af01f0ed9ba12d 100644 (file)
@@ -1,6 +1,6 @@
-<!-- 
+<!--
   ****************************************************************************
   ****************************************************************************
-  * Copyright 2020 Thomas E. Dickey                                          *
+  * Copyright 2020-2023,2024 Thomas E. Dickey                                *
   * Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * Copyright 1998-2015,2016 Free Software Foundation, Inc.                  *
   *                                                                          *
   * Permission is hereby granted, free of charge, to any person obtaining a  *
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
   * sale, use or other dealings in this Software without prior written       *
   * authorization.                                                           *
   ****************************************************************************
-  * @Id: curs_window.3x,v 1.21 2020/02/02 23:34:34 tom Exp @
+  * @Id: curs_window.3x,v 1.48 2024/04/20 21:20:07 tom Exp @
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
 -->
 <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN">
 <HTML>
 <HEAD>
 <meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
 <meta name="generator" content="Manpage converted by man2html - see https://invisible-island.net/scripts/readme.html#others_scripts">
-<TITLE>curs_window 3x</TITLE>
+<TITLE>curs_window 3x 2024-04-20 ncurses 6.5 Library calls</TITLE>
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
 <link rel="author" href="mailto:bug-ncurses@gnu.org">
-<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
+
 </HEAD>
 <BODY>
 </HEAD>
 <BODY>
-<H1 class="no-header">curs_window 3x</H1>
+<H1 class="no-header">curs_window 3x 2024-04-20 ncurses 6.5 Library calls</H1>
 <PRE>
 <PRE>
-<STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>                                                <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
+<STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>                  Library calls                 <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
 
 
 
 
 </PRE><H2><a name="h2-NAME">NAME</a></H2><PRE>
-       <STRONG>newwin</STRONG>, <STRONG>delwin</STRONG>, <STRONG>mvwin</STRONG>, <STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>, <STRONG>dupwin</STRONG>, <STRONG>wsyncup</STRONG>,
-       <STRONG>syncok</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>wsyncdown</STRONG> - create <STRONG>curses</STRONG> windows
+       <STRONG>newwin</STRONG>,  <STRONG>delwin</STRONG>,  <STRONG>mvwin</STRONG>,  <STRONG>subwin</STRONG>,  <STRONG>derwin</STRONG>,  <STRONG>mvderwin</STRONG>,  <STRONG>dupwin</STRONG>, <STRONG>wsyncup</STRONG>,
+       <STRONG>syncok</STRONG>, <STRONG>wcursyncup</STRONG>, <STRONG>wsyncdown</STRONG> - create and manipulate <EM>curses</EM> windows
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-SYNOPSIS">SYNOPSIS</a></H2><PRE>
 
        A new full-screen window is created by calling <STRONG>newwin(0,0,0,0)</STRONG>.
 
 
        A new full-screen window is created by calling <STRONG>newwin(0,0,0,0)</STRONG>.
 
+       Regardless of the function  used  for  creating  a  new  window  (e.g.,
+       <STRONG>newwin</STRONG>, <STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>newpad</STRONG>), rather than a duplicate (with <STRONG>dupwin</STRONG>),
+       all of the window modes are initialized to the default  values.   These
+       functions set window modes after a window is created:
+
+              <STRONG>idcok</STRONG>  <STRONG>idlok</STRONG>  <STRONG>immedok</STRONG>  <STRONG>keypad</STRONG> <STRONG>leaveok</STRONG> <STRONG>nodelay</STRONG> <STRONG>scrollok</STRONG> <STRONG>setscrreg</STRONG>
+              <STRONG>syncok</STRONG> <STRONG>wbkgdset</STRONG> <STRONG>wbkgrndset</STRONG> and <STRONG>wtimeout</STRONG>.
+
 
 </PRE><H3><a name="h3-delwin">delwin</a></H3><PRE>
        Calling <STRONG>delwin</STRONG> deletes the named window, freeing all memory  associated
 
 </PRE><H3><a name="h3-delwin">delwin</a></H3><PRE>
        Calling <STRONG>delwin</STRONG> deletes the named window, freeing all memory  associated
-       with  it  (it does not actually erase the window's screen image).  Sub-
-       windows must be deleted before the main window can be deleted.
+       with  it  (it  does  not  actually  erase  the  window's screen image).
+       Subwindows must be deleted before the main window can be deleted.
 
 
 </PRE><H3><a name="h3-mvwin">mvwin</a></H3><PRE>
 
 
 </PRE><H3><a name="h3-mvwin">mvwin</a></H3><PRE>
        Calling  <STRONG>subwin</STRONG>  creates and returns a pointer to a new window with the
        given number of lines, <EM>nlines</EM>, and columns, <EM>ncols</EM>.  The  window  is  at
        position (<EM>begin</EM>_<EM>y</EM>, <EM>begin</EM>_<EM>x</EM>) on the screen.  The subwindow shares memory
        Calling  <STRONG>subwin</STRONG>  creates and returns a pointer to a new window with the
        given number of lines, <EM>nlines</EM>, and columns, <EM>ncols</EM>.  The  window  is  at
        position (<EM>begin</EM>_<EM>y</EM>, <EM>begin</EM>_<EM>x</EM>) on the screen.  The subwindow shares memory
-       with the window <EM>orig</EM>, so that changes made to one  window  will  affect
-       both  windows.  When using this routine, it is necessary to call <STRONG>touch-</STRONG>
-       <STRONG>win</STRONG> or <STRONG>touchline</STRONG> on <EM>orig</EM> before calling <STRONG>wrefresh</STRONG> on the subwindow.
+       with the window <EM>orig</EM>, its <EM>ancestor</EM>, so that changes made to one  window
+       will  affect both windows.  When using this routine, it is necessary to
+       call <STRONG>touchwin</STRONG> or <STRONG>touchline</STRONG> on  <EM>orig</EM>  before  calling  <STRONG>wrefresh</STRONG>  on  the
+       subwindow.
 
 
 </PRE><H3><a name="h3-derwin">derwin</a></H3><PRE>
 
 
 </PRE><H3><a name="h3-derwin">derwin</a></H3><PRE>
-       Calling <STRONG>derwin</STRONG> is the same as calling <STRONG>subwin,</STRONG> except that  <EM>begin</EM>_<EM>y</EM>  and
-       <EM>begin</EM>_<EM>x</EM>  are  relative to the origin of the window <EM>orig</EM> rather than the
-       screen.  There is no difference between the subwindows and the  derived
+       Calling  <STRONG>derwin</STRONG>  is the same as calling <STRONG>subwin,</STRONG> except that <EM>begin</EM>_<EM>y</EM> and
+       <EM>begin</EM>_<EM>x</EM> are relative to the origin of the window <EM>orig</EM> rather  than  the
+       screen.   There is no difference between the subwindows and the derived
        windows.
 
        windows.
 
-       Calling  <STRONG>mvderwin</STRONG> moves a derived window (or subwindow) inside its par-
-       ent window.  The screen-relative  parameters  of  the  window  are  not
+
+</PRE><H3><a name="h3-mvderwin">mvderwin</a></H3><PRE>
+       Calling <STRONG>mvderwin</STRONG> moves a  derived  window  (or  subwindow)  inside  its
+       parent  window.   The  screen-relative parameters of the window are not
        changed.  This routine is used to display different parts of the parent
        window at the same physical position on the screen.
 
        changed.  This routine is used to display different parts of the parent
        window at the same physical position on the screen.
 
 
 
 </PRE><H3><a name="h3-wsyncup">wsyncup</a></H3><PRE>
 
 
 </PRE><H3><a name="h3-wsyncup">wsyncup</a></H3><PRE>
-       Calling <STRONG>wsyncup</STRONG> touches all locations in  ancestors  of  <EM>win</EM>  that  are
-       changed  in  <EM>win</EM>.   If  <STRONG>syncok</STRONG> is called with second argument <STRONG>TRUE</STRONG> then
-       <STRONG>wsyncup</STRONG> is called automatically whenever there is a change in the  win-
-       dow.
+       Calling  <STRONG>wsyncup</STRONG>  touches  all  locations  in ancestors of <EM>win</EM> that are
+       changed in <EM>win</EM>.  If <STRONG>syncok</STRONG> is called with  second  argument  <STRONG>TRUE</STRONG>  then
+       <STRONG>wsyncup</STRONG>  is  called  automatically  whenever  there  is a change in the
+       window.
 
 
 </PRE><H3><a name="h3-wsyncdown">wsyncdown</a></H3><PRE>
 
 
 </PRE><H3><a name="h3-wsyncdown">wsyncdown</a></H3><PRE>
-       The  <STRONG>wsyncdown</STRONG>  routine  touches  each  location  in  <EM>win</EM> that has been
-       touched in any of its ancestor windows.  This routine is called by <STRONG>wre-</STRONG>
-       <STRONG>fresh</STRONG>, so it should almost never be necessary to call it manually.
+       The <STRONG>wsyncdown</STRONG> routine touches  each  location  in  <EM>win</EM>  that  has  been
+       touched  in  any  of  its  ancestor windows.  This routine is called by
+       <STRONG>wrefresh</STRONG>, so it should almost never be necessary to call it manually.
 
 
 </PRE><H3><a name="h3-wcursyncup">wcursyncup</a></H3><PRE>
 
 
 </PRE><H3><a name="h3-wcursyncup">wcursyncup</a></H3><PRE>
-       The  routine  <STRONG>wcursyncup</STRONG> updates the current cursor position of all the
-       ancestors of the window to reflect the current cursor position  of  the
+       The routine <STRONG>wcursyncup</STRONG> updates the current cursor position of  all  the
+       ancestors  of  the window to reflect the current cursor position of the
        window.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines that return an integer return the integer <STRONG>ERR</STRONG> upon failure and
        window.
 
 
 </PRE><H2><a name="h2-RETURN-VALUE">RETURN VALUE</a></H2><PRE>
        Routines that return an integer return the integer <STRONG>ERR</STRONG> upon failure and
-       <STRONG>OK</STRONG> (SVr4 only specifies "an integer value other than  <STRONG>ERR</STRONG>")  upon  suc-
-       cessful completion.
+       <STRONG>OK</STRONG>  (SVr4  only  specifies  "an  integer  value  other  than <STRONG>ERR</STRONG>") upon
+       successful completion.
 
        Routines that return pointers return <STRONG>NULL</STRONG> on error.
 
        X/Open defines no error conditions.  In this implementation
 
        <STRONG>delwin</STRONG>
 
        Routines that return pointers return <STRONG>NULL</STRONG> on error.
 
        X/Open defines no error conditions.  In this implementation
 
        <STRONG>delwin</STRONG>
-            returns  an  error if the window pointer is null, or if the window
+            returns an error if the window pointer is null, or if  the  window
             is the parent of another window.
 
        <STRONG>derwin</STRONG>
             is the parent of another window.
 
        <STRONG>derwin</STRONG>
-            returns an error if the parent window pointer is null, or  if  any
-            of  its  ordinates  or dimensions is negative, or if the resulting
+            returns  an  error if the parent window pointer is null, or if any
+            of its ordinates or dimensions is negative, or  if  the  resulting
             window does not fit inside the parent window.
 
        <STRONG>dupwin</STRONG>
             returns an error if the window pointer is null.
 
             window does not fit inside the parent window.
 
        <STRONG>dupwin</STRONG>
             returns an error if the window pointer is null.
 
-            This implementation also maintains a list of windows,  and  checks
-            that  the pointer passed to <STRONG>delwin</STRONG> is one that it created, return-
-            ing an error if it was not..
+            This  implementation  also maintains a list of windows, and checks
+            that the  pointer  passed  to  <STRONG>delwin</STRONG>  is  one  that  it  created,
+            returning an error if it was not..
 
        <STRONG>mvderwin</STRONG>
             returns an error if the window pointer is null, or if some part of
             the window would be placed off-screen.
 
        <STRONG>mvwin</STRONG>
 
        <STRONG>mvderwin</STRONG>
             returns an error if the window pointer is null, or if some part of
             the window would be placed off-screen.
 
        <STRONG>mvwin</STRONG>
-            returns  an  error if the window pointer is null, or if the window
-            is really a pad, or if some part of the  window  would  be  placed
+            returns an error if the window pointer is null, or if  the  window
+            is  really  a  pad,  or if some part of the window would be placed
             off-screen.
 
        <STRONG>newwin</STRONG>
             off-screen.
 
        <STRONG>newwin</STRONG>
-            will  fail if either of its beginning ordinates is negative, or if
+            will fail if either of its beginning ordinates is negative, or  if
             either the number of lines or columns is negative.
 
        <STRONG>syncok</STRONG>
             returns an error if the window pointer is null.
 
        <STRONG>subwin</STRONG>
             either the number of lines or columns is negative.
 
        <STRONG>syncok</STRONG>
             returns an error if the window pointer is null.
 
        <STRONG>subwin</STRONG>
-            returns an error if the parent window pointer is null, or  if  any
-            of  its  ordinates  or dimensions is negative, or if the resulting
+            returns  an  error if the parent window pointer is null, or if any
+            of its ordinates or dimensions is negative, or  if  the  resulting
             window does not fit inside the parent window.
 
             window does not fit inside the parent window.
 
-       The functions which return a window pointer may also fail if  there  is
-       insufficient  memory  for  its data structures.  Any of these functions
+       The  functions  which return a window pointer may also fail if there is
+       insufficient memory for its data structures.  Any  of  these  functions
        will fail if the screen has not been initialized, i.e., with <STRONG>initscr</STRONG> or
        <STRONG>newterm</STRONG>.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
        will fail if the screen has not been initialized, i.e., with <STRONG>initscr</STRONG> or
        <STRONG>newterm</STRONG>.
 
 
 </PRE><H2><a name="h2-NOTES">NOTES</a></H2><PRE>
-       If  many small changes are made to the window, the <STRONG>wsyncup</STRONG> option could
+       If many small changes are made to the window, the <STRONG>wsyncup</STRONG> option  could
        degrade performance.
 
        Note that <STRONG>syncok</STRONG> may be a macro.
 
 
        degrade performance.
 
        Note that <STRONG>syncok</STRONG> may be a macro.
 
 
-</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
-       The subwindow functions (<STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>, <STRONG>wsyncup</STRONG>,  <STRONG>wsyncdown</STRONG>,
-       <STRONG>wcursyncup</STRONG>,  <STRONG>syncok</STRONG>)  are flaky, incompletely implemented, and not well
-       tested.
+</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
+       X/Open Curses, Issue 4 describes these functions.
 
 
-       The System V curses documentation is very unclear  about  what  <STRONG>wsyncup</STRONG>
-       and  <STRONG>wsyncdown</STRONG>  actually do.  It seems to imply that they are only sup-
-       posed to touch exactly  those  lines  that  are  affected  by  ancestor
-       changes.  The language here, and the behavior of the <STRONG>curses</STRONG> implementa-
-       tion, is patterned on the XPG4 curses standard.  The weaker  XPG4  spec
-       may result in slower updates.
+       X/Open Curses states regarding <STRONG>delwin</STRONG>:
 
 
+       <STRONG>o</STRONG>   It must delete subwindows before deleting their parent.
 
 
-</PRE><H2><a name="h2-PORTABILITY">PORTABILITY</a></H2><PRE>
-       The XSI Curses standard, Issue 4 describes these functions.
+       <STRONG>o</STRONG>   If  <STRONG>delwin</STRONG>  is asked to delete a parent window, it can only succeed
+           if the curses library keeps a list of the subwindows.  SVr4  curses
+           kept  a  count  of the number of subwindows rather than a list.  It
+           simply returned <STRONG>ERR</STRONG> when asked  to  delete  a  subwindow.   Solaris
+           X/Open  curses  does  not  even  make that check, and will delete a
+           parent window which still has subwindows.
+
+       <STRONG>o</STRONG>   Since release 4.0 (1996), <EM>ncurses</EM> maintains a list of  windows  for
+           each  screen,  to  ensure  that  a  window has no subwindows before
+           allowing deletion.
+
+       <STRONG>o</STRONG>   NetBSD copied this feature of <EM>ncurses</EM> in 2003.
+           PDCurses follows the scheme used in Solaris X/Open curses.
+
+
+</PRE><H2><a name="h2-BUGS">BUGS</a></H2><PRE>
+       The subwindow functions <STRONG>subwin</STRONG>, <STRONG>derwin</STRONG>, <STRONG>mvderwin</STRONG>,  <STRONG>wsyncup</STRONG>,  <STRONG>wsyncdown</STRONG>,
+       <STRONG>wcursyncup</STRONG>,  and  <STRONG>syncok</STRONG>  are  flaky, incompletely implemented, and not
+       well tested.
+
+       System V's <EM>curses</EM> documentation  is  unclear  about  what  <STRONG>wsyncup</STRONG>  and
+       <STRONG>wsyncdown</STRONG>  actually  do.   It  seems to imply that they are supposed to
+       touch only those lines that are  affected  by  changes  to  a  window's
+       ancestors.  The language here, and behavior of <EM>ncurses</EM>, is patterned on
+       the X/Open Curses standard; this approach may result in slower updates.
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
 
 
 </PRE><H2><a name="h2-SEE-ALSO">SEE ALSO</a></H2><PRE>
-       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>, <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>, <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>, <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
+       <STRONG><A HREF="ncurses.3x.html">curses(3x)</A></STRONG>,   <STRONG><A HREF="curs_initscr.3x.html">curs_initscr(3x)</A></STRONG>,    <STRONG><A HREF="curs_refresh.3x.html">curs_refresh(3x)</A></STRONG>,    <STRONG><A HREF="curs_touch.3x.html">curs_touch(3x)</A></STRONG>,
+       <STRONG><A HREF="curs_variables.3x.html">curs_variables(3x)</A></STRONG>
 
 
 
 
 
 
-                                                               <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
+ncurses 6.5                       2024-04-20                   <STRONG><A HREF="curs_window.3x.html">curs_window(3x)</A></STRONG>
 </PRE>
 <div class="nav">
 <ul>
 </PRE>
 <div class="nav">
 <ul>
 <li><a href="#h3-mvwin">mvwin</a></li>
 <li><a href="#h3-subwin">subwin</a></li>
 <li><a href="#h3-derwin">derwin</a></li>
 <li><a href="#h3-mvwin">mvwin</a></li>
 <li><a href="#h3-subwin">subwin</a></li>
 <li><a href="#h3-derwin">derwin</a></li>
+<li><a href="#h3-mvderwin">mvderwin</a></li>
 <li><a href="#h3-dupwin">dupwin</a></li>
 <li><a href="#h3-wsyncup">wsyncup</a></li>
 <li><a href="#h3-wsyncdown">wsyncdown</a></li>
 <li><a href="#h3-dupwin">dupwin</a></li>
 <li><a href="#h3-wsyncup">wsyncup</a></li>
 <li><a href="#h3-wsyncdown">wsyncdown</a></li>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
 </li>
 <li><a href="#h2-RETURN-VALUE">RETURN VALUE</a></li>
 <li><a href="#h2-NOTES">NOTES</a></li>
-<li><a href="#h2-BUGS">BUGS</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
 <li><a href="#h2-PORTABILITY">PORTABILITY</a></li>
+<li><a href="#h2-BUGS">BUGS</a></li>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>
 <li><a href="#h2-SEE-ALSO">SEE ALSO</a></li>
 </ul>
 </div>