⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 push.c

📁 最简单的窗口管理器
💻 C
字号:
#ifndef lintstatic char *rcsid_Push_c = "$Header: Push.c  88/08/09 08:58:37 Xusr Exp $";#endif/* * Copyright 1987 by Digital Equipment Corporation, Maynard, Massachusetts. * *                         All Rights Reserved * * Permission to use, copy, modify, and distribute this software and its * documentation for any purpose and without fee is hereby granted, * provided that the above copyright notice appear in all copies and that * both that copyright notice and this permission notice appear in * supporting documentation, and that the name of Digital Equipment * Corporation not be used in advertising or publicity pertaining to * distribution of the software without specific, written prior permission. * * * DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL * DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, * WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, * ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS * SOFTWARE. */ /* * MODIFICATION HISTORY * * 000 -- M. Gancarz, DEC Ultrix Engineering Group * 001 -- Loretta Guarino Reid, DEC Ultrix Engineering Group,    Western Software Lab. Convert to X11. */#ifndef lintstatic char *sccsid = "@(#)Push.c	3.8	1/24/86";#endif#include "uwm.h"#define PUSH_DOWN	1#define PUSH_UP		2#define PUSH_LEFT	3#define PUSH_RIGHT	4extern Bool PushAll();Bool PushDown(window, mask, button, x, y)Window window;				/* Event window. */int mask;				/* Button/key mask. */int button;				/* Button event detail. */int x, y;				/* Event mouse position. */{    return(PushAll(window, PUSH_DOWN));}Bool PushUp(window, mask, button, x, y)Window window;				/* Event window. */int mask;				/* Button/key mask. */int button;				/* Button event detail. */int x, y;				/* Event mouse position. */{    return(PushAll(window, PUSH_UP));}Bool PushLeft(window, mask, button, x, y)Window window;				/* Event window. */int mask;				/* Button/key mask. */int button;				/* Button event detail. */int x, y;				/* Event mouse position. */{    return(PushAll(window, PUSH_LEFT));}Bool PushRight(window, mask, button, x, y)Window window;				/* Event window. */int mask;				/* Button/key mask. */int button;				/* Button event detail. */int x, y;				/* Event mouse position. */{    return(PushAll(window, PUSH_RIGHT));}Bool PushAll(w, direction)Window w;int direction;{    XWindowAttributes winfo;			/* Event window information. */    XWindowAttributes rinfo;			/* Root window information. */    int xofs, yofs;			/* Movement offsets. */    int x, y;				/* New window position. */    /*     * Do not try to move the root window.     */    if (w == RootWindow(dpy, scr))        return(FALSE);    /*     * Gather info on the event window.     */    status = XGetWindowAttributes(dpy, w, &winfo);    if (status == FAILURE) return(FALSE);    /*     * Calculate the movement offsets.     */    switch(direction) {    case PUSH_DOWN:        xofs = 0;        yofs = Push ? (winfo.height / Pushval) : Pushval;        break;    case PUSH_UP:        xofs = 0;        yofs = 0 - (Push ? (winfo.height / Pushval) : Pushval);        break;    case PUSH_LEFT:        xofs = 0 - (Push ? (winfo.width / Pushval) : Pushval);        yofs = 0;        break;    case PUSH_RIGHT:        xofs = Push ? (winfo.width / Pushval) : Pushval;        yofs = 0;        break;    }    /*     * Calculate the new window position.     */    x = winfo.x + xofs;    y = winfo.y + yofs;    /*     * Normalize the new window coordinates so we don't     * lose the window off the edge of the screen.     */    if (x < (0 - winfo.width + CURSOR_WIDTH - (winfo.border_width << 1)))        x = 0 - winfo.width + CURSOR_WIDTH - (winfo.border_width << 1);    if (y < (0 - winfo.height + CURSOR_HEIGHT - (winfo.border_width << 1)))        y = 0 - winfo.height + CURSOR_HEIGHT - (winfo.border_width << 1);    if (x > (ScreenWidth - CURSOR_WIDTH))        x = ScreenWidth - CURSOR_WIDTH;    if (y > (ScreenHeight - CURSOR_HEIGHT))        y = ScreenHeight - CURSOR_HEIGHT;    /*     * Move the window into place.     */    XMoveWindow(dpy, w, x, y);    return(FALSE);}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -