---
name: "curs_touch"
section: "3x"
platform: "macos"
package: "ncurses"
version: "79"
release: "macOS 26.5"
platforms: ["linux", "macos"]
url: "https://new.carta.tech/curs_touch/3x"
---

# curs\_touch(3x)

curses refresh control routines

## NAME

**touchwin**, **touchline**, **untouchwin**, **wtouchln**, **is\_linetouched**, **is\_wintouched** - **curses** refresh control routines

## SYNOPSIS

**#include \<curses.h\>**\
 **int touchwin(WINDOW \*win);**\
 **int touchline(WINDOW \*win, int start, int count);**\
 **int untouchwin(WINDOW \*win);**\
 **int wtouchln(WINDOW \*win, int y, int n, int changed);**\
 **bool is\_linetouched(WINDOW \*win, int line);**\
 **bool is\_wintouched(WINDOW \*win);**\

## DESCRIPTION

The **touchwin** and **touchline** routines throw away all optimization information about which parts of the window have been touched, by pretending that the entire window has been drawn on.  This is sometimes necessary when using overlapping windows, since a change to one window affects the other window, but the records of which lines have been changed in the other window do not reflect the change.  The routine **touchline** only pretends that *count* lines have been changed, beginning with line *start*.

The **untouchwin** routine marks all lines in the window as unchanged since the last call to **wrefresh**.

The **wtouchln** routine makes *n* lines in the window, starting at line *y*, look as if they have (*changed***=1**) or have not (*changed***=0**) been changed since the last call to **wrefresh**.

The **is\_linetouched** and **is\_wintouched** routines return **TRUE** if the specified line/window was modified since the last call to **wrefresh**; otherwise they return **FALSE**.  In addition, **is\_linetouched** returns **ERR** if *line* is not valid for the given window.

## RETURN VALUE

All routines return the integer **ERR** upon failure and an integer value other than **ERR** upon successful completion, unless otherwise noted in the preceding routine descriptions.

X/Open does not define any error conditions. In this implementation

- **is\_linetouched**

  returns an error  if the window pointer is null, or if the line number is outside the window. Note that ERR is distinct from **TRUE** and **FALSE**, which are the normal return values of this function.

- **wtouchln**

  returns an error  if the window pointer is null, or if the line number is outside the window.

## PORTABILITY

The XSI Curses standard, Issue 4 describes these functions.

Some historic curses implementations had, as an undocumented feature, the ability to do the equivalent of **clearok(..., 1)** by saying **touchwin(stdscr)** or **clear(stdscr)**.  This will not work under ncurses.

## NOTES

Note that all routines except **wtouchln** may be macros.

## SEE ALSO

**curses**(3X), **curs\_refresh**(3X), **curs\_variables**(3X).
