Annotation of researchv9/X11/src/X.V11R1/lib/X/XSetHints.c, revision 1.1.1.1

1.1       root        1: #include "copyright.h"
                      2: 
                      3: /* $Header: XSetHints.c,v 11.18 87/09/01 15:05:37 toddb Exp $ */
                      4: 
                      5: /***********************************************************
                      6: Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts,
                      7: and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
                      8: 
                      9:                         All Rights Reserved
                     10: 
                     11: Permission to use, copy, modify, and distribute this software and its 
                     12: documentation for any purpose and without fee is hereby granted, 
                     13: provided that the above copyright notice appear in all copies and that
                     14: both that copyright notice and this permission notice appear in 
                     15: supporting documentation, and that the names of Digital or MIT not be
                     16: used in advertising or publicity pertaining to distribution of the
                     17: software without specific, written prior permission.  
                     18: 
                     19: DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
                     20: ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
                     21: DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
                     22: ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
                     23: WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
                     24: ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
                     25: SOFTWARE.
                     26: 
                     27: ******************************************************************/
                     28: 
                     29: #include "Xlibint.h"
                     30: #include "Xutil.h"
                     31: #include "Xatomtype.h"
                     32: #include "Xatom.h"
                     33: 
                     34: XSetSizeHints(dpy, w, hints, property)
                     35:        Display *dpy;
                     36:        Window w;
                     37:        XSizeHints *hints;
                     38:         Atom property;
                     39: {
                     40:         xPropSizeHints prop;
                     41:        prop.flags = hints->flags;
                     42:        prop.x = hints->x;
                     43:        prop.y = hints->y;
                     44:        prop.width = hints->width;
                     45:        prop.height = hints->height;
                     46:        prop.minWidth = hints->min_width;
                     47:        prop.minHeight = hints->min_height;
                     48:        prop.maxWidth  = hints->max_width;
                     49:        prop.maxHeight = hints->max_height;
                     50:        prop.widthInc = hints->width_inc;
                     51:        prop.heightInc = hints->height_inc;
                     52:        prop.minAspectX = hints->min_aspect.x;
                     53:        prop.minAspectY = hints->min_aspect.y;
                     54:        prop.maxAspectX = hints->max_aspect.x;
                     55:        prop.maxAspectY = hints->max_aspect.y;
                     56:        XChangeProperty (dpy, w, property, XA_WM_SIZE_HINTS, 32,
                     57:             PropModeReplace, (unsigned char *) &prop, NumPropSizeElements);
                     58: }
                     59: 
                     60: /* 
                     61:  * XSetWMHints sets the property 
                     62:  *     WM_HINTS        type: WM_HINTS  format:32
                     63:  */
                     64: 
                     65: XSetWMHints (dpy, w, wmhints)
                     66:        Display *dpy;
                     67:        Window w;
                     68:        XWMHints *wmhints; 
                     69: {
                     70:        xPropWMHints prop;
                     71:        prop.flags = wmhints->flags;
                     72:        prop.input = wmhints->input;
                     73:        prop.initialState = wmhints->initial_state;
                     74:        prop.iconPixmap = wmhints->icon_pixmap;
                     75:        prop.iconWindow = wmhints->icon_window;
                     76:        prop.iconX = wmhints->icon_x;
                     77:        prop.iconY = wmhints->icon_y;
                     78:        prop.iconMask = wmhints->icon_mask;
                     79:        prop.windowGroup = wmhints->window_group;
                     80:        XChangeProperty (dpy, w, XA_WM_HINTS, XA_WM_HINTS, 32,
                     81:            PropModeReplace, (unsigned char *) &prop, NumPropWMHintsElements);
                     82: }
                     83: 
                     84: 
                     85: 
                     86: /* 
                     87:  * XSetZoomHints sets the property 
                     88:  *     WM_ZOOM_HINTS   type: WM_SIZE_HINTS format: 32
                     89:  */
                     90: 
                     91: XSetZoomHints (dpy, w, zhints)
                     92:        Display *dpy;
                     93:        Window w;
                     94:        XSizeHints *zhints;
                     95: {
                     96:        XSetSizeHints (dpy, w, zhints, XA_WM_ZOOM_HINTS);
                     97: }
                     98: 
                     99: 
                    100: /* 
                    101:  * XSetNormalHints sets the property 
                    102:  *     WM_NORMAL_HINTS         type: WM_SIZE_HINTS format: 32
                    103:  */
                    104: 
                    105: void XSetNormalHints (dpy, w, hints)
                    106:        Display *dpy;
                    107:        Window w;
                    108:        XSizeHints *hints;
                    109: {
                    110:        XSetSizeHints (dpy, w, hints, XA_WM_NORMAL_HINTS);
                    111: }
                    112: 
                    113: 
                    114: XSetIconSizes (dpy, w, list, count)
                    115:        Display *dpy;
                    116:        Window w;       /* typically, root */
                    117:        XIconSize *list;
                    118:        int count;      /* number of items on the list */
                    119: {
                    120:        register int i;
                    121:        xPropIconSize *pp, *prop;
                    122:        unsigned nbytes = count * sizeof(xPropIconSize);
                    123:        prop = pp = (xPropIconSize *) Xmalloc (nbytes);
                    124:        for (i = 0; i < count; i++) {
                    125:            pp->minWidth  = list->min_width;
                    126:            pp->minHeight = list->min_height;
                    127:            pp->maxWidth  = list->max_width;
                    128:            pp->maxHeight = list->max_height;
                    129:            pp->widthInc  = list->width_inc;
                    130:            pp->heightInc = list->height_inc;
                    131:            pp += 1;
                    132:            list += 1;
                    133:        }
                    134:        XChangeProperty (dpy, w, XA_WM_ICON_SIZE, XA_WM_ICON_SIZE, 32, 
                    135:                 PropModeReplace, (unsigned char *) prop, 
                    136:                         count * NumPropIconSizeElements);
                    137:        Xfree ((char *)prop);
                    138: }
                    139: 
                    140: #include <strings.h>
                    141: XSetCommand (dpy, w, argv, argc)
                    142:        Display *dpy;
                    143:        Window w;
                    144:        char **argv;
                    145:        int argc;
                    146: {
                    147:        register int i;
                    148:        register unsigned nbytes;
                    149:        register char *buf, *bp;
                    150:        for (i = 0, nbytes = 0; i < argc; i++) {
                    151:                nbytes += strlen(argv[i]) + 1;
                    152:        }
                    153:        if (nbytes == 0) return;
                    154:        bp = buf = Xmalloc(nbytes);
                    155:        /* copy arguments into single buffer */
                    156:        for (i = 0; i < argc; i++) {
                    157:                (void) strcpy(bp, argv[i]);
                    158:                bp += strlen(argv[i]) + 1;
                    159:        }
                    160:        XChangeProperty (dpy, w, XA_WM_COMMAND, XA_STRING, 8, PropModeReplace,
                    161:                (unsigned char *)buf, nbytes);
                    162:        Xfree(buf);             
                    163: }
                    164: /* 
                    165:  * XSetStandardProperties sets the following properties:
                    166:  *     WM_NAME           type: STRING          format: 8
                    167:  *     WM_ICON_NAME      type: STRING          format: 8
                    168:  *     WM_HINTS          type: WM_HINTS        format: 32
                    169:  *     WM_COMMAND        type: STRING
                    170:  *     WM_NORMAL_HINTS   type: WM_SIZE_HINTS   format: 32
                    171:  */
                    172:        
                    173: XSetStandardProperties (dpy, w, name, icon_string, icon_pixmap, argv, argc, hints)
                    174:        Display *dpy;
                    175:        Window w;               /* window to decorate */
                    176:        char *name;             /* name of application */
                    177:        char *icon_string;      /* name string for icon */
                    178:        Pixmap icon_pixmap;     /* pixmap to use as icon, or None */
                    179:        char *argv[];           /* command to be used to restart application */
                    180:        int argc;               /* count of arguments */
                    181:        XSizeHints *hints;      /* size hints for window in its normal state */
                    182: {
                    183:        XWMHints phints;
                    184:        phints.flags = 0;
                    185: 
                    186:        if (name != NULL) XStoreName (dpy, w, name);
                    187: 
                    188:        if (icon_string != NULL) {
                    189:            XChangeProperty (dpy, w, XA_WM_ICON_NAME, XA_STRING, 8,
                    190:                PropModeReplace, (unsigned char *)icon_string, strlen(icon_string));
                    191:                }
                    192: 
                    193:        if (icon_pixmap != None) {
                    194:                phints.icon_pixmap = icon_pixmap;
                    195:                phints.flags |= IconPixmapHint;
                    196:                }
                    197:        if (argv != NULL) XSetCommand(dpy, w, argv, argc);
                    198:        
                    199:        if (hints != NULL) XSetNormalHints(dpy, w, hints);
                    200: 
                    201:        if (phints.flags != 0) XSetWMHints(dpy, w, &phints);
                    202: }
                    203: 
                    204: void
                    205: XSetTransientForHint(dpy, w, propWindow)
                    206:        Display *dpy;
                    207:        Window w;
                    208:        Window propWindow;
                    209: {
                    210:        XChangeProperty(dpy, w, XA_WM_TRANSIENT_FOR, XA_WINDOW, 32,
                    211:                PropModeReplace, (char *) &propWindow, 1);
                    212: }
                    213: 
                    214: void
                    215: XSetClassHint(dpy, w, classhint)
                    216:        Display *dpy;
                    217:        Window w;
                    218:        XClassHint *classhint;
                    219: {
                    220:        char *class_string = NULL;
                    221:        int len_nm, len_cl;
                    222: 
                    223:        len_nm = strlen(classhint->res_name);
                    224:        len_cl = strlen(classhint->res_class);
                    225:        class_string = Xmalloc(len_nm + len_cl + 2);
                    226:        strcpy(class_string, classhint->res_name);
                    227:        strcpy(class_string+strlen(classhint->res_name)+1, classhint->res_class);
                    228:        XChangeProperty(dpy, w, XA_WM_CLASS, XA_STRING, 8,
                    229:                PropModeReplace, class_string, len_nm+len_cl+2);
                    230:        Xfree(class_string);
                    231: }

unix.superglobalmegacorp.com

This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.