Annotation of researchv9/X11/src/X.V11R1/lib/X/XSetHints.c, revision 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.