diff options
Diffstat (limited to 'libX11/specs/libX11/CH03')
-rw-r--r-- | libX11/specs/libX11/CH03 | 3121 |
1 files changed, 0 insertions, 3121 deletions
diff --git a/libX11/specs/libX11/CH03 b/libX11/specs/libX11/CH03 deleted file mode 100644 index f7eb2d4c0..000000000 --- a/libX11/specs/libX11/CH03 +++ /dev/null @@ -1,3121 +0,0 @@ -.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991, 1994, 1996 X Consortium -.\" -.\" 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, 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 X CONSORTIUM 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 of the X Consortium shall -.\" not be used in advertising or otherwise to promote the sale, use or -.\" other dealings in this Software without prior written authorization -.\" from the X Consortium. -.\" -.\" Copyright \(co 1985, 1986, 1987, 1988, 1989, 1990, 1991 by -.\" Digital Equipment Corporation -.\" -.\" Portions Copyright \(co 1990, 1991 by -.\" Tektronix, Inc. -.\" -.\" Permission to use, copy, modify and distribute this documentation for -.\" any purpose and without fee is hereby granted, provided that the above -.\" copyright notice appears in all copies and that both that copyright notice -.\" and this permission notice appear in all copies, and that the names of -.\" Digital and Tektronix not be used in in advertising or publicity pertaining -.\" to this documentation without specific, written prior permission. -.\" Digital and Tektronix makes no representations about the suitability -.\" of this documentation for any purpose. -.\" It is provided ``as is'' without express or implied warranty. -.\" -\& -.sp 1 -.ce 3 -\s+1\fBChapter 3\fP\s-1 - -\s+1\fBWindow Functions\fP\s-1 -.sp 2 -.nr H1 3 -.nr H2 0 -.nr H3 0 -.nr H4 0 -.nr H5 0 -.na -.LP -.XS -Chapter 3: Window Functions -.XE -In the X Window System, -a window is a rectangular area on the screen that lets you -view graphic output. -Client applications -can display overlapping and nested windows on one or more -screens that are driven by X servers on one or more machines. -Clients who want to create windows must first -connect their program to the X server -by calling -.PN XOpenDisplay . -This chapter begins with a discussion of -visual types and window attributes. -The chapter continues with a discussion of the Xlib functions you can use to: -.IP \(bu 5 -Create windows -.IP \(bu 5 -Destroy windows -.IP \(bu 5 -Map windows -.IP \(bu 5 -Unmap windows -.IP \(bu 5 -Configure windows -.IP \(bu 5 -Change window stacking order -.IP \(bu 5 -Change window attributes -.LP -This chapter also identifies the window actions that may generate events. -.LP -Note that it is vital that your application conform to the -established conventions for communicating with window managers -for it to work well with the various window managers in use (see section 14.1). -Toolkits generally adhere to these conventions for you, -relieving you of the burden. -Toolkits also often supersede many functions in this chapter -with versions of their own. -For more information, -refer to the documentation for the toolkit that you are using. -.NH 2 -Visual Types -.XS -\*(SN Visual Types -.XE -.LP -.IN "Visual Type" "" "@DEF@" -On some display hardware, -it may be possible to deal with color resources in more than one way. -For example, you may be able to deal with a screen of either 12-bit depth -with arbitrary mapping of pixel to color (pseudo-color) or 24-bit depth -with 8 bits of the pixel dedicated to each of red, green, and blue. -These different ways of dealing with the visual aspects of the screen -are called visuals. -For each screen of the display, there may be a list of valid visual types -supported at different depths of the screen. -Because default windows and visual types are defined for each screen, -most simple applications need not deal with this complexity. -Xlib provides macros and functions that return the default root window, -the default depth of the default root window, and the default visual type -(see sections 2.2.1 and 16.7). -.LP -Xlib uses an opaque -.PN Visual -.IN "Visual" "" "@DEF@" -structure that contains information about the possible color mapping. -The visual utility functions (see section 16.7) use an -.PN XVisualInfo -structure to return this information to an application. -The members of this structure pertinent to this discussion are class, red_mask, -green_mask, blue_mask, bits_per_rgb, and colormap_size. -The class member specifies one of the possible visual classes of the screen -and can be -.IN "Visual Classes" "StaticGray" -.IN "Visual Classes" "StaticColor" -.IN "Visual Classes" "TrueColor" -.IN "Visual Classes" "StaticColor" -.IN "Visual Classes" "GrayScale" -.IN "Visual Classes" "PseudoColor" -.PN StaticGray , -.PN StaticColor , -.PN TrueColor , -.PN GrayScale , -.PN PseudoColor , -or -.PN DirectColor . -.LP -The following concepts may serve to make the explanation of -visual types clearer. -The screen can be color or grayscale, -can have a colormap that is writable or read-only, -and can also have a colormap whose indices are decomposed into separate -RGB pieces, provided one is not on a grayscale screen. -This leads to the following diagram: -.LP -.DS -.TS -center; - c c s c s - c c c c c -| c | c | c | c | c |. - Color Gray-scale - R/O R/W R/O R/W -_ -Undecomposed Static Pseudo Static Gray -Colormap Color Color Gray Scale -_ -.T& -| c | c | c |. -Decomposed True Direct -Colormap Color Color -_ _ _ -.TE -.DE -.LP -Conceptually, -as each pixel is read out of video memory for display on the screen, -it goes through a look-up stage by indexing into a colormap. -Colormaps can be manipulated arbitrarily on some hardware, -in limited ways on other hardware, and not at all on other hardware. -The visual types affect the colormap and -the RGB values in the following ways: -.LP -.IP \(bu 5 -For -.PN PseudoColor , -a pixel value indexes a colormap to produce -independent RGB values, and the RGB values can be changed dynamically. -.IP \(bu 5 -.PN GrayScale -is treated the same way as -.PN PseudoColor -except that the primary that drives the screen is undefined. -Thus, the client should always store the -same value for red, green, and blue in the colormaps. -.IP \(bu 5 -For -.PN DirectColor , -a pixel value is decomposed into separate RGB subfields, and each -subfield separately indexes the colormap for the corresponding value. -The RGB values can be changed dynamically. -.IP \(bu 5 -.PN TrueColor -is treated the same way as -.PN DirectColor -except that the colormap has predefined, read-only RGB values. -These RGB values are server dependent but provide linear or near-linear -ramps in each primary. -.IP \(bu 5 -.PN StaticColor -is treated the same way as -.PN PseudoColor -except that the colormap has predefined, -read-only, server-dependent RGB values. -.IP \(bu 5 -.PN StaticGray -is treated the same way as -.PN StaticColor -except that the RGB values are equal for any single pixel -value, thus resulting in shades of gray. -.PN StaticGray -with a two-entry -colormap can be thought of as monochrome. -.LP -The red_mask, green_mask, and blue_mask members are only defined for -.PN DirectColor -and -.PN TrueColor . -Each has one contiguous set of bits with no -intersections. -The bits_per_rgb member specifies the log base 2 of the -number of distinct color values (individually) of red, green, and blue. -Actual RGB values are unsigned 16-bit numbers. -The colormap_size member defines the number of available colormap entries -in a newly created colormap. -For -.PN DirectColor -and -.PN TrueColor , -this is the size of an individual pixel subfield. -.sp -.LP -To obtain the visual ID from a -.PN Visual , -use -.PN XVisualIDFromVisual . -.IN "XVisualIDFromVisual" "" "@DEF@" -.sM -.FD 0 -VisualID XVisualIDFromVisual\^(\^\fIvisual\fP\^) -.br - Visual *\^\fIvisual\fP\^; -.FN -.IP \fIvisual\fP 1i -Specifies the visual type. -.LP -.eM -The -.PN XVisualIDFromVisual -function returns the visual ID for the specified visual type. -.NH 2 -Window Attributes -.XS -\*(SN Window Attributes -.XE -.LP -.IN "Window" -.IN "Window" "attributes" -All -.PN InputOutput -windows have a border width of zero or more pixels, an optional background, -an event suppression mask (which suppresses propagation of events from -children), and a property list (see section 4.3). -The window border and background can be a solid color or a pattern, called -a tile. -All windows except the root have a parent and are clipped by their parent. -If a window is stacked on top of another window, it obscures that other -window for the purpose of input. -If a window has a background (almost all do), it obscures the other -window for purposes of output. -Attempts to output to the obscured area do nothing, -and no input events (for example, pointer motion) are generated for the -obscured area. -.LP -Windows also have associated property lists (see section 4.3). -.LP -Both -.PN InputOutput -and -.PN InputOnly -windows have the following common attributes, -which are the only attributes of an -.PN InputOnly -window: -.IP \(bu 5 -win-gravity -.IP \(bu 5 -event-mask -.IP \(bu 5 -do-not-propagate-mask -.IP \(bu 5 -override-redirect -.IP \(bu 5 -cursor -.LP -If you specify any other attributes for an -.PN InputOnly -window, -a -.PN BadMatch -error results. -.LP -.PN InputOnly -windows are used for controlling input events in situations where -.PN InputOutput -windows are unnecessary. -.PN InputOnly -windows are invisible; can only be used to control such things as -cursors, input event generation, and grabbing; -and cannot be used in any graphics requests. -Note that -.PN InputOnly -windows cannot have -.PN InputOutput -windows as inferiors. -.LP -Windows have borders of a programmable width and pattern -as well as a background pattern or tile. -.IN "Tile" "pixmaps" -Pixel values can be used for solid colors. -.IN "Resource IDs" "freeing" -.IN "Freeing" "resources" -The background and border pixmaps can be destroyed immediately after -creating the window if no further explicit references to them -are to be made. -.IN "Tile" "mode" -The pattern can either be relative to the parent -or absolute. -If -.PN ParentRelative , -the parent's background is used. -.LP -When windows are first created, -they are not visible (not mapped) on the screen. -Any output to a window that is not visible on the screen -and that does not have backing store will be discarded. -.IN "Window" "mapping" -An application may wish to create a window long before it is -mapped to the screen. -When a window is eventually mapped to the screen -(using -.PN XMapWindow ), -.IN "XMapWindow" -the X server generates an -.PN Expose -event for the window if backing store has not been maintained. -.LP -A window manager can override your choice of size, -border width, and position for a top-level window. -Your program must be prepared to use the actual size and position -of the top window. -It is not acceptable for a client application to resize itself -unless in direct response to a human command to do so. -Instead, either your program should use the space given to it, -or if the space is too small for any useful work, your program -might ask the user to resize the window. -The border of your top-level window is considered fair game -for window managers. -.LP -To set an attribute of a window, -set the appropriate member of the -.PN XSetWindowAttributes -structure and OR in the corresponding value bitmask in your subsequent calls to -.PN XCreateWindow -and -.PN XChangeWindowAttributes , -or use one of the other convenience functions that set the appropriate -attribute. -The symbols for the value mask bits and the -.PN XSetWindowAttributes -structure are: -.sM -.LP -/* Window attribute value mask bits */ -.TS -lw(.5i) lw(2.5i) lw(.8i). -T{ -#define -T} T{ -.PN CWBackPixmap -T} T{ -(1L<<0) -T} -T{ -#define -T} T{ -.PN CWBackPixel -T} T{ -(1L<<1) -T} -T{ -#define -T} T{ -.PN CWBorderPixmap -T} T{ -(1L<<2) -T} -T{ -#define -T} T{ -.PN CWBorderPixel -T} T{ -(1L<<3) -T} -T{ -#define -T} T{ -.PN CWBitGravity -T} T{ -(1L<<4) -T} -T{ -#define -T} T{ -.PN CWWinGravity -T} T{ -(1L<<5) -T} -T{ -#define -T} T{ -.PN CWBackingStore -T} T{ -(1L<<6) -T} -T{ -#define -T} T{ -.PN CWBackingPlanes -T} T{ -(1L<<7) -T} -T{ -#define -T} T{ -.PN CWBackingPixel -T} T{ -(1L<<8) -T} -T{ -#define -T} T{ -.PN CWOverrideRedirect -T} T{ -(1L<<9) -T} -T{ -#define -T} T{ -.PN CWSaveUnder -T} T{ -(1L<<10) -T} -T{ -#define -T} T{ -.PN CWEventMask -T} T{ -(1L<<11) -T} -T{ -#define -T} T{ -.PN CWDontPropagate -T} T{ -(1L<<12) -T} -T{ -#define -T} T{ -.PN CWColormap -T} T{ -(1L<<13) -T} -T{ -#define -T} T{ -.PN CWCursor -T} T{ -(1L<<14) -T} -.TE -.IN "XSetWindowAttributes" "" "@DEF@" -.Ds 0 -.TA .5i 3i -.ta .5i 3i -/* Values */ - -typedef struct { - Pixmap background_pixmap; /* background, None, or ParentRelative */ - unsigned long background_pixel; /* background pixel */ - Pixmap border_pixmap; /* border of the window or CopyFromParent */ - unsigned long border_pixel; /* border pixel value */ - int bit_gravity; /* one of bit gravity values */ - int win_gravity; /* one of the window gravity values */ - int backing_store; /* NotUseful, WhenMapped, Always */ - unsigned long backing_planes; /* planes to be preserved if possible */ - unsigned long backing_pixel; /* value to use in restoring planes */ - Bool save_under; /* should bits under be saved? (popups) */ - long event_mask; /* set of events that should be saved */ - long do_not_propagate_mask; /* set of events that should not propagate */ - Bool override_redirect; /* boolean value for override_redirect */ - Colormap colormap; /* color map to be associated with window */ - Cursor cursor; /* cursor to be displayed (or None) */ -} XSetWindowAttributes; -.De -.LP -.eM -The following lists the defaults for each window attribute and indicates -whether the attribute is applicable to -.PN InputOutput -and -.PN InputOnly -windows: -.TS H -l l l l -lw(1.4i) lw(1.3i) cw(.9i) cw(.8i). -_ -.sp 6p -T{ -.B Attribute -T} T{ -.B Default -T} T{ -.PN InputOutput -T} T{ -.PN InputOnly -T} -.sp 6p -_ -.sp 6p -.TH -.R -T{ -background-pixmap -T} T{ -.PN None -T} T{ -Yes -T} T{ -No -T} -background-pixel Undefined Yes No -T{ -border-pixmap -T} T{ -.PN CopyFromParent -T} T{ -Yes -T} T{ -No -T} -border-pixel Undefined Yes No -T{ -bit-gravity -T} T{ -.PN ForgetGravity -T} T{ -Yes -T} T{ -No -T} -T{ -win-gravity -T} T{ -.PN NorthWestGravity -T} T{ -Yes -T} T{ -Yes -T} -T{ -backing-store -T} T{ -.PN NotUseful -T} T{ -Yes -T} T{ -No -T} -backing-planes All ones Yes No -backing-pixel zero Yes No -T{ -save-under -T} T{ -.PN False -T} T{ -Yes -T} T{ -No -T} -event-mask empty set Yes Yes -do-not-propagate-mask empty set Yes Yes -T{ -override-redirect -T} T{ -.PN False -T} T{ -Yes -T} T{ -Yes -T} -T{ -colormap -T} T{ -.PN CopyFromParent -T} T{ -Yes -T} T{ -No -T} -T{ -cursor -T} T{ -.PN None -T} T{ -Yes -T} T{ -Yes -T} -_ -.TE -.NH 3 -Background Attribute -.XS -\*(SN Background Attribute -.XE -.LP -Only -.PN InputOutput -windows can have a background. -You can set the background of an -.PN InputOutput -window by using a pixel or a pixmap. -.LP -The background-pixmap attribute of a window specifies the pixmap to be used for -a window's background. -This pixmap can be of any size, although some sizes may be faster than others. -The background-pixel attribute of a window specifies a pixel value used to paint -a window's background in a single color. -.LP -You can set the background-pixmap to a pixmap, -.PN None -(default), or -.PN ParentRelative . -You can set the background-pixel of a window to any pixel value (no default). -If you specify a background-pixel, -it overrides either the default background-pixmap -or any value you may have set in the background-pixmap. -A pixmap of an undefined size that is filled with the background-pixel is used -for the background. -Range checking is not performed on the background pixel; -it simply is truncated to the appropriate number of bits. -.LP -If you set the background-pixmap, -it overrides the default. -The background-pixmap and the window must have the same depth, -or a -.PN BadMatch -error results. -If you set background-pixmap to -.PN None , -the window has no defined background. -If you set the background-pixmap to -.PN ParentRelative : -.IP \(bu 5 -The parent window's background-pixmap is used. -The child window, however, must have the same depth as -its parent, -or a -.PN BadMatch -error results. -.IP \(bu 5 -If the parent window has a background-pixmap of -.PN None , -the window also has a background-pixmap of -.PN None . -.IP \(bu 5 -A copy of the parent window's background-pixmap is not made. -The parent's background-pixmap is examined each time the child window's -background-pixmap is required. -.IP \(bu 5 -The background tile origin always aligns with the parent window's -background tile origin. -If the background-pixmap is not -.PN ParentRelative , -the background tile origin is the child window's origin. -.LP -Setting a new background, whether by setting background-pixmap or -background-pixel, overrides any previous background. -The background-pixmap can be freed immediately if no further explicit reference -is made to it (the X server will keep a copy to use when needed). -If you later draw into the pixmap used for the background, -what happens is undefined because the -X implementation is free to make a copy of the pixmap or -to use the same pixmap. -.LP -When no valid contents are available for regions of a window -and either the regions are visible or the server is maintaining backing store, -the server automatically tiles the regions with the window's background -unless the window has a background of -.PN None . -If the background is -.PN None , -the previous screen contents from other windows of the same depth as the window -are simply left in place as long as the contents come from the parent of the -window or an inferior of the parent. -Otherwise, the initial contents of the exposed regions are undefined. -.PN Expose -events are then generated for the regions, even if the background-pixmap -is -.PN None -(see section 10.9). -.NH 3 -Border Attribute -.XS -\*(SN Border Attribute -.XE -.LP -Only -.PN InputOutput -windows can have a border. -You can set the border of an -.PN InputOutput -window by using a pixel or a pixmap. -.LP -The border-pixmap attribute of a window specifies the pixmap to be used -for a window's border. -The border-pixel attribute of a window specifies a pixmap of undefined size -filled with that pixel be used for a window's border. -Range checking is not performed on the background pixel; -it simply is truncated to the appropriate number of bits. -The border tile origin is always the same as the background tile origin. -.LP -You can also set the border-pixmap to a pixmap of any size (some may be faster -than others) or to -.PN CopyFromParent -(default). -You can set the border-pixel to any pixel value (no default). -.LP -If you set a border-pixmap, -it overrides the default. -The border-pixmap and the window must have the same depth, -or a -.PN BadMatch -error results. -If you set the border-pixmap to -.PN CopyFromParent , -the parent window's border-pixmap is copied. -Subsequent changes to the parent window's border attribute do not affect -the child window. -However, the child window must have the same depth as the parent window, -or a -.PN BadMatch -error results. -.LP -The border-pixmap can be freed immediately if no further explicit reference -is made to it. -If you later draw into the pixmap used for the border, -what happens is undefined because the -X implementation is free either to make a copy of the pixmap or -to use the same pixmap. -If you specify a border-pixel, -it overrides either the default border-pixmap -or any value you may have set in the border-pixmap. -All pixels in the window's border will be set to the border-pixel. -Setting a new border, whether by setting border-pixel or by setting -border-pixmap, overrides any previous border. -.LP -Output to a window is always clipped to the inside of the window. -Therefore, graphics operations never affect the window border. -.NH 3 -Gravity Attributes -.XS -\*(SN Gravity Attributes -.XE -.LP -The bit gravity of a window defines which region of the window should be -retained when an -.PN InputOutput -window is resized. -The default value for the bit-gravity attribute is -.PN ForgetGravity . -The window gravity of a window allows you to define how the -.PN InputOutput -or -.PN InputOnly -window should be repositioned if its parent is resized. -The default value for the win-gravity attribute is -.PN NorthWestGravity . -.LP -If the inside width or height of a window is not changed -and if the window is moved or its border is changed, -then the contents of the window are not lost but move with the window. -Changing the inside width or height of the window causes its contents to be -moved or lost (depending on the bit-gravity of the window) and causes -children to be reconfigured (depending on their win-gravity). -For a -change of width and height, the (x, y) pairs are defined: -.LP -.TS -l l -l l. -_ -.sp 6p -.B -Gravity Direction Coordinates -.sp 6p -_ -.sp 6p -.R -T{ -.PN NorthWestGravity -T} T{ -(0, 0) -T} -T{ -.PN NorthGravity -T} T{ -(Width/2, 0) -T} -T{ -.PN NorthEastGravity -T} T{ -(Width, 0) -T} -T{ -.PN WestGravity -T} T{ -(0, Height/2) -T} -T{ -.PN CenterGravity -T} T{ -(Width/2, Height/2) -T} -T{ -.PN EastGravity -T} T{ -(Width, Height/2) -T} -T{ -.PN SouthWestGravity -T} T{ -(0, Height) -T} -T{ -.PN SouthGravity -T} T{ -(Width/2, Height) -T} -T{ -.PN SouthEastGravity -T} T{ -(Width, Height) -T} -.sp 6p -_ -.TE -.LP -When a window with one of these bit-gravity values is resized, -the corresponding pair -defines the change in position of each pixel in the window. -When a window with one of these win-gravities has its parent window resized, -the corresponding pair defines the change in position of the window -within the parent. -When a window is so repositioned, a -.PN GravityNotify -event is generated (see section 10.10.5). -.LP -A bit-gravity of -.PN StaticGravity -indicates that the contents or origin should not move relative to the -origin of the root window. -If the change in size of the window is coupled with a change in position (x, y), -then for bit-gravity the change in position of each pixel is (\-x, \-y), and for -win-gravity the change in position of a child when its parent is so resized is -(\-x, \-y). -Note that -.PN StaticGravity -still only takes effect when the width or height of the window is changed, -not when the window is moved. -.LP -A bit-gravity of -.PN ForgetGravity -indicates that the window's contents are always discarded after a size change, -even if a backing store or save under has been requested. -The window is tiled with its background -and zero or more -.PN Expose -events are generated. -If no background is defined, the existing screen contents are not -altered. -Some X servers may also ignore the specified bit-gravity and -always generate -.PN Expose -events. -.LP -The contents and borders of inferiors are not affected by their parent's -bit-gravity. -A server is permitted to ignore the specified bit-gravity and use -.PN Forget -instead. -.LP -A win-gravity of -.PN UnmapGravity -is like -.PN NorthWestGravity -(the window is not moved), -except the child is also -unmapped when the parent is resized, -and an -.PN UnmapNotify -event is -generated. -.NH 3 -Backing Store Attribute -.XS -\*(SN Backing Store Attribute -.XE -.LP -Some implementations of the X server may choose to maintain the contents of -.PN InputOutput -windows. -If the X server maintains the contents of a window, -the off-screen saved pixels -are known as backing store. -The backing store advises the X server on what to do -with the contents of a window. -The backing-store attribute can be set to -.PN NotUseful -(default), -.PN WhenMapped , -or -.PN Always . -.LP -A backing-store attribute of -.PN NotUseful -advises the X server that -maintaining contents is unnecessary, -although some X implementations may -still choose to maintain contents and, therefore, not generate -.PN Expose -events. -A backing-store attribute of -.PN WhenMapped -advises the X server that maintaining contents of -obscured regions when the window is mapped would be beneficial. -In this case, -the server may generate an -.PN Expose -event when the window is created. -A backing-store attribute of -.PN Always -advises the X server that maintaining contents even when -the window is unmapped would be beneficial. -Even if the window is larger than its parent, -this is a request to the X server to maintain complete contents, -not just the region within the parent window boundaries. -While the X server maintains the window's contents, -.PN Expose -events normally are not generated, -but the X server may stop maintaining -contents at any time. -.LP -When the contents of obscured regions of a window are being maintained, -regions obscured by noninferior windows are included in the destination -of graphics requests (and source, when the window is the source). -However, regions obscured by inferior windows are not included. -.NH 3 -Save Under Flag -.XS -\*(SN Save Under Flag -.XE -.IN "Save Unders" -.LP -Some server implementations may preserve contents of -.PN InputOutput -windows under other -.PN InputOutput -windows. -This is not the same as preserving the contents of a window for you. -You may get better visual -appeal if transient windows (for example, pop-up menus) request that the system -preserve the screen contents under them, -so the temporarily obscured applications do not have to repaint. -.LP -You can set the save-under flag to -.PN True -or -.PN False -(default). -If save-under is -.PN True , -the X server is advised that, when this window is mapped, -saving the contents of windows it obscures would be beneficial. -.NH 3 -Backing Planes and Backing Pixel Attributes -.XS -\*(SN Backing Planes and Backing Pixel Attributes -.XE -.LP -You can set backing planes to indicate (with bits set to 1) -which bit planes of an -.PN InputOutput -window hold dynamic data that must be preserved in backing store -and during save unders. -The default value for the backing-planes attribute is all bits set to 1. -You can set backing pixel to specify what bits to use in planes not -covered by backing planes. -The default value for the backing-pixel attribute is all bits set to 0. -The X server is free to save only the specified bit planes in the backing store -or the save under and is free to regenerate the remaining planes with -the specified pixel value. -Any extraneous bits in these values (that is, those bits beyond -the specified depth of the window) may be simply ignored. -If you request backing store or save unders, -you should use these members to minimize the amount of off-screen memory -required to store your window. -.NH 3 -Event Mask and Do Not Propagate Mask Attributes -.XS -\*(SN Event Mask and Do Not Propagate Mask Attributes -.XE -.LP -The event mask defines which events the client is interested in for this -.PN InputOutput -or -.PN InputOnly -window (or, for some event types, inferiors of this window). -The event mask is the bitwise inclusive OR of zero or more of the -valid event mask bits. -You can specify that no maskable events are reported by setting -.PN NoEventMask -(default). -.LP -The do-not-propagate-mask attribute -defines which events should not be propagated to -ancestor windows when no client has the event type selected in this -.PN InputOutput -or -.PN InputOnly -window. -The do-not-propagate-mask is the bitwise inclusive OR of zero or more -of the following masks: -.PN KeyPress , -.PN KeyRelease , -.PN ButtonPress , -.PN ButtonRelease , -.PN PointerMotion , -.PN Button1Motion , -.PN Button2Motion , -.PN Button3Motion , -.PN Button4Motion , -.PN Button5Motion , -and -.PN ButtonMotion . -You can specify that all events are propagated by setting -.PN NoEventMask -(default). -.NH 3 -Override Redirect Flag -.XS -\*(SN Override Redirect Flag -.XE -.LP -To control window placement or to add decoration, -a window manager often needs to intercept (redirect) any map or configure -request. -Pop-up windows, however, often need to be mapped without a window manager -getting in the way. -To control whether an -.PN InputOutput -or -.PN InputOnly -window is to ignore these structure control facilities, -use the override-redirect flag. -.LP -The override-redirect flag specifies whether map and configure requests -on this window should override a -.PN SubstructureRedirectMask -on the parent. -You can set the override-redirect flag to -.PN True -or -.PN False -(default). -Window managers use this information to avoid tampering with pop-up windows -(see also chapter 14). -.NH 3 -Colormap Attribute -.XS -\*(SN Colormap Attribute -.XE -.LP -The colormap attribute specifies which colormap best reflects the true -colors of the -.PN InputOutput -window. -The colormap must have the same visual type as the window, -or a -.PN BadMatch -error results. -X servers capable of supporting multiple -hardware colormaps can use this information, -and window managers can use it for calls to -.PN XInstallColormap . -You can set the colormap attribute to a colormap or to -.PN CopyFromParent -(default). -.LP -If you set the colormap to -.PN CopyFromParent , -the parent window's colormap is copied and used by its child. -However, the child window must have the same visual type as the parent, -or a -.PN BadMatch -error results. -The parent window must not have a colormap of -.PN None , -or a -.PN BadMatch -error results. -The colormap is copied by sharing the colormap object between the child -and parent, not by making a complete copy of the colormap contents. -Subsequent changes to the parent window's colormap attribute do -not affect the child window. -.NH 3 -Cursor Attribute -.XS -\*(SN Cursor Attribute -.XE -.LP -The cursor attribute specifies which cursor is to be used when the pointer is -in the -.PN InputOutput -or -.PN InputOnly -window. -You can set the cursor to a cursor or -.PN None -(default). -.LP -If you set the cursor to -.PN None , -the parent's cursor is used when the -pointer is in the -.PN InputOutput -or -.PN InputOnly -window, and any change in the parent's cursor will cause an -immediate change in the displayed cursor. -By calling -.PN XFreeCursor , -the cursor can be freed immediately as long as no further explicit reference -to it is made. -.NH 2 -Creating Windows -.XS -\*(SN Creating Windows -.XE -.LP -Xlib provides basic ways for creating windows, -and toolkits often supply higher-level functions specifically for -creating and placing top-level windows, -which are discussed in the appropriate toolkit documentation. -If you do not use a toolkit, however, -you must provide some standard information or hints for the window -manager by using the Xlib inter-client communication functions -(see chapter 14). -.LP -If you use Xlib to create your own top-level windows -(direct children of the root window), -you must observe the following rules so that all applications interact -reasonably across the different styles of window management: -.IP \(bu 5 -You must never fight with the window manager for the size or -placement of your top-level window. -.IP \(bu 5 -You must be able to deal with whatever size window you get, -even if this means that your application just prints a message -like ``Please make me bigger'' in its window. -.IP \(bu 5 -You should only attempt to resize or move top-level windows in -direct response to a user request. -If a request to change the size of a top-level window fails, -you must be prepared to live with what you get. -You are free to resize or move the children of top-level -windows as necessary. -(Toolkits often have facilities for automatic relayout.) -.IP \(bu 5 -If you do not use a toolkit that automatically sets standard window properties, -you should set these properties for top-level windows before mapping them. -.LP -For further information, -see chapter 14 and the \fIInter-Client Communication Conventions Manual\fP. -.LP -.PN XCreateWindow -is the more general function that allows you to set specific window attributes -when you create a window. -.PN XCreateSimpleWindow -creates a window that inherits its attributes from its parent window. -.LP -.IN "Window" "InputOnly" -The X server acts as if -.PN InputOnly -windows do not exist for -the purposes of graphics requests, exposure processing, and -.PN VisibilityNotify -events. -An -.PN InputOnly -window cannot be used as a -drawable (that is, as a source or destination for graphics requests). -.PN InputOnly -and -.PN InputOutput -windows act identically in other respects (properties, -grabs, input control, and so on). -Extension packages can define other classes of windows. -.LP -To create an unmapped window and set its window attributes, use -.PN XCreateWindow . -.IN "XCreateWindow" "" "@DEF@" -.sM -.FD 0 -Window XCreateWindow\^(\^\fIdisplay\fP, \fIparent\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIborder_width\fP\^, \fIdepth\fP\^, -.br - \fIclass\fP\^, \fIvisual\fP\^, \fIvaluemask\fP\^, \fIattributes\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIparent\fP\^; -.br - int \fIx\fP\^, \fIy\fP\^; -.br - unsigned int \fIwidth\fP\^, \fIheight\fP\^; -.br - unsigned int \fIborder_width\fP\^; -.br - int \fIdepth\fP\^; -.br - unsigned int \fIclass\fP\^; -.br - Visual *\fIvisual\fP\^; -.br - unsigned long \fIvaluemask\fP\^; -.br - XSetWindowAttributes *\fIattributes\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIparent\fP 1i -Specifies the parent window. -.ds Xy , which are the top-left outside corner of the created window's \ -borders and are relative to the inside of the parent window's borders -.IP \fIx\fP 1i -.br -.ns -.IP \fIy\fP 1i -Specify the x and y coordinates\*(Xy. -.ds Wh , which are the created window's inside dimensions \ -and do not include the created window's borders -.IP \fIwidth\fP 1i -.br -.ns -.IP \fIheight\fP 1i -Specify the width and height\*(Wh. -The dimensions must be nonzero, -or a -.PN BadValue -error results. -.IP \fIborder_width\fP 1i -Specifies the width of the created window's border in pixels. -.IP \fIdepth\fP 1i -Specifies the window's depth. -A depth of -.PN CopyFromParent -means the depth is taken from the parent. -.IP \fIclass\fP 1i -Specifies the created window's class. -You can pass -.PN InputOutput , -.PN InputOnly , -or -.PN CopyFromParent . -A class of -.PN CopyFromParent -means the class -is taken from the parent. -.IP \fIvisual\fP 1i -Specifies the visual type. -A visual of -.PN CopyFromParent -means the visual type is taken from the -parent. -.IP \fIvaluemask\fP 1i -Specifies which window attributes are defined in the attributes -argument. -This mask is the bitwise inclusive OR of the valid attribute mask bits. -If valuemask is zero, -the attributes are ignored and are not referenced. -.IP \fIattributes\fP 1i -Specifies the structure from which the values (as specified by the value mask) -are to be taken. -The value mask should have the appropriate bits -set to indicate which attributes have been set in the structure. -.LP -.eM -The -.PN XCreateWindow -function creates an unmapped subwindow for a specified parent window, -returns the window ID of the created window, -and causes the X server to generate a -.PN CreateNotify -event. -The created window is placed on top in the stacking order -with respect to siblings. -.LP -The coordinate system has the X axis horizontal and the Y axis vertical -with the origin [0, 0] at the upper-left corner. -Coordinates are integral, -in terms of pixels, -and coincide with pixel centers. -Each window and pixmap has its own coordinate system. -For a window, -the origin is inside the border at the inside, upper-left corner. -.LP -The border_width for an -.PN InputOnly -window must be zero, or a -.PN BadMatch -error results. -For class -.PN InputOutput , -the visual type and depth must be a combination supported for the screen, -or a -.PN BadMatch -error results. -The depth need not be the same as the parent, -but the parent must not be a window of class -.PN InputOnly , -or a -.PN BadMatch -error results. -For an -.PN InputOnly -window, -the depth must be zero, and the visual must be one supported by the screen. -If either condition is not met, -a -.PN BadMatch -error results. -The parent window, however, may have any depth and class. -If you specify any invalid window attribute for a window, a -.PN BadMatch -error results. -.LP -The created window is not yet displayed (mapped) on the user's display. -To display the window, call -.PN XMapWindow . -The new window initially uses the same cursor as -its parent. -A new cursor can be defined for the new window by calling -.PN XDefineCursor . -.IN "Cursor" "Initial State" -.IN "XDefineCursor" -The window will not be visible on the screen unless it and all of its -ancestors are mapped and it is not obscured by any of its ancestors. -.LP -.PN XCreateWindow -can generate -.PN BadAlloc , -.PN BadColor , -.PN BadCursor , -.PN BadMatch , -.PN BadPixmap , -.PN BadValue , -and -.PN BadWindow -errors. -.LP -.sp -To create an unmapped -.PN InputOutput -subwindow of a given parent window, use -.PN XCreateSimpleWindow . -.IN "XCreateSimpleWindow" "" "@DEF@" -.sM -.FD 0 -Window XCreateSimpleWindow\^(\^\fIdisplay\fP, \fIparent\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^, \fIborder_width\fP\^, -.br - \fIborder\fP\^, \fIbackground\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIparent\fP\^; -.br - int \fIx\fP\^, \fIy\fP\^; -.br - unsigned int \fIwidth\fP\^, \fIheight\fP\^; -.br - unsigned int \fIborder_width\fP\^; -.br - unsigned long \fIborder\fP\^; -.br - unsigned long \fIbackground\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIparent\fP 1i -Specifies the parent window. -.ds Xy , which are the top-left outside corner of the new window's borders \ -and are relative to the inside of the parent window's borders -.IP \fIx\fP 1i -.br -.ns -.IP \fIy\fP 1i -Specify the x and y coordinates\*(Xy. -.ds Wh , which are the created window's inside dimensions \ -and do not include the created window's borders -.IP \fIwidth\fP 1i -.br -.ns -.IP \fIheight\fP 1i -Specify the width and height\*(Wh. -The dimensions must be nonzero, -or a -.PN BadValue -error results. -.IP \fIborder_width\fP 1i -Specifies the width of the created window's border in pixels. -.IP \fIborder\fP 1i -Specifies the border pixel value of the window. -.IP \fIbackground\fP 1i -Specifies the background pixel value of the window. - -.LP -.eM -The -.PN XCreateSimpleWindow -function creates an unmapped -.PN InputOutput -subwindow for a specified parent window, returns the -window ID of the created window, and causes the X server to generate a -.PN CreateNotify -event. -The created window is placed on top in the stacking order with respect to -siblings. -Any part of the window that extends outside its parent window is clipped. -The border_width for an -.PN InputOnly -window must be zero, or a -.PN BadMatch -error results. -.PN XCreateSimpleWindow -inherits its depth, class, and visual from its parent. -All other window attributes, except background and border, -have their default values. -.LP -.PN XCreateSimpleWindow -can generate -.PN BadAlloc , -.PN BadMatch , -.PN BadValue , -and -.PN BadWindow -errors. -.NH 2 -Destroying Windows -.XS -\*(SN Destroying Windows -.XE -.LP -Xlib provides functions that you can use to destroy a window or destroy all -subwindows of a window. -.LP -.sp -To destroy a window and all of its subwindows, use -.PN XDestroyWindow . -.IN "XDestroyWindow" "" "@DEF@" -.sM -.FD 0 -XDestroyWindow\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XDestroyWindow -function destroys the specified window as well as all of its subwindows and causes -the X server to generate a -.PN DestroyNotify -event for each window. -The window should never be referenced again. -If the window specified by the w argument is mapped, -it is unmapped automatically. -The ordering of the -.PN DestroyNotify -events is such that for any given window being destroyed, -.PN DestroyNotify -is generated on any inferiors of the window before being generated on -the window itself. -The ordering among siblings and across subhierarchies is not otherwise -constrained. -If the window you specified is a root window, no windows are destroyed. -Destroying a mapped window will generate -.PN Expose -events on other windows that were obscured by the window being destroyed. -.LP -.PN XDestroyWindow -can generate a -.PN BadWindow -error. -.LP -.sp -To destroy all subwindows of a specified window, use -.PN XDestroySubwindows . -.IN "XDestroySubwindows" "" "@DEF@" -.sM -.FD 0 -XDestroySubwindows\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XDestroySubwindows -function destroys all inferior windows of the specified window, -in bottom-to-top stacking order. -It causes the X server to generate a -.PN DestroyNotify -event for each window. -If any mapped -subwindows were actually destroyed, -.PN XDestroySubwindows -causes the X server to generate -.PN Expose -events on the specified window. -This is much more efficient than deleting many windows -one at a time because much of the work need be performed only once for all -of the windows, rather than for each window. -The subwindows should never be referenced again. -.LP -.PN XDestroySubwindows -can generate a -.PN BadWindow -error. -.NH 2 -Mapping Windows -.XS -\*(SN Mapping Windows -.XE -.LP -A window is considered mapped if an -.PN XMapWindow -call has been made on it. -It may not be visible on the screen for one of the following reasons: -.IP \(bu 5 -It is obscured by another opaque window. -.IP \(bu 5 -One of its ancestors is not mapped. -.IP \(bu 5 -It is entirely clipped by an ancestor. -.LP -.PN Expose -events are generated for the window when part or all of -it becomes visible on the screen. -A client receives the -.PN Expose -events only if it has asked for them. -Windows retain their position in the stacking order when they are unmapped. -.LP -A window manager may want to control the placement of subwindows. -If -.PN SubstructureRedirectMask -has been selected by a window manager -on a parent window (usually a root window), -a map request initiated by other clients on a child window is not performed, -and the window manager is sent a -.PN MapRequest -event. -However, if the override-redirect flag on the child had been set to -.PN True -(usually only on pop-up menus), -the map request is performed. -.LP -A tiling window manager might decide to reposition and resize other clients' -windows and then decide to map the window to its final location. -A window manager that wants to provide decoration might -reparent the child into a frame first. -For further information, -see sections 3.2.8 and 10.10. -Only a single client at a time can select for -.PN SubstructureRedirectMask . -.LP -Similarly, a single client can select for -.PN ResizeRedirectMask -on a parent window. -Then, any attempt to resize the window by another client is suppressed, and -the client receives a -.PN ResizeRequest -event. -.LP -.sp -To map a given window, use -.PN XMapWindow . -.IN "XMapWindow" "" "@DEF@" -.sM -.FD 0 -XMapWindow\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XMapWindow -function -maps the window and all of its -subwindows that have had map requests. -Mapping a window that has an unmapped ancestor does not display the -window but marks it as eligible for display when the ancestor becomes -mapped. -Such a window is called unviewable. -When all its ancestors are mapped, -the window becomes viewable -and will be visible on the screen if it is not obscured by another window. -This function has no effect if the window is already mapped. -.LP -If the override-redirect of the window is -.PN False -and if some other client has selected -.PN SubstructureRedirectMask -on the parent window, then the X server generates a -.PN MapRequest -event, and the -.PN XMapWindow -function does not map the window. -Otherwise, the window is mapped, and the X server generates a -.PN MapNotify -event. -.LP -If the window becomes viewable and no earlier contents for it are remembered, -the X server tiles the window with its background. -If the window's background is undefined, -the existing screen contents are not -altered, and the X server generates zero or more -.PN Expose -events. -If backing-store was maintained while the window was unmapped, no -.PN Expose -events -are generated. -If backing-store will now be maintained, -a full-window exposure is always generated. -Otherwise, only visible regions may be reported. -Similar tiling and exposure take place for any newly viewable inferiors. -.LP -.IN "XMapWindow" -If the window is an -.PN InputOutput -window, -.PN XMapWindow -generates -.PN Expose -events on each -.PN InputOutput -window that it causes to be displayed. -If the client maps and paints the window -and if the client begins processing events, -the window is painted twice. -To avoid this, -first ask for -.PN Expose -events and then map the window, -so the client processes input events as usual. -The event list will include -.PN Expose -for each -window that has appeared on the screen. -The client's normal response to -an -.PN Expose -event should be to repaint the window. -This method usually leads to simpler programs and to proper interaction -with window managers. -.LP -.PN XMapWindow -can generate a -.PN BadWindow -error. -.LP -.sp -To map and raise a window, use -.PN XMapRaised . -.IN "XMapRaised" "" "@DEF@" -.sM -.FD 0 -XMapRaised\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XMapRaised -function -essentially is similar to -.PN XMapWindow -in that it maps the window and all of its -subwindows that have had map requests. -However, it also raises the specified window to the top of the stack. -For additional information, -see -.PN XMapWindow . -.LP -.PN XMapRaised -can generate multiple -.PN BadWindow -errors. -.LP -.sp -To map all subwindows for a specified window, use -.PN XMapSubwindows . -.IN "XMapSubwindows" "" "@DEF@" -.sM -.FD 0 -XMapSubwindows\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XMapSubwindows -.IN "XMapSubwindows" -function maps all subwindows for a specified window in top-to-bottom stacking -order. -The X server generates -.PN Expose -events on each newly displayed window. -This may be much more efficient than mapping many windows -one at a time because the server needs to perform much of the work -only once, for all of the windows, rather than for each window. -.LP -.PN XMapSubwindows -can generate a -.PN BadWindow -error. -.NH 2 -Unmapping Windows -.XS -\*(SN Unmapping Windows -.XE -.LP -Xlib provides functions that you can use to unmap a window or all subwindows. -.LP -.sp -To unmap a window, use -.PN XUnmapWindow . -.IN "XUnmapWindow" "" "@DEF@" -.sM -.FD 0 -XUnmapWindow\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XUnmapWindow -function unmaps the specified window and causes the X server to generate an -.PN UnmapNotify -.IN "UnmapNotify Event" -.IN "XUnmapWindow" -event. -If the specified window is already unmapped, -.PN XUnmapWindow -has no effect. -Normal exposure processing on formerly obscured windows is performed. -Any child window will no longer be visible until another map call is -made on the parent. -In other words, the subwindows are still mapped but are not visible -until the parent is mapped. -Unmapping a window will generate -.PN Expose -events on windows that were formerly obscured by it. -.LP -.PN XUnmapWindow -can generate a -.PN BadWindow -error. -.LP -.sp -To unmap all subwindows for a specified window, use -.PN XUnmapSubwindows . -.IN "XUnmapSubwindows" "" "@DEF@" -.sM -.FD 0 -XUnmapSubwindows\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XUnmapSubwindows -function unmaps all subwindows for the specified window in bottom-to-top -stacking order. -It causes the X server to generate an -.PN UnmapNotify -event on each subwindow and -.PN Expose -events on formerly obscured windows. -.IN "UnmapNotify Event" -Using this function is much more efficient than unmapping multiple windows -one at a time because the server needs to perform much of the work -only once, for all of the windows, rather than for each window. -.LP -.PN XUnmapSubwindows -can generate a -.PN BadWindow -error. -.NH 2 -Configuring Windows -.XS -\*(SN Configuring Windows -.XE -.LP -.LP -Xlib provides functions that you can use to -move a window, resize a window, move and resize a window, or -change a window's border width. -To change one of these parameters, -set the appropriate member of the -.PN XWindowChanges -structure and OR in the corresponding value mask in subsequent calls to -.PN XConfigureWindow . -The symbols for the value mask bits and the -.PN XWindowChanges -structure are: -.sM -.LP -/* Configure window value mask bits */ -.TS -lw(.5i) lw(2.5i) lw(.8i). -T{ -#define -T} T{ -.PN CWX -T} T{ -(1<<0) -T} -T{ -#define -T} T{ -.PN CWY -T} T{ -(1<<1) -T} -T{ -#define -T} T{ -.PN CWWidth -T} T{ -(1<<2) -T} -T{ -#define -T} T{ -.PN CWHeight -T} T{ -(1<<3) -T} -T{ -#define -T} T{ -.PN CWBorderWidth -T} T{ -(1<<4) -T} -T{ -#define -T} T{ -.PN CWSibling -T} T{ -(1<<5) -T} -T{ -#define -T} T{ -.PN CWStackMode -T} T{ -(1<<6) -T} -.TE -.IN "XWindowChanges" "" "@DEF@" -.Ds 0 -.TA .5i 3i -.ta .5i 3i -/* Values */ - -typedef struct { - int x, y; - int width, height; - int border_width; - Window sibling; - int stack_mode; -} XWindowChanges; -.De -.LP -.eM -The x and y members are used to set the window's x and y coordinates, -which are relative to the parent's origin -and indicate the position of the upper-left outer corner of the window. -The width and height members are used to set the inside size of the window, -not including the border, and must be nonzero, or a -.PN BadValue -error results. -Attempts to configure a root window have no effect. -.LP -The border_width member is used to set the width of the border in pixels. -Note that setting just the border width leaves the outer-left corner of the window -in a fixed position but moves the absolute position of the window's origin. -If you attempt to set the border-width attribute of an -.PN InputOnly -window nonzero, a -.PN BadMatch -error results. -.LP -The sibling member is used to set the sibling window for stacking operations. -The stack_mode member is used to set how the window is to be restacked -and can be set to -.PN Above , -.PN Below , -.PN TopIf , -.PN BottomIf , -or -.PN Opposite . -.LP -If the override-redirect flag of the window is -.PN False -and if some other client has selected -.PN SubstructureRedirectMask -on the parent, the X server generates a -.PN ConfigureRequest -event, and no further processing is performed. -Otherwise, -if some other client has selected -.PN ResizeRedirectMask -on the window and the inside -width or height of the window is being changed, -a -.PN ResizeRequest -event is generated, and the current inside width and height are -used instead. -Note that the override-redirect flag of the window has no effect -on -.PN ResizeRedirectMask -and that -.PN SubstructureRedirectMask -on the parent has precedence over -.PN ResizeRedirectMask -on the window. -.LP -When the geometry of the window is changed as specified, -the window is restacked among siblings, and a -.PN ConfigureNotify -event is generated if the state of the window actually changes. -.PN GravityNotify -events are generated after -.PN ConfigureNotify -events. -If the inside width or height of the window has actually changed, -children of the window are affected as specified. -.LP -If a window's size actually changes, -the window's subwindows move according to their window gravity. -Depending on the window's bit gravity, -the contents of the window also may be moved (see section 3.2.3). -.LP -If regions of the window were obscured but now are not, -exposure processing is performed on these formerly obscured windows, -including the window itself and its inferiors. -As a result of increasing the width or height, -exposure processing is also performed on any new regions of the window -and any regions where window contents are lost. -.LP -The restack check (specifically, the computation for -.PN BottomIf , -.PN TopIf , -and -.PN Opposite ) -is performed with respect to the window's final size and position (as -controlled by the other arguments of the request), not its initial position. -If a sibling is specified without a stack_mode, -a -.PN BadMatch -error results. -.LP -If a sibling and a stack_mode are specified, -the window is restacked as follows: -.TS -lw(1i) lw(5i). -T{ -.PN Above -T} T{ -The window is placed just above the sibling. -T} -.sp 6p -T{ -.PN Below -T} T{ -The window is placed just below the sibling. -T} -.sp 6p -T{ -.PN TopIf -T} T{ -If the sibling occludes the window, the window is placed -at the top of the stack. -T} -.sp 6p -T{ -.PN BottomIf -T} T{ -If the window occludes the sibling, the window is -placed at the bottom of the stack. -T} -.sp 6p -T{ -.PN Opposite -T} T{ -If the sibling occludes the window, the window -is placed at the top of the stack. -If the window occludes the sibling, -the window is placed at the bottom of the stack. -T} -.TE -.LP -If a stack_mode is specified but no sibling is specified, -the window is restacked as follows: -.TS -lw(1i) lw(5i). -T{ -.PN Above -T} T{ -The window is placed at the top of the stack. -T} -.sp 6p -T{ -.PN Below -T} T{ -The window is placed at the bottom of the stack. -T} -.sp 6p -T{ -.PN TopIf -T} T{ -If any sibling occludes the window, the window is placed at -the top of the stack. -T} -.sp 6p -T{ -.PN BottomIf -T} T{ -If the window occludes any sibling, the window is placed at -the bottom of the stack. -T} -.sp 6p -T{ -.PN Opposite -T} T{ -If any sibling occludes the window, the window -is placed at the top of the stack. -If the window occludes any sibling, -the window is placed at the bottom of the stack. -T} -.TE -.LP -Attempts to configure a root window have no effect. -.LP -.sp -To configure a window's size, location, stacking, or border, use -.PN XConfigureWindow . -.IN "XConfigureWindow" "" "@DEF@" -.sM -.FD 0 -XConfigureWindow\^(\^\fIdisplay\fP, \fIw\fP\^, \fIvalue_mask\fP\^, \fIvalues\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - unsigned int \fIvalue_mask\fP\^; -.br - XWindowChanges *\fIvalues\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.ds Wi to be reconfigured -.IP \fIw\fP 1i -Specifies the window \*(Wi. -.IP \fIvalue_mask\fP 1i -Specifies which values are to be set using information in -the values structure. -This mask is the bitwise inclusive OR of the valid configure window values bits. -.IP \fIvalues\fP 1i -Specifies the -.PN XWindowChanges -structure. -.LP -.eM -The -.PN XConfigureWindow -function uses the values specified in the -.PN XWindowChanges -structure to reconfigure a window's size, position, border, and stacking order. -Values not specified are taken from the existing geometry of the window. -.LP -If a sibling is specified without a stack_mode or if the window -is not actually a sibling, -a -.PN BadMatch -error results. -Note that the computations for -.PN BottomIf , -.PN TopIf , -and -.PN Opposite -are performed with respect to the window's final geometry (as controlled by the -other arguments passed to -.PN XConfigureWindow ), -not its initial geometry. -Any backing store contents of the window, its -inferiors, and other newly visible windows are either discarded or -changed to reflect the current screen contents -(depending on the implementation). -.LP -.PN XConfigureWindow -can generate -.PN BadMatch , -.PN BadValue , -and -.PN BadWindow -errors. -.LP -.sp -To move a window without changing its size, use -.PN XMoveWindow . -.IN "XMoveWindow" "" "@DEF@" -.sM -.FD 0 -XMoveWindow\^(\^\fIdisplay\fP, \fIw\fP\^, \fIx\fP\^, \fIy\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - int \fIx\fP\^, \fIy\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.ds Wi to be moved -.IP \fIw\fP 1i -Specifies the window \*(Wi. -.ds Xy , which define the new location of the top-left pixel \ -of the window's border or the window itself if it has no border -.IP \fIx\fP 1i -.br -.ns -.IP \fIy\fP 1i -Specify the x and y coordinates\*(Xy. -.LP -.eM -The -.PN XMoveWindow -function moves the specified window to the specified x and y coordinates, -but it does not change the window's size, raise the window, or -change the mapping state of the window. -Moving a mapped window may or may not lose the window's contents -depending on if the window is obscured by nonchildren -and if no backing store exists. -If the contents of the window are lost, -the X server generates -.PN Expose -events. -Moving a mapped window generates -.PN Expose -events on any formerly obscured windows. -.LP -If the override-redirect flag of the window is -.PN False -and some -other client has selected -.PN SubstructureRedirectMask -on the parent, the X server generates a -.PN ConfigureRequest -event, and no further processing is -performed. -Otherwise, the window is moved. -.LP -.PN XMoveWindow -can generate a -.PN BadWindow -error. -.LP -.sp -To change a window's size without changing the upper-left coordinate, use -.PN XResizeWindow . -.IN "XResizeWindow" "" "@DEF@" -.sM -.FD 0 -XResizeWindow\^(\^\fIdisplay\fP, \fIw\fP\^, \fIwidth\fP\^, \fIheight\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - unsigned int \fIwidth\fP\^, \fIheight\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.ds Wh , which are the interior dimensions of the window \ -after the call completes -.IP \fIwidth\fP 1i -.br -.ns -.IP \fIheight\fP 1i -Specify the width and height\*(Wh. -.LP -.eM -The -.PN XResizeWindow -function changes the inside dimensions of the specified window, not including -its borders. -This function does not change the window's upper-left coordinate or -the origin and does not restack the window. -Changing the size of a mapped window may lose its contents and generate -.PN Expose -events. -If a mapped window is made smaller, -changing its size generates -.PN Expose -events on windows that the mapped window formerly obscured. -.LP -If the override-redirect flag of the window is -.PN False -and some -other client has selected -.PN SubstructureRedirectMask -on the parent, the X server generates a -.PN ConfigureRequest -event, and no further processing is performed. -If either width or height is zero, -a -.PN BadValue -error results. -.LP -.PN XResizeWindow -can generate -.PN BadValue -and -.PN BadWindow -errors. -.LP -.sp -To change the size and location of a window, use -.PN XMoveResizeWindow . -.IN "XMoveResizeWindow" "" "@DEF@" -.sM -.FD 0 -XMoveResizeWindow\^(\^\fIdisplay\fP, \fIw\fP\^, \fIx\fP\^, \fIy\fP\^, \fIwidth\fP\^, \fIheight\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - int \fIx\fP\^, \fIy\fP\^; -.br - unsigned int \fIwidth\fP\^, \fIheight\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.ds Wi to be reconfigured -.IP \fIw\fP 1i -Specifies the window \*(Wi. -.ds Xy , which define the new position of the window relative to its parent -.IP \fIx\fP 1i -.br -.ns -.IP \fIy\fP 1i -Specify the x and y coordinates\*(Xy. -.ds Wh , which define the interior size of the window -.IP \fIwidth\fP 1i -.br -.ns -.IP \fIheight\fP 1i -Specify the width and height\*(Wh. -.LP -.eM -The -.PN XMoveResizeWindow -function changes the size and location of the specified window -without raising it. -Moving and resizing a mapped window may generate an -.PN Expose -event on the window. -Depending on the new size and location parameters, -moving and resizing a window may generate -.PN Expose -events on windows that the window formerly obscured. -.LP -If the override-redirect flag of the window is -.PN False -and some -other client has selected -.PN SubstructureRedirectMask -on the parent, the X server generates a -.PN ConfigureRequest -event, and no further processing is performed. -Otherwise, the window size and location are changed. -.LP -.PN XMoveResizeWindow -can generate -.PN BadValue -and -.PN BadWindow -errors. -.LP -.sp -To change the border width of a given window, use -.PN XSetWindowBorderWidth . -.IN "XSetWindowBorderWidth" "" "@DEF@" -.sM -.FD 0 -XSetWindowBorderWidth\^(\^\fIdisplay\fP, \fIw\fP, \fIwidth\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - unsigned int \fIwidth\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.IP \fIwidth\fP 1i -Specifies the width of the window border. -.LP -.eM -The -.PN XSetWindowBorderWidth -function sets the specified window's border width to the specified width. -.LP -.PN XSetWindowBorderWidth -can generate a -.PN BadWindow -error. -.NH 2 -Changing Window Stacking Order -.XS -\*(SN Changing Window Stacking Order -.XE -.LP -.LP -Xlib provides functions that you can use to raise, lower, circulate, -or restack windows. -.LP -.sp -To raise a window so that no sibling window obscures it, use -.PN XRaiseWindow . -.IN "XRaiseWindow" "" "@DEF@" -.sM -.FD 0 -XRaiseWindow\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XRaiseWindow -function -raises the specified window to the top of the stack so that no sibling window -obscures it. -If the windows are regarded as overlapping sheets of paper stacked -on a desk, -then raising a window is analogous to moving the sheet to the top of -the stack but leaving its x and y location on the desk constant. -Raising a mapped window may generate -.PN Expose -events for the window and any mapped subwindows that were formerly obscured. -.LP -If the override-redirect attribute of the window is -.PN False -and some -other client has selected -.PN SubstructureRedirectMask -on the parent, the X server generates a -.PN ConfigureRequest -event, and no processing is performed. -Otherwise, the window is raised. -.LP -.PN XRaiseWindow -can generate a -.PN BadWindow -error. -.LP -.sp -To lower a window so that it does not obscure any sibling windows, use -.PN XLowerWindow . -.IN "XLowerWindow" "" "@DEF@" -.sM -.FD 0 -XLowerWindow\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XLowerWindow -function lowers the specified window to the bottom of the stack -so that it does not obscure any sibling -windows. -If the windows are regarded as overlapping sheets of paper -stacked on a desk, then lowering a window is analogous to moving the -sheet to the bottom of the stack but leaving its x and y location on -the desk constant. -Lowering a mapped window will generate -.PN Expose -events on any windows it formerly obscured. -.LP -If the override-redirect attribute of the window is -.PN False -and some -other client has selected -.PN SubstructureRedirectMask -on the parent, the X server generates a -.PN ConfigureRequest -event, and no processing is performed. -Otherwise, the window is lowered to the bottom of the -stack. -.LP -.PN XLowerWindow -can generate a -.PN BadWindow -error. -.LP -.sp -To circulate a subwindow up or down, use -.PN XCirculateSubwindows . -.IN "XCirculateSubwindows" "" "@DEF@" -.sM -.FD 0 -XCirculateSubwindows\^(\^\fIdisplay\fP, \fIw\fP\^, \fIdirection\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - int \fIdirection\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.IP \fIdirection\fP 1i -Specifies the direction (up or down) that you want to circulate -the window. -You can pass -.PN RaiseLowest -or -.PN LowerHighest . -.LP -.eM -The -.PN XCirculateSubwindows -function circulates children of the specified window in the specified -direction. -If you specify -.PN RaiseLowest , -.PN XCirculateSubwindows -raises the lowest mapped child (if any) that is occluded -by another child to the top of the stack. -If you specify -.PN LowerHighest , -.PN XCirculateSubwindows -lowers the highest mapped child (if any) that occludes another child -to the bottom of the stack. -Exposure processing is then performed on formerly obscured windows. -If some other client has selected -.PN SubstructureRedirectMask -on the window, the X server generates a -.PN CirculateRequest -event, and no further processing is performed. -If a child is actually restacked, -the X server generates a -.PN CirculateNotify -event. -.LP -.PN XCirculateSubwindows -can generate -.PN BadValue -and -.PN BadWindow -errors. -.LP -.sp -To raise the lowest mapped child of a window that is partially or completely -occluded by another child, use -.PN XCirculateSubwindowsUp . -.IN "XCirculateSubwindowsUp" "" "@DEF@" -.sM -.FD 0 -XCirculateSubwindowsUp\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XCirculateSubwindowsUp -function raises the lowest mapped child of the specified window that -is partially -or completely -occluded by another child. -Completely unobscured children are not affected. -This is a convenience function equivalent to -.PN XCirculateSubwindows -with -.PN RaiseLowest -specified. -.LP -.PN XCirculateSubwindowsUp -can generate a -.PN BadWindow -error. -.LP -.sp -To lower the highest mapped child of a window that partially or -completely occludes another child, use -.PN XCirculateSubwindowsDown . -.IN "XCirculateSubwindowsDown" "" "@DEF@" -.sM -.FD 0 -XCirculateSubwindowsDown\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XCirculateSubwindowsDown -function lowers the highest mapped child of the specified window that partially -or completely occludes another child. -Completely unobscured children are not affected. -This is a convenience function equivalent to -.PN XCirculateSubwindows -with -.PN LowerHighest -specified. -.LP -.PN XCirculateSubwindowsDown -can generate a -.PN BadWindow -error. -.LP -.sp -To restack a set of windows from top to bottom, use -.PN XRestackWindows . -.IN "XRestackWindows" "" "@DEF@" -.sM -.FD 0 -XRestackWindows\^(\^\fIdisplay\fP, \fIwindows\fP\^, \^\fInwindows\fP\^); -.br - Display *\fIdisplay\fP\^; -.br - Window \fIwindows\fP\^[]; -.br - int \fInwindows\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIwindows\fP 1i -Specifies an array containing the windows to be restacked. -.IP \fInwindows\fP 1i -Specifies the number of windows to be restacked. -.LP -.eM -The -.PN XRestackWindows -function restacks the windows in the order specified, -from top to bottom. -The stacking order of the first window in the windows array is unaffected, -but the other windows in the array are stacked underneath the first window, -in the order of the array. -The stacking order of the other windows is not affected. -For each window in the window array that is not a child of the specified window, -a -.PN BadMatch -error results. -.LP -If the override-redirect attribute of a window is -.PN False -and some -other client has selected -.PN SubstructureRedirectMask -on the parent, the X server generates -.PN ConfigureRequest -events for each window whose override-redirect flag is not set, -and no further processing is performed. -Otherwise, the windows will be restacked in top-to-bottom order. -.LP -.PN XRestackWindows -can generate a -.PN BadWindow -error. -.NH 2 -Changing Window Attributes -.XS -\*(SN Changing Window Attributes -.XE -.LP -.LP -Xlib provides functions that you can use to set window attributes. -.PN XChangeWindowAttributes -is the more general function that allows you to set one or more window -attributes provided by the -.PN XSetWindowAttributes -structure. -The other functions described in this section allow you to set one specific -window attribute, such as a window's background. -.LP -.sp -To change one or more attributes for a given window, use -.PN XChangeWindowAttributes . -.IN "XChangeWindowAttributes" "" "@DEF@" -.sM -.FD 0 -XChangeWindowAttributes\^(\^\fIdisplay\fP, \fIw\fP\^, \fIvaluemask\fP\^, \fIattributes\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - unsigned long \fIvaluemask\fP\^; -.br - XSetWindowAttributes *\fIattributes\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.IP \fIvaluemask\fP 1i -Specifies which window attributes are defined in the attributes -argument. -This mask is the bitwise inclusive OR of the valid attribute mask bits. -If valuemask is zero, -the attributes are ignored and are not referenced. -The values and restrictions are -the same as for -.PN XCreateWindow . -.IP -.IP \fIattributes\fP 1i -Specifies the structure from which the values (as specified by the value mask) -are to be taken. -The value mask should have the appropriate bits -set to indicate which attributes have been set in the structure -(see section 3.2). -.LP -.eM -Depending on the valuemask, -the -.PN XChangeWindowAttributes -function uses the window attributes in the -.PN XSetWindowAttributes -structure to change the specified window attributes. -Changing the background does not cause the window contents to be -changed. -To repaint the window and its background, use -.PN XClearWindow . -Setting the border or changing the background such that the -border tile origin changes causes the border to be repainted. -Changing the background of a root window to -.PN None -or -.PN ParentRelative -restores the default background pixmap. -Changing the border of a root window to -.PN CopyFromParent -restores the default border pixmap. -Changing the win-gravity does not affect the current position of the -window. -Changing the backing-store of an obscured window to -.PN WhenMapped -or -.PN Always , -or changing the backing-planes, backing-pixel, or -save-under of a mapped window may have no immediate effect. -Changing the colormap of a window (that is, defining a new map, not -changing the contents of the existing map) generates a -.PN ColormapNotify -event. -Changing the colormap of a visible window may have no -immediate effect on the screen because the map may not be installed -(see -.PN XInstallColormap ). -Changing the cursor of a root window to -.PN None -restores the default -cursor. -Whenever possible, you are encouraged to share colormaps. -.LP -Multiple clients can select input on the same window. -Their event masks are maintained separately. -When an event is generated, -it is reported to all interested clients. -However, only one client at a time can select for -.PN SubstructureRedirectMask , -.PN ResizeRedirectMask , -and -.PN ButtonPressMask . -If a client attempts to select any of these event masks -and some other client has already selected one, -a -.PN BadAccess -error results. -There is only one do-not-propagate-mask for a window, -not one per client. -.LP -.PN XChangeWindowAttributes -can generate -.PN BadAccess , -.PN BadColor , -.PN BadCursor , -.PN BadMatch , -.PN BadPixmap , -.PN BadValue , -and -.PN BadWindow -errors. -.LP -.sp -To set the background of a window to a given pixel, use -.PN XSetWindowBackground . -.IN "XSetWindowBackground" "" "@DEF@" -.sM -.FD 0 -XSetWindowBackground\^(\^\fIdisplay\fP, \fIw\fP\^, \fIbackground_pixel\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - unsigned long \fIbackground_pixel\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.IP \fIbackground_pixel\fP 1i -Specifies the pixel that is to be used for the background. -.LP -.eM -The -.PN XSetWindowBackground -function sets the background of the window to the specified pixel value. -Changing the background does not cause the window contents to be changed. -.PN XSetWindowBackground -uses a pixmap of undefined size filled with the pixel value you passed. -If you try to change the background of an -.PN InputOnly -window, a -.PN BadMatch -error results. -.LP -.PN XSetWindowBackground -can generate -.PN BadMatch -and -.PN BadWindow -errors. -.LP -.sp -.LP -To set the background of a window to a given pixmap, use -.PN XSetWindowBackgroundPixmap . -.IN "Window" "background" -.IN "XSetWindowBackgroundPixmap" "" "@DEF@" -.sM -.FD 0 -XSetWindowBackgroundPixmap\^(\^\fIdisplay\fP, \fIw\fP\^, \fIbackground_pixmap\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - Pixmap \fIbackground_pixmap\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.IP \fIbackground_pixmap\fP 1i -Specifies the background pixmap, -.PN ParentRelative , -or -.PN None . -.LP -.eM -.IN "Resource IDs" "freeing" -.IN "Freeing" "resources" -The -.PN XSetWindowBackgroundPixmap -function sets the background pixmap of the window to the specified pixmap. -The background pixmap can immediately be freed if no further explicit -references to it are to be made. -If -.PN ParentRelative -is specified, -the background pixmap of the window's parent is used, -or on the root window, the default background is restored. -If you try to change the background of an -.PN InputOnly -window, a -.PN BadMatch -error results. -If the background is set to -.PN None , -the window has no defined background. -.LP -.PN XSetWindowBackgroundPixmap -can generate -.PN BadMatch , -.PN BadPixmap , -and -.PN BadWindow -errors. -.NT Note -.PN XSetWindowBackground -and -.PN XSetWindowBackgroundPixmap -do not change the current contents of the window. -.NE -.LP -.sp -To change and repaint a window's border to a given pixel, use -.PN XSetWindowBorder . -.IN "XSetWindowBorder" "" "@DEF@" -.sM -.FD 0 -XSetWindowBorder\^(\^\fIdisplay\fP, \fIw\fP\^, \fIborder_pixel\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - unsigned long \fIborder_pixel\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.IP \fIborder_pixel\fP 1i -Specifies the entry in the colormap. -.LP -.eM -The -.PN XSetWindowBorder -function sets the border of the window to the pixel value you specify. -If you attempt to perform this on an -.PN InputOnly -window, a -.PN BadMatch -error results. -.LP -.PN XSetWindowBorder -can generate -.PN BadMatch -and -.PN BadWindow -errors. -.LP -.sp -To change and repaint the border tile of a given window, use -.PN XSetWindowBorderPixmap . -.IN "XSetWindowBorderPixmap" "" "@DEF@" -.sM -.FD 0 -XSetWindowBorderPixmap\^(\^\fIdisplay\fP, \fIw\fP\^, \fIborder_pixmap\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - Pixmap \fIborder_pixmap\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.IP \fIborder_pixmap\fP 1i -Specifies the border pixmap or -.PN CopyFromParent . -.LP -.eM -The -.PN XSetWindowBorderPixmap -function sets the border pixmap of the window to the pixmap you specify. -The border pixmap can be freed immediately if no further explicit -references to it are to be made. -If you specify -.PN CopyFromParent , -a copy of the parent window's border pixmap is used. -If you attempt to perform this on an -.PN InputOnly -window, a -.PN BadMatch -error results. -.IN "Resource IDs" "freeing" -.IN "Freeing" "resources" -.LP -.PN XSetWindowBorderPixmap -can generate -.PN BadMatch , -.PN BadPixmap , -and -.PN BadWindow -errors. -.LP -.sp -To set the colormap of a given window, use -.PN XSetWindowColormap . -.IN "XSetWindowColormap" "" "@DEF@" -.sM -.FD 0 -XSetWindowColormap\^(\^\fIdisplay\fP, \fIw\fP\^, \fIcolormap\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - Colormap \fIcolormap\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.IP \fIcolormap\fP 1i -Specifies the colormap. -.LP -.eM -The -.PN XSetWindowColormap -function sets the specified colormap of the specified window. -The colormap must have the same visual type as the window, -or a -.PN BadMatch -error results. -.LP -.PN XSetWindowColormap -can generate -.PN BadColor , -.PN BadMatch , -and -.PN BadWindow -errors. -.LP -.sp -To define which cursor will be used in a window, use -.PN XDefineCursor . -.IN "Window" "defining the cursor" -.IN "XDefineCursor" "" "@DEF@" -.sM -.FD 0 -XDefineCursor\^(\^\fIdisplay\fP, \fIw\fP\^, \fIcursor\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.br - Cursor \fIcursor\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.IP \fIcursor\fP 1i -Specifies the cursor that is to be displayed or -.PN None . -.LP -.eM -If a cursor is set, it will be used when the pointer is in the window. -If the cursor is -.PN None , -it is equivalent to -.PN XUndefineCursor . -.LP -.PN XDefineCursor -can generate -.PN BadCursor -and -.PN BadWindow -errors. -.LP -.sp -To undefine the cursor in a given window, use -.PN XUndefineCursor . -.IN "Window" "undefining the cursor" -.IN "XUndefineCursor" "" "@DEF@" -.sM -.FD 0 -XUndefineCursor\^(\^\fIdisplay\fP, \fIw\fP\^) -.br - Display *\fIdisplay\fP\^; -.br - Window \fIw\fP\^; -.FN -.IP \fIdisplay\fP 1i -Specifies the connection to the X server. -.IP \fIw\fP 1i -Specifies the window. -.LP -.eM -The -.PN XUndefineCursor -function undoes the effect of a previous -.PN XDefineCursor -for this window. -When the pointer is in the window, -the parent's cursor will now be used. -On the root window, -the default cursor is restored. -.LP -.PN XUndefineCursor -can generate a -.PN BadWindow -error. -.bp |