Annotation of 43BSD/contrib/X/uwm/Push.c, revision 1.1

1.1     ! root        1: #ifndef lint
        !             2: static char *rcsid_Push_c = "$Header: Push.c,v 10.3 86/02/01 16:23:34 tony Rel $";
        !             3: #endif lint
        !             4: 
        !             5: /************************************************************************
        !             6:  *                                                                     *
        !             7:  *                     Copyright (c) 1986 by                           *
        !             8:  *             Digital Equipment Corporation, Maynard, MA              *
        !             9:  *                      All Rights Reserved.                           *
        !            10:  *                                                                     *
        !            11:  *     Permission to use, copy, modify, and distribute this software   *
        !            12:  *     and its documentation is hereby granted only to licensees of    *
        !            13:  *     The Regents of the University of California pursuant to their   *
        !            14:  *     license agreement for the Berkeley Software Distribution        *
        !            15:  *     provided that the following appears on all copies.              *
        !            16:  *                                                                     *
        !            17:  *            "LICENSED FROM DIGITAL EQUIPMENT CORPORATION             *
        !            18:  *                      COPYRIGHT (C) 1986                             *       
        !            19:  *                 DIGITAL EQUIPMENT CORPORATION                       *
        !            20:  *                         MAYNARD, MA                                 *
        !            21:  *                     ALL RIGHTS RESERVED.                            *
        !            22:  *                                                                     *
        !            23:  *      THE INFORMATION IN THIS SOFTWARE IS SUBJECT TO CHANGE WITHOUT  * 
        !            24:  *     NOTICE AND SHOULD NOT BE CONSTRUED AS A COMMITMENT BY DIGITAL   *
        !            25:  *     EQUIPMENT CORPORATION.  DIGITAL MAKES NO REPRESENTATIONS        *
        !            26:  *     ABOUT SUITABILITY OF THIS SOFTWARE FOR ANY PURPOSE. IT IS       *
        !            27:  *     SUPPLIED "AS IS" WITHOUT EXPRESS OR IMPLIED WARRANTY.           *
        !            28:  *                                                                     *       
        !            29:  *     IF THE UNIVERSITY OF CALIFORNIA OR ITS LICENSEES MODIFY         *       
        !            30:  *     THE SOFTWARE IN A MANNER CREATING DERIVATIVE COPYRIGHT          *       
        !            31:  *     RIGHTS APPROPRIATE COPYRIGHT LEGENDS MAY BE PLACED ON THE       *
        !            32:  *     DERIVATIVE WORK IN ADDITION TO THAT SET FORTH ABOVE."           *       
        !            33:  *                                                                     *
        !            34:  ************************************************************************/
        !            35:  
        !            36: 
        !            37: /*
        !            38:  * MODIFICATION HISTORY
        !            39:  *
        !            40:  * 000 -- M. Gancarz, DEC Ultrix Engineering Group
        !            41:  */
        !            42: 
        !            43: #ifndef lint
        !            44: static char *sccsid = "@(#)Push.c      3.8     1/24/86";
        !            45: #endif
        !            46: 
        !            47: #include "uwm.h"
        !            48: 
        !            49: #define PUSH_DOWN      1
        !            50: #define PUSH_UP                2
        !            51: #define PUSH_LEFT      3
        !            52: #define PUSH_RIGHT     4
        !            53: 
        !            54: extern Bool PushAll();
        !            55: 
        !            56: Bool PushDown(window, mask, button, x, y)
        !            57: Window window;                         /* Event window. */
        !            58: int mask;                              /* Button/key mask. */
        !            59: short button;                          /* Button event detail. */
        !            60: int x, y;                              /* Event mouse position. */
        !            61: {
        !            62:     return(PushAll(window, PUSH_DOWN));
        !            63: }
        !            64: 
        !            65: Bool PushUp(window, mask, button, x, y)
        !            66: Window window;                         /* Event window. */
        !            67: int mask;                              /* Button/key mask. */
        !            68: short button;                          /* Button event detail. */
        !            69: int x, y;                              /* Event mouse position. */
        !            70: {
        !            71:     return(PushAll(window, PUSH_UP));
        !            72: }
        !            73: 
        !            74: Bool PushLeft(window, mask, button, x, y)
        !            75: Window window;                         /* Event window. */
        !            76: int mask;                              /* Button/key mask. */
        !            77: short button;                          /* Button event detail. */
        !            78: int x, y;                              /* Event mouse position. */
        !            79: {
        !            80:     return(PushAll(window, PUSH_LEFT));
        !            81: }
        !            82: 
        !            83: Bool PushRight(window, mask, button, x, y)
        !            84: Window window;                         /* Event window. */
        !            85: int mask;                              /* Button/key mask. */
        !            86: short button;                          /* Button event detail. */
        !            87: int x, y;                              /* Event mouse position. */
        !            88: {
        !            89:     return(PushAll(window, PUSH_RIGHT));
        !            90: }
        !            91: 
        !            92: Bool PushAll(w, direction)
        !            93: Window w;
        !            94: int direction;
        !            95: {
        !            96:     WindowInfo winfo;                  /* Event window information. */
        !            97:     WindowInfo rinfo;                  /* Root window information. */
        !            98:     int xofs, yofs;                    /* Movement offsets. */
        !            99:     int x, y;                          /* New window position. */
        !           100: 
        !           101:     /*
        !           102:      * Do not try to move the root window.
        !           103:      */
        !           104:     if (w == RootWindow)
        !           105:         return(FALSE);
        !           106: 
        !           107:     /*
        !           108:      * Gather info on the event window.
        !           109:      */
        !           110:     status = XQueryWindow(w, &winfo);
        !           111:     if (status == FAILURE) return(FALSE);
        !           112: 
        !           113:     /*
        !           114:      * Calculate the movement offsets.
        !           115:      */
        !           116:     switch(direction) {
        !           117:     case PUSH_DOWN:
        !           118:         xofs = 0;
        !           119:         yofs = Push ? (winfo.height / Pushval) : Pushval;
        !           120:         break;
        !           121:     case PUSH_UP:
        !           122:         xofs = 0;
        !           123:         yofs = 0 - (Push ? (winfo.height / Pushval) : Pushval);
        !           124:         break;
        !           125:     case PUSH_LEFT:
        !           126:         xofs = 0 - (Push ? (winfo.width / Pushval) : Pushval);
        !           127:         yofs = 0;
        !           128:         break;
        !           129:     case PUSH_RIGHT:
        !           130:         xofs = Push ? (winfo.width / Pushval) : Pushval;
        !           131:         yofs = 0;
        !           132:         break;
        !           133:     }
        !           134: 
        !           135:     /*
        !           136:      * Calculate the new window position.
        !           137:      */
        !           138:     x = winfo.x + xofs;
        !           139:     y = winfo.y + yofs;
        !           140: 
        !           141:     /*
        !           142:      * Normalize the new window coordinates so we don't
        !           143:      * lose the window off the edge of the screen.
        !           144:      */
        !           145:     if (x < (0 - winfo.width + CURSOR_WIDTH - (winfo.bdrwidth << 1)))
        !           146:         x = 0 - winfo.width + CURSOR_WIDTH - (winfo.bdrwidth << 1);
        !           147:     if (y < (0 - winfo.height + CURSOR_HEIGHT - (winfo.bdrwidth << 1)))
        !           148:         y = 0 - winfo.height + CURSOR_HEIGHT - (winfo.bdrwidth << 1);
        !           149:     if (x > (ScreenWidth - CURSOR_WIDTH))
        !           150:         x = ScreenWidth - CURSOR_WIDTH;
        !           151:     if (y > (ScreenHeight - CURSOR_HEIGHT))
        !           152:         y = ScreenHeight - CURSOR_HEIGHT;
        !           153: 
        !           154:     /*
        !           155:      * Move the window into place.
        !           156:      */
        !           157:     XMoveWindow(w, x, y);
        !           158: 
        !           159:     return(FALSE);
        !           160: }

unix.superglobalmegacorp.com

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