|
|
1.1 ! root 1: #ifndef lint ! 2: static char *rcsid_Push_c = "$Header: Push.c,v 1.3 87/09/11 08:21:37 toddb Exp $"; ! 3: #endif lint ! 4: ! 5: #include <X11/copyright.h> ! 6: ! 7: /* ! 8: * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. ! 9: * ! 10: * All Rights Reserved ! 11: * ! 12: * Permission to use, copy, modify, and distribute this software and its ! 13: * documentation for any purpose and without fee is hereby granted, ! 14: * provided that the above copyright notice appear in all copies and that ! 15: * both that copyright notice and this permission notice appear in ! 16: * supporting documentation, and that the name of Digital Equipment ! 17: * Corporation not be used in advertising or publicity pertaining to ! 18: * distribution of the software without specific, written prior permission. ! 19: * ! 20: * ! 21: * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING ! 22: * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL ! 23: * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR ! 24: * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, ! 25: * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ! 26: * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS ! 27: * SOFTWARE. ! 28: */ ! 29: ! 30: ! 31: ! 32: /* ! 33: * MODIFICATION HISTORY ! 34: * ! 35: * 000 -- M. Gancarz, DEC Ultrix Engineering Group ! 36: * 001 -- Loretta Guarino Reid, DEC Ultrix Engineering Group, ! 37: Western Software Lab. Convert to X11. ! 38: */ ! 39: ! 40: #ifndef lint ! 41: static char *sccsid = "@(#)Push.c 3.8 1/24/86"; ! 42: #endif ! 43: ! 44: #include "uwm.h" ! 45: ! 46: #define PUSH_DOWN 1 ! 47: #define PUSH_UP 2 ! 48: #define PUSH_LEFT 3 ! 49: #define PUSH_RIGHT 4 ! 50: ! 51: extern Bool PushAll(); ! 52: ! 53: Bool PushDown(window, mask, button, x, y) ! 54: Window window; /* Event window. */ ! 55: int mask; /* Button/key mask. */ ! 56: int button; /* Button event detail. */ ! 57: int x, y; /* Event mouse position. */ ! 58: { ! 59: return(PushAll(window, PUSH_DOWN)); ! 60: } ! 61: ! 62: Bool PushUp(window, mask, button, x, y) ! 63: Window window; /* Event window. */ ! 64: int mask; /* Button/key mask. */ ! 65: int button; /* Button event detail. */ ! 66: int x, y; /* Event mouse position. */ ! 67: { ! 68: return(PushAll(window, PUSH_UP)); ! 69: } ! 70: ! 71: Bool PushLeft(window, mask, button, x, y) ! 72: Window window; /* Event window. */ ! 73: int mask; /* Button/key mask. */ ! 74: int button; /* Button event detail. */ ! 75: int x, y; /* Event mouse position. */ ! 76: { ! 77: return(PushAll(window, PUSH_LEFT)); ! 78: } ! 79: ! 80: Bool PushRight(window, mask, button, x, y) ! 81: Window window; /* Event window. */ ! 82: int mask; /* Button/key mask. */ ! 83: int button; /* Button event detail. */ ! 84: int x, y; /* Event mouse position. */ ! 85: { ! 86: return(PushAll(window, PUSH_RIGHT)); ! 87: } ! 88: ! 89: Bool PushAll(w, direction) ! 90: Window w; ! 91: int direction; ! 92: { ! 93: XWindowAttributes winfo; /* Event window information. */ ! 94: XWindowAttributes rinfo; /* Root window information. */ ! 95: int xofs, yofs; /* Movement offsets. */ ! 96: int x, y; /* New window position. */ ! 97: ! 98: /* ! 99: * Do not try to move the root window. ! 100: */ ! 101: if (w == RootWindow(dpy, scr)) ! 102: return(FALSE); ! 103: ! 104: /* ! 105: * Gather info on the event window. ! 106: */ ! 107: status = XGetWindowAttributes(dpy, w, &winfo); ! 108: if (status == FAILURE) return(FALSE); ! 109: ! 110: /* ! 111: * Calculate the movement offsets. ! 112: */ ! 113: switch(direction) { ! 114: case PUSH_DOWN: ! 115: xofs = 0; ! 116: yofs = Push ? (winfo.height / Pushval) : Pushval; ! 117: break; ! 118: case PUSH_UP: ! 119: xofs = 0; ! 120: yofs = 0 - (Push ? (winfo.height / Pushval) : Pushval); ! 121: break; ! 122: case PUSH_LEFT: ! 123: xofs = 0 - (Push ? (winfo.width / Pushval) : Pushval); ! 124: yofs = 0; ! 125: break; ! 126: case PUSH_RIGHT: ! 127: xofs = Push ? (winfo.width / Pushval) : Pushval; ! 128: yofs = 0; ! 129: break; ! 130: } ! 131: ! 132: /* ! 133: * Calculate the new window position. ! 134: */ ! 135: x = winfo.x + xofs; ! 136: y = winfo.y + yofs; ! 137: ! 138: /* ! 139: * Normalize the new window coordinates so we don't ! 140: * lose the window off the edge of the screen. ! 141: */ ! 142: if (x < (0 - winfo.width + CURSOR_WIDTH - (winfo.border_width << 1))) ! 143: x = 0 - winfo.width + CURSOR_WIDTH - (winfo.border_width << 1); ! 144: if (y < (0 - winfo.height + CURSOR_HEIGHT - (winfo.border_width << 1))) ! 145: y = 0 - winfo.height + CURSOR_HEIGHT - (winfo.border_width << 1); ! 146: if (x > (ScreenWidth - CURSOR_WIDTH)) ! 147: x = ScreenWidth - CURSOR_WIDTH; ! 148: if (y > (ScreenHeight - CURSOR_HEIGHT)) ! 149: y = ScreenHeight - CURSOR_HEIGHT; ! 150: ! 151: /* ! 152: * Move the window into place. ! 153: */ ! 154: XMoveWindow(dpy, w, x, y); ! 155: ! 156: return(FALSE); ! 157: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.